ElasticSearch高可用集群搭建

news/2024/7/7 5:54:55 标签: elasticsearch, 大数据, 搜索引擎, 全文检索

1.环境准备

本文已三个节点(服务器)为例,准备三台服务器

2.搭建过程

1).三台服务器分别搭建es (ES8+JDK17)

上传安装包和解压

tar -zxvf elasticsearch-8.4.1-linux-x86_64.tar.gz

elasticsearchroot_11">新建一个用户,安全考虑,elasticsearch默认不允许以root账号运行

创建用户:useradd es_user
设置密码:passwd es_user

修改目录权限

# chmod是更改文件的权限   
# chown是改改文件的属主与属组  
# chgrp只是更改文件的属组。


chgrp -R es_user /usr/local/software/elk_test/elasticsearch-8.4.1
chown -R es_user /usr/local/software/elk_test/elasticsearch-8.4.1
chmod -R  777 /usr/local/software/elk_test/elasticsearch-8.4.1

修改文件和进程最大打开数,需要root用户,如果系统本身有这个文件最大打开数和进程最大打开数配置,则不用

在文件内容最后添加后面两行(切记*不能省略)

vim /etc/security/limits.conf

* soft nofile 65536
* hard nofile 65536

修改虚拟内存空间,默认太小

在配置文件中改配置 最后一行上加上,执行 sysctl -p(立即生效)
vim /etc/sysctl.conf

vm.max_map_count=262144

elasticsearchJVM1624G_51">修改elasticsearch的JVM内存,机器内存不足,常规线上推荐16到24G内存

vim config/jvm.options

-Xms1g
-Xmx1g

2).搭建集群

节点一

vim config/elasticsearch.yml


cluster.name: xdclass-cluster
node.name: node-1
path.data: /usr/local/software/elk_test/elasticsearch-8.4.1/data
path.logs: /usr/local/software/elk_test/elasticsearch-8.4.1/logs
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["172.31.101.11:9300","172.31.101.13:9300","172.31.101.12:9300"]
cluster.initial_master_nodes: ["172.31.101.11:9300","172.31.101.13:9300","172.31.101.12:9300"]
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
ingest.geoip.downloader.enabled: false

节点二

vim config/elasticsearch.yml


cluster.name: xdclass-cluster
node.name: node-2
path.data: /usr/local/software/elk_test/elasticsearch-8.4.1/data
path.logs: /usr/local/software/elk_test/elasticsearch-8.4.1/logs
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["172.31.101.11:9300","172.31.101.13:9300","172.31.101.12:9300"]
cluster.initial_master_nodes: ["172.31.101.11:9300","172.31.101.13:9300","172.31.101.12:9300"]
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
ingest.geoip.downloader.enabled: false

节点三

vim config/elasticsearch.yml


cluster.name: xdclass-cluster
node.name: node-3
path.data: /usr/local/software/elk_test/elasticsearch-8.4.1/data
path.logs: /usr/local/software/elk_test/elasticsearch-8.4.1/logs
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["172.31.101.11:9300","172.31.101.13:9300","172.31.101.12:9300"]
cluster.initial_master_nodes: ["172.31.101.11:9300","172.31.101.13:9300","172.31.101.12:9300"]
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
ingest.geoip.downloader.enabled: false

配置说明

  • discovery.seed_hosts参数:

    • 功能:discovery.seed_hosts参数用于配置集群中用于发现其他节点的主机名或IP地址列表。
    • 作用:每个节点通过这个参数指定其他节点的地址,以便在启动时进行发现和加入集群。
    • 配置:在每个节点的elasticsearch.yml配置文件中设置该参数,指定其他节点的地址,多个地址使用逗号分隔。
  • cluster.initial_master_nodes参数:

    • 功能:cluster.initial_master_nodes参数用于配置初始主节点的名称。

    • 作用:当集群启动时,用于指定初始的主节点,以启动集群的选主过程。

    • 配置:只需在初始启动的几个节点的elasticsearch.yml配置文件中设置该参数,列出节点名称。

