前言
通过Docker部署Elasticsearch集群
创建一个网络
es-network
:定义一个网络名称
1
| docker network create es-network
|
拉取镜像
1
| docker pull elasticsearch:7.12.1
|
创建docker-compose文件
image
:指定使用的镜像 container_name
:指定镜像名 environment
:指定环境配置 > cluster.name=
:指定集群名称,当集群名称相同时,将组建为一个集群 > discovery.seed_hosts=
:集群中其他节点的IP地址或域名 > cluster.initial_master_nodes=
:指定集群中主节点,如果指定多个将自动选举主节点 > ES_JAVA_OPTS=-Xms1g -Xmx1g
:配置堆内存大小,默认为1G,推荐最小堆内存与最大堆内存设置相同大小
volumes
:指定数据卷映射 ports
:指定端口映射 networks
:指定网络配置
docker-compose.yml1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| version: "2.2" services: es01: image: elasticsearch:7.12.1 container_name: es01 environment: - node.name=es01 - cluster.name=docker-cluster - discovery.seed_hosts=es02,es03 - cluster.initial_master_nodes=es01,es02,es03 - ES_JAVA_OPTS=-Xms512m -Xmx512m volumes: - data01:/usr/share/elasticsearch/data ports: - 9201:9200 networks: - es-network es02: image: elasticsearch:7.12.1 container_name: es02 environment: - node.name=es02 - cluster.name=docker-cluster - discovery.seed_hosts=es01,es03 - cluster.initial_master_nodes=es01,es02,es03 - ES_JAVA_OPTS=-Xms512m -Xmx512m volumes: - data02:/usr/share/elasticsearch/data ports: - 9202:9200 networks: - es-network es03: image: elasticsearch:7.12.1 container_name: es03 environment: - node.name=es03 - cluster.name=docker-cluster - discovery.seed_hosts=es01,es02 - cluster.initial_master_nodes=es01,es02,es03 - ES_JAVA_OPTS=-Xms512m -Xmx512m volumes: - data03:/usr/share/elasticsearch/data ports: - 9203:9200 networks: - es-network volumes: data01: driver: local data02: driver: local data03: driver: local networks: es-network: driver: bridge
|
启动容器
报错
- 启动失败,报错:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
原因
- 操作系统中elasticsearch用户拥有的内存权限太小,至少需要262144
解决问题(Linux)
1 2
| echo "vm.max_map_count=262144" >> /etc/sysctl.conf sysctl -p
|
解决问题(MacOS)
使用DockerDesktop作为Docker运行时
1 2
| screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty sysctl -w vm.max_map_count=262144
|
使用Lima作为Docker运行时
1 2 3
| limactl shell docker sudo sysctl -w vm.max_map_count=262144 exit
|
完成
参考文献
哔哩哔哩——黑马程序员 博客园——jiu~ CSDN——whatday Elasticsearch文档 CSDN——jingyu_z