ElasticSearch高可用集群搭建

1.环境准备

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

2.搭建过程

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

上传安装包和解压

c 复制代码
tar -zxvf elasticsearch-8.4.1-linux-x86_64.tar.gz

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

c 复制代码
创建用户:useradd es_user
设置密码:passwd es_user

修改目录权限

c 复制代码
# 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用户,如果系统本身有这个文件最大打开数和进程最大打开数配置,则不用

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

c 复制代码
vim /etc/security/limits.conf

* soft nofile 65536
* hard nofile 65536

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

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

vm.max_map_count=262144

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

c 复制代码
vim config/jvm.options

-Xms1g
-Xmx1g

2).搭建集群

节点一

c 复制代码
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

节点二

c 复制代码
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

节点三

c 复制代码
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
c 复制代码
切换到es_user用户启动, 进入bin目录下启动, &为后台启动,再次提示es消息时 Ctrl + c 跳出

./elasticsearch &

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

bash 复制代码
#查看集群健康情况
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:主分片没能正常运行

相关推荐
东哥说-MES|从入门到精通11 小时前
GenAI-生成式人工智能在工业制造中的应用
大数据·人工智能·智能制造·数字化·数字化转型·mes
万岳软件开发小城11 小时前
教育APP/小程序开发标准版图:课程、题库、直播、学习一站式梳理
大数据·php·uniapp·在线教育系统源码·教育app开发·教育软件开发
STLearner13 小时前
AI论文速读 | U-Cast:学习高维时间序列预测的层次结构
大数据·论文阅读·人工智能·深度学习·学习·机器学习·数据挖掘
数字化顾问13 小时前
(65页PPT)大型集团物料主数据管理系统建设规划方案(附下载方式)
大数据·运维·人工智能
老蒋新思维14 小时前
创客匠人 2025 全球创始人 IP+AI 万人高峰论坛:AI 赋能下知识变现与 IP 变现的实践沉淀与行业启示
大数据·人工智能·网络协议·tcp/ip·重构·创始人ip·创客匠人
河南博为智能科技有限公司15 小时前
高集成度国产八串口联网服务器:工业级多设备联网解决方案
大数据·运维·服务器·数据库·人工智能·物联网
无代码专家17 小时前
设备巡检数字化解决方案:构建高效闭环管理体系
java·大数据·人工智能
天远数科17 小时前
Node.js 原生加密指南:详解 Crypto 模块对接天远银行卡黑名单接口
大数据·api
expect7g17 小时前
Paimon Branch --- 流批一体化之二
大数据·后端·flink
天远云服17 小时前
高并发风控实践:AES 加密与银行卡风险标签清洗的 Go 语言实现
大数据·api