注意

cluster.initial_master_nodes参数和discovery.seed_hosts参数之间的设置应该保持一致,

确保集群中的所有节点都能正确发现和加入。

  • 启动ElasticSearch
切换到es_user用户启动, 进入bin目录下启动, &为后台启动,再次提示es消息时 Ctrl + c 跳出

./elasticsearch &

常见命令,可以用postman访问(网络安全组记得开发端口)

#查看集群健康情况
http://112.74.167.42:9200/_cluster/health


#查看分片情况
http://112.74.167.42:9200/_cat/shards?v=true&pretty


#查看节点分布情况
http://112.74.167.42:9200/_cat/nodes?v=true&pretty


#查看索引列表
http://112.74.167.42:9200/_cat/indices?v=true&pretty

集群状态说明

green:所有的主分片和副本分片都正常运行。

yellow:所有的主分片都正常运行,但有部分副本分片运行不正常。

red:主分片没能正常运行


http://www.niftyadmin.cn/n/5259144.html

相关文章

k8s安装Ingress-Nginx

目前,DHorse(https://gitee.com/i512team/dhorse)只支持Ingress-nginx的Ingress实现,下面介绍Ingress-nginx的安装过程。 下载安装文件 首先,需要匹配Ingress-nginx版本和kubernetes版本。 在https://github.com/kubernetes/ingress-nginx可…

NCNN 源码学习【二】:模型加载

​ 正文 这次先来看一段NCNN应用代码中,最先出现的部分,模型加载 ncnn::Net squeezenet; squeezenet.load_param("squeezenet_v1.1.param"); squeezenet.load_model("squeezenet_v1.1.bin");首先我们可以看到一个 ncnn的类Net&am…

AIGC专题报告:ChatGPT纪要分享

今天分享的AIGC系列深度研究报告:《AIGC专题报告:ChatGPT纪要分享》。 (报告出品方:久谦中台) 报告共计:135页 OpenAI 高管解密 ChatGPT GPT-3 是一种大型语言模型,被训练用来在给定上下文中…

C语言 题目

1.写一个函数算一个数的二进制(补码)表示中有几个1 #include<stdio.h>//统计二进制数中有几个1 //如13:1101 //需要考虑负数情况 如-1 结果应该是32// n 1101 //n-1 1100 //n 1100 //n-1 1011 //n 1000 //n-1 0111 //n 0000 //看n的变化 int funca(int c){int co…

fastjson序列化与反序列化的忽略

一.场景 做了一个基于springbootfastjson的小应用。A对象与B对象是OneToMany关系。A对象新增时也希望一起传递B的信息到后台进行Many端数据的新增。直接使用A对象来接收前台传递的信息&#xff0c;springboot会帮我们组装好对象。查询A对象时&#xff0c;又不希望其中的List<…

js Array.every()的使用

2023.12.13今天我学习了如何使用Array.every()的使用&#xff0c;这个方法是用于检测数组中所有存在的元素。 比如我们需要判断这个数组里面的全部元素是否都包含张三&#xff0c;可以这样写&#xff1a; let demo [{id: 1, name: 张三}, {id: 2, name: 张三五}, {id: 3, name…

软考架构案例之大数据架构

文章目录 前言大数据架构特点Lambda架构Kappa架构Lambda架构与Kappa架构对比写在最后 前言 前不久参加了11月份的软考系统架构师&#xff0c;下午案例中还是有很多的架构相关的知识点&#xff0c;比如大数据架构和动静分离架构图等等。其中大数据架构的题目是填空Lambda和Kapp…

Temporal 服务限制说明

本页详细介绍了编码到 Temporal 平台中的许多错误和警告&#xff08;错误是硬限制&#xff0c;一旦达到就会失败&#xff1b;源&#xff09; 1、标识符的最大长度限制 工作流 ID、工作流类型和任务队列名称等标识符的最大长度为 UTF-8 格式的 1,000 个字符。 2、gRPC 消息接收…