无ELK经验如何在RedHat Linux配置3节点Elasticsearch集群(含主节点)
3节点Elasticsearch集群配置流程(RedHat Linux)
一、前置准备
- 3台RedHat服务器,确保节点间网络互通,可临时关闭防火墙测试,后续按需开放端口
- 每台机器创建非root用户(Elasticsearch禁止root启动):
adduser esuser passwd esuser usermod -aG wheel esuser - 安装Java 17(Elasticsearch 8.x推荐依赖):
sudo yum install java-17-openjdk-devel java -version # 验证安装
二、全节点安装Elasticsearch
- 导入官方GPG密钥:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch - 创建YUM仓库文件:
写入以下内容:sudo vi /etc/yum.repos.d/elasticsearch.repo[elasticsearch] name=Elasticsearch repository for 8.x packages baseurl=https://artifacts.elastic.co/packages/8.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md - 安装并设置开机自启:
sudo yum install elasticsearch sudo systemctl enable elasticsearch
三、分节点修改elasticsearch.yml配置
假设节点IP与角色:
- 主节点:
192.168.1.10 - 数据节点1:
192.168.1.11 - 数据节点2:
192.168.1.12
1. 主节点配置
编辑/etc/elasticsearch/elasticsearch.yml,修改以下关键配置:
# 集群名称,所有节点必须一致 cluster.name: my-es-cluster # 节点唯一名称 node.name: master-node # 赋予主节点+数据节点角色 node.roles: [master, data] # 绑定本机IP,或填0.0.0.0允许所有IP访问 network.host: 192.168.1.10 # HTTP端口 http.port: 9200 # 集群内部通信端口 transport.port: 9300 # 初始化主节点列表(填主节点名称) cluster.initial_master_nodes: ["master-node"] # 集群发现节点列表(全节点IP) discovery.seed_hosts: ["192.168.1.10", "192.168.1.11", "192.168.1.12"] # 可选:开启跨域(后续对接Kibana需要) http.cors.enabled: true http.cors.allow-origin: "*"
2. 数据节点1配置
编辑/etc/elasticsearch/elasticsearch.yml:
cluster.name: my-es-cluster node.name: data-node-1 node.roles: [data] network.host: 192.168.1.11 http.port: 9200 transport.port: 9300 cluster.initial_master_nodes: ["master-node"] discovery.seed_hosts: ["192.168.1.10", "192.168.1.11", "192.168.1.12"]
3. 数据节点2配置
编辑/etc/elasticsearch/elasticsearch.yml:
cluster.name: my-es-cluster node.name: data-node-2 node.roles: [data] network.host: 192.168.1.12 http.port: 9200 transport.port: 9300 cluster.initial_master_nodes: ["master-node"] discovery.seed_hosts: ["192.168.1.10", "192.168.1.11", "192.168.1.12"]
四、系统参数调整(全节点执行)
避免Elasticsearch启动报错:
- 修改文件描述符限制:
添加:sudo vi /etc/security/limits.confesuser soft nofile 65536 esuser hard nofile 65536 - 调整虚拟内存:
添加:sudo vi /etc/sysctl.conf
生效配置:vm.max_map_count=262144sudo sysctl -p - 重新登录
esuser或重启服务器,让配置生效
五、启动与验证集群
- 先启动主节点,等待1分钟左右:
sudo systemctl start elasticsearch - 依次启动两个数据节点:
sudo systemctl start elasticsearch - 验证集群健康状态:
返回curl http://192.168.1.10:9200/_cluster/health?pretty"status": "green"即为正常 - 查看节点列表:
主节点会标注curl http://192.168.1.10:9200/_cat/nodes?v*,可见3个节点信息
注意事项
- 所有节点
cluster.name必须完全一致,否则无法加入同一集群 - 开放防火墙端口(永久生效):
sudo firewall-cmd --add-port=9200/tcp --permanent sudo firewall-cmd --add-port=9300/tcp --permanent sudo firewall-cmd --reload - 必须用
esuser启动Elasticsearch,禁止root用户操作
内容的提问来源于stack exchange,提问作者Daddy
相关产品推荐
相关产品推荐

