docker-compose部署ElasticSearch集群

Elasticsearch Compose 配置文件

创建一个 docker-compose.yml 内容如下:

yaml 复制代码
version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.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
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./es01/data:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic

  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.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
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./es02/data:/usr/share/elasticsearch/data
    networks:
      - elastic

  es03:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.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
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./es03/data:/usr/share/elasticsearch/data
    networks:
      - elastic

  kib01:
    image: docker.elastic.co/kibana/kibana:7.10.1
    container_name: kib01
    ports:
      - 5601:5601
    environment:
      ELASTICSEARCH_URL: http://es01:9200
      ELASTICSEARCH_HOSTS: '["http://es01:9200","http://es02:9200","http://es03:9200"]'
    networks:
      - elastic

volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local

networks:
  elastic:
    driver: bridge

事先创建如下数据挂载目录:

shell 复制代码
├── es01
│   └── data
├── es02
│   └── data
└── es03
    └── data

并且设置权限:

shell 复制代码
chmod -R 777 es01 es02 es03

执行 docker-compose up -d启动。

错误

文件权限

报错如下:

shell 复制代码
AccessDeniedException[/usr/share/elasticsearch/data/nodes]

提前将挂载目录创建好,并将权限设置好:

shell 复制代码
chmod -R 777 es01 es02 es03

内存不足

报错如下:

shell 复制代码
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

修改配置文件:

shell 复制代码
vi /etc/sysctl.conf

在文件末尾添加一行内容:

shell 复制代码
vm.max_map_count=262144

执行以下命令立即生效:

shell 复制代码
/sbin/sysctl -p

之后重新启动即可。

如果是 Win10 的 wsl 中的 docker

需执行以下命令:

shell 复制代码
wsl -d docker-desktop
sysctl -w vm.max_map_count=262144

之后重新启动。

相关推荐
那明眸似水11 小时前
云原生项目三:Docker秒级启动NextCloud个人网盘存储办公系统
linux·运维·docker·云原生·容器
知已难寻1 天前
Docker 入门:容器技术与 Docker 基础
java·运维·服务器·docker·云原生·容器
xbzb1 天前
镜像到底存在哪:/var/lib/docker 的四级映射与 daemon.json 配置
docker·容器·json·镜像·daemon.json·四级
方便面不加香菜1 天前
Docker Volume -- 管理卷Volume详解
运维·docker·容器
江湖有缘1 天前
Docker实战 | 使用Docker部署lemonitor镜像站点列表程序
运维·docker·容器
莫晓燚2 天前
mall 电商项目完整部署---实战
linux·运维·docker·容器
瑞克-桑切斯2 天前
ERP 企业生产管理系统部署手册
运维·docker·云原生·容器·eureka
瑞克-桑切斯2 天前
docker mail商城
运维·docker·容器
java_logo2 天前
Docker 部署 ReMe:轻松搭建 AI Agent 记忆管理平台
人工智能·docker·容器·ai agent·轩辕镜像·reme·agentscope-ai
不庸.2 天前
WPScan 实战入门:从 Docker 靶场到弱密码爆破
运维·安全·web安全·docker·容器·安全性测试·wpscan