4节点集群
node-1 | 192.168.0.21 |
node-2 | 192.168.0.22 |
node-3 | 192.168.0.38 |
node-4 | 192.168.0.39 |
1.创建挂载目录
mkdir -p /xxxxxx/es
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.17.10
cd /xxxxxx/es
docker cp elasticsearch:/usr/share/elasticsearch/config .
docker cp elasticsearch:/usr/share/elasticsearch/data .
docker cp elasticsearch:/usr/share/elasticsearch/plugins .
chmod 777 /xxxxxx/es/*
docker stop elasticsearch
docker rm elasticsearch
2.修改/xxxxxx/es/config/elasticsearch.yml配置文件。每个节点均修改对应的节点名和ip。
# 集群名称 所有节点名称一致
cluster.name: es-clusters
# 当前该节点的名称,每个节点不能重复es-node-1,es-node-2,es-node-3
node.name: es-node-3
# 当前该节点是不是有资格竞选主节点
node.master: true
# 当前该节点是否存储数据
node.data: true
# 设置为公开访问
network.host: 0.0.0.0
# 设置其它节点和该节点交互的本机器的ip地址,三台各自为
network.publish_host: 192.168.0.38
# 设置映射端口
http.port: 9200
# 内部节点之间沟通端口
transport.tcp.port: 9300
# 支持跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
# 配置集群的主机地址
discovery.seed_hosts: ["192.168.0.21","192.168.0.22","192.168.0.38","192.168.0.39"]
# 初始主节点,使用一组初始的符合主条件的节点引导集群
cluster.initial_master_nodes: ["es-node-1","es-node-2","es-node-3","es-node-4"]
# 节点等待响应的时间,默认值是30秒,增加这个值,从一定程度上会减少误判导致脑裂
discovery.zen.ping_timeout: 30s
# 配置集群最少主节点数目,通常为 (可成为主节点的主机数目 / 2) + 1
discovery.zen.minimum_master_nodes: 2
# 禁用交换内存,提升效率
bootstrap.memory_lock: false
3.运行es。每个节点均修改对应的节点名。
docker run --name=elasticsearch-node-3 -p 9200:9200 -p 9300:9300 \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-v /xxxxxx/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /xxxxxx/es/data:/usr/share/elasticsearch/data \
-v /xxxxxx/es/plugins:/usr/share/elasticsearch/plugins \
--restart=always \
-d elasticsearch:7.17.10
4.在浏览器上输入http://任一节点ip:9200/_cat/nodes?pretty
查看集群信息,出现如下信息就代表集群搭建成功了。
参考博客:Docker Elasticsearch集群部署_docker部署elasticsearch集群-CSDN博客