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

之后重新启动。

相关推荐
艾伦_耶格宇7 小时前
【DOCKER进阶】-3 cgroups
docker·容器·eureka
core51212 小时前
如何从多架构 Docker 镜像中导出指定的 ARM64 版本
华为·docker·架构·镜像·导出·多架构
雪碧聊技术13 小时前
使用Docker,将fastApi项目部署到linux服务器
服务器·docker·fastapi·docker部署fastapi
我有2只猫13 小时前
vLLM Docker 本地部署小模型
docker·容器·vllm
Oo92014 小时前
Docker 入门:把应用和运行环境一起打包
docker
梦梦代码精16 小时前
用开源BuildingAI打造C端AI助手,内置写作/绘画/长文/漫剧,商业化模块全预制
docker·ai·ai作画·开源·代码规范
huaiixinsi17 小时前
Docker 负责打包,Kubernetes 负责调度:一文吃透容器化与 K8s 编排
docker·容器·kubernetes
凌涘17 小时前
Docker 入门:镜像、容器与反向代理
docker
风翼靓崽18 小时前
记一次使用snap 安装dive后,docker镜像和容器都看不到
运维·docker·容器
java_logo18 小时前
Docker 部署 openGauss:轻松搭建企业级开源关系型数据库平台
数据库·docker·开源·opengauss·轩辕镜像·opengauss部署教程·opengauss部署文档