docker-compose.yml
version: '2'
services:
es01:
#服务名称
image: elasticsearch:7.12.1 #基础镜像
container_name: es01 #容器名
environment:
- node.name=es01 #在集群中这个节点的名称,省事所以与容器名称一样
- cluster.name=es-docker-cluster #集群的名称,搭建集群的条件就是集群的名称一致
- discovery.seed_hosts=es02,es03 #集群中,其他节点的地址,因为使用的是容器,索引可以使用名称访问
- cluster.initial_master_nodes=es01,es02,es03 #指定哪些节点为候选主节点,可以参与主节点的选举中去
- "ES_JAVA_OPTS=-Xms512m -Xmx512m" #配置了运行时的内存信息
volumes:
- ./es/es01/data:/usr/share/elasticsearch/data #配置数据卷的挂载信息
ports:
- 9201:9200 #配置宿主机和容器的端口映射
networks:
- elastic #指定这个容器的网络,这样把三个容器都加入到同一个网络中去,可以实现容器通信,使用名称访问可以,这个网络不存在会自动创建一个
es02:
image: elasticsearch:7.12.1
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es03
- cluster.initial_master_nodes=es01,es02,es03
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
volumes:
- ./es/es02/data:/usr/share/elasticsearch/data
ports:
- 9202:9200
networks:
- elastic
es03:
image: elasticsearch:7.12.1
container_name: es03
environment:
- node.name=es03
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es02
- cluster.initial_master_nodes=es01,es02,es03
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
volumes:
- ./es/es03/data:/usr/share/elasticsearch/data
networks:
- elastic
ports:
- 9203:9200
networks:
elastic:
driver: bridge #指定共享网络的连接方式为桥接
挂载目录
结构如下:
docker-compose目录与es文件同级。
开始部署
首先先调整内存大小:
执行:vim /etc/sysctl.conf
在最后加入:vm.max_map_count=262144
启用配置:sysctl -p
给挂载目录的data文件夹赋予修改权限:
chmod 777 /dcoker3/es/es01/data 这里我放在这个目录下,自行修改为你的目录即可。
进入到docker-compose所在的目录:
执行:docker-compose up -d 创建容器
验证
执行:curl http://localhost:9201/_cat/nodes?pretty 查看是否开启成功。
至此集群部署成功。