一. 创建自定义网络,用于部署ES集群
docker network create --subnet=172.18.0.0/16 --gateway=172.18.0.1 talnet
二. ES配置文件
节点1: es1.yml
#集群名称
cluster.name: cluster-name
#节点名称
node.name: es-node1
netwotk.host: 0.0.0.0
#设置绑定的ip地址,可以使ipv4或者ipv6
#绑定这台机器的任何一个ip
network.bind_host: 172.18.0.2
#设置其他节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真是的ip地址
network.publish_host: 172.18.0.2
#设置对外服务的http端口,默认为9200
http.port: 7200
#设置节点之间的tcp端口,默认是9300
transport.tcp.port: 7300
#是否允许跨域REST请求
http.cors.enabled: true
#允许REST请求来自何处
http.cors.allow-origin: "*"
#节点角色设置
node.master: true
node.data: true
#集群的节点列表
discovery.seed_hosts: ["172.18.0.2:7300","172.18.0.3:7301"]
cluster.initial_master_nodes: ["172.18.0.2","172.18.0.3"]
节点二:es2.yml
#集群名称
cluster.name: cluster-name
# 节点名称
node.name: es-node2
# 设置绑定的ip地址,可以使ipv4或者ipv6
# 绑定这台机器的任何一个ip
network.bind_host: 172.18.0.3
# 设置其他节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真是的ip地址
network.publish_host: 172.18.0.3
# 设置对外服务的http端口,默认为9200
http.port: 7201
# 设置节点之间的tcp端口,默认是9300
transport.tcp.port: 7301
# 是否允许跨域REST请求
http.cors.enabled: true
# 允许REST请求来自何处
http.cors.allow-origin: "*"
# 节点角色设置
node.master: true
node.data: true
# 集群的节点列表
discovery.seed_hosts: ["172.18.0.2:7300","172.18.0.3:7301"]
cluster.initial_master_nodes: ["172.18.0.2","172.18.0.3"]
三. 启动
启动节点一:
docker run -e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" -p 7200:7200 -p 7300:7300 \
-v /data/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /data/data1:/usr/share/elasticsearch/data --network=talnet --ip 172.18.0.2 --name ES01 es_ik:7.4.2
启动节点二:
docker run -e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" -p 7201:7201 -p 7301:7301 \
-v /data/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /data/data2:/usr/share/elasticsearch/data --network=talnet --ip 172.18.0.3 --name ES02 es_ik:7.4.2
四. 验证集群
-> curl http://127.0.0.1:7201/_cat/nodes\?v
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.18.0.3 31 97 0 1.03 0.46 0.17 dilm - es-node2
172.18.0.2 31 97 0 1.03 0.46 0.17 dilm * es-node1