1.新建一个文件夹es-cluster,在添加777权限,否则挂载文件会报错,权限不足或者文件无法打开
mkdir es-cluster
mkdir es-cluster/es01
mkdir es-cluster/es02
mkdir es-cluster/es03
mkdir es-cluster/es01/config
mkdir es-cluster/es02/config
mkdir es-cluster/es03/config
chmod -R 777 es-cluster
2.在es-cluster下新建docker-compose.yml文件
version: "3"
services:
elasticsearch01:
image: elasticsearch:7.8.1
restart: always
container_name: es-cluster01
environment:
- TZ=Asia/Shanghai
- cluster.name=es-cluster
- bootstrap.memory_lock=true
- node.name=node1
- node.data=true
- http.cors.enabled=true
- http.cors.allow-origin=*
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- discovery.seed_hosts=es-cluster01,es-cluster02,es-cluster03
- cluster.initial_master_nodes=node1
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /dockerfile/es-cluster/es01/plugins:/usr/share/elasticsearch/plugins
- /dockerfile/es-cluster/es01/logs:/usr/share/elasticsearch/logs
- /dockerfile/es-cluster/es01/data:/usr/share/elasticsearch/data
- /dockerfile/es-cluster/es01/config/elasticsearch.yml:/usr/share/elasticsearch/data/config/elasticsearch.yml
ports:
- 9201:9200
privileged: true
elasticsearch02:
image: elasticsearch:7.8.1
restart: always
container_name: es-cluster02
environment:
- TZ=Asia/Shanghai
- cluster.name=es-cluster
- bootstrap.memory_lock=true
- node.name=node2
- node.data=true
- http.cors.enabled=true
- http.cors.allow-origin=*
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- discovery.seed_hosts=es-cluster01,es-cluster02,es-cluster03
- cluster.initial_master_nodes=node1
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /dockerfile/es-cluster/es02/plugins:/usr/share/elasticsearch/plugins
- /dockerfile/es-cluster/es02/logs:/usr/share/elasticsearch/logs
- /dockerfile/es-cluster/es02/data:/usr/share/elasticsearch/data
- /dockerfile/es-cluster/es02/config/elasticsearch.yml:/usr/share/elasticsearch/data/config/elasticsearch.yml
ports:
- 9202:9200
privileged: true
elasticsearch03:
image: elasticsearch:7.8.1
restart: always
container_name: es-cluster03
environment:
- TZ=Asia/Shanghai
- cluster.name=es-cluster
- bootstrap.memory_lock=true
- node.name=node3
- node.data=true
- http.cors.enabled=true
- http.cors.allow-origin=*
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.seed_hosts=es-cluster01,es-cluster02,es-cluster03"
- cluster.initial_master_nodes=node1
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /dockerfile/es-cluster/es03/plugins:/usr/share/elasticsearch/plugins
- /dockerfile/es-cluster/es03/logs:/usr/share/elasticsearch/logs
- /dockerfile/es-cluster/es03/data:/usr/share/elasticsearch/data
- /dockerfile/es-cluster/es03/config/elasticsearch.yml:/usr/share/elasticsearch/data/config/elasticsearch.yml
ports:
- 9203:9200
privileged: true
- 创建完成后用docker-compose config -q检查配置文件是否有错误
3.在每个config文件夹下创建elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
gateway.recover_after_nodes: 2
network.tcp.keep_alive: true
network.tcp.no_delay: true
transport.tcp.compress: true
#集群内同时启动的数据任务个数,默认是 2 个
cluster.routing.allocation.cluster_concurrent_rebalance: 16
##添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个
cluster.routing.allocation.node_concurrent_recoveries: 16
#初始化数据恢复时,并发恢复线程的个数,默认 4 个
cluster.routing.allocation.node_initial_primaries_recoveries: 16
4.在es-cluster文件夹下执行
docker-compose up -d
5.浏览器访问
- 虚拟机上需要关闭防火墙
- 服务器上自己放开端口,和在控制台里面的安全组开放对应端口
#查看是否启动
http://ip:9201
#查看节点
http://ip:9201/_cat/nodes
网友评论