docker 部署 elasticsearch集群

346 阅读2分钟

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 #指定共享网络的连接方式为桥接

挂载目录

结构如下:

图片.png

docker-compose目录与es文件同级。

开始部署

首先先调整内存大小:

执行:vim /etc/sysctl.conf

在最后加入:vm.max_map_count=262144

图片.png

启用配置:sysctl -p

图片.png

给挂载目录的data文件夹赋予修改权限:

chmod 777 /dcoker3/es/es01/data 这里我放在这个目录下,自行修改为你的目录即可。

图片.png

进入到docker-compose所在的目录:

图片.png

执行:docker-compose up -d 创建容器

图片.png

验证

执行:curl http://localhost:9201/_cat/nodes?pretty 查看是否开启成功。

图片.png

至此集群部署成功。