Docker部署ES集群

发布于 2023年12月20日

1. 安装ES

1.1 基础

拉取镜像

docker pull elasticsearch:7.17.9

创建目录:

mkdir /app/elasticsearch-node-1
mkdir /app/elasticsearch-node-2
mkdir /app/elasticsearch-node-3

启动一个空白容器,将配置文件拷贝下来

docker run -dit --name es elasticsearch:7.17.9
docker cp es:/usr/share/elasticsearch elasticsearch-node-1/
cp -r elasticsearch-node-1/* elasticsearch-node-2/
cp -r elasticsearch-node-1/* elasticsearch-node-3/

删除data目录下面的所有

chmod 777 -R elasticsearch-node-1
chmod 777 -R elasticsearch-node-2
chmod 777 -R elasticsearch-node-3
1.2 修改配置文件

vim elasticsearch.yml

Node-1:
cluster.name: elasticsearch-cluster
node.name: node-1
network.bind_host: 0.0.0.0
network.publish_host: ip
http.port: 9200
transport.tcp.port: 9300
node.master: true
node.data: true
discovery.seed_hosts: ["node-2-ip:9301","node-3-ip:9302"]
cluster.initial_master_nodes: ["node-1"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"

Node-2:
cluster.name: elasticsearch-cluster
node.name: node-2
network.bind_host: 0.0.0.0
network.publish_host: ip
http.port: 9201
transport.tcp.port: 9301
node.master: true
node.data: true
discovery.seed_hosts: ["node-1-ip:9300","node-3-ip:9302"]
cluster.initial_master_nodes: ["node-1"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"

Node-3:
cluster.name: elasticsearch-cluster
node.name: node-3
network.bind_host: 0.0.0.0
network.publish_host: ip
http.port: 9202
transport.tcp.port: 9302
node.master: true
node.data: true
discovery.seed_hosts: ["node-1-ip:9300","node-2-ip:9301"]
cluster.initial_master_nodes: ["node-1"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
1.3 启动容器
Node-1:
docker run -d --restart=always \
-p 9200:9200 -p 9300:9300 \
-v /app/elasticsearch-node-1:/usr/share/elasticsearch \
--name es-node-1 \
elasticsearch:7.17.9

Node-2:
docker run -d --restart=always \
-p 9201:9201 -p 9301:9301 \
-v /app/elasticsearch-node-2:/usr/share/elasticsearch \
--name es-node-2 \
elasticsearch:7.17.9

Node-3:
docker run -d --restart=always \
-p 9202:9202 -p 9302:9302 \
-v /app/elasticsearch-node-3:/usr/share/elasticsearch \
--name es-node-3 \
elasticsearch:7.17.9
1.4 启动es-head容器

这个容器也需要提前将/usr/src/app内容拷贝出来,然后再启动容器挂载

docker run -d --name es_head -p 9100:9100 -v /app/elasticsearch-head:/usr/src/app elasticsearch-head:5

访问IP+9100访问
图片1-lodf.png

1.5 启动kibana容器
docker run -dit --name kibana kibana:7.17.9
docker cp kibana:/usr/share/kibana .
将/usr/share/kibana内容拷贝出来,然后再启动容器挂载
mv kibana/* .
rm -r kibana
docker stop kibana
docker rm kibana
chmod -R 777 kibana 
docker run -dit --name kibana -p 5601:5601 -v /app/dockerdata/kibana:/usr/share/kibana kibana:7.17.9
修改kibana.yml文件
elasticsearch.hosts: [ "http://ip:9200" ]
修改为es的ip地址