本文旨在搭建最简单docker elasticsearch集群环境
docker pull elasticsearch:7.2.0
docker pull kibana
mkdir elasticsearch/data/{node0,node1,node2} -p
mkdir elasticsearch/logs/{node0,node1,node2} -p
cd elasticsearch/
chmod 0777 data/* -R && chmod 0777 logs/* -R
目录结构
├── docker-compose.yml
├── elasticsearch
│ ├── conf
│ │ ├── node1
│ │ ├── node2
│ │ └── node3
│ ├── data
│ │ ├── node1
│ │ ├── node2
│ │ └── node3
│ └── logs
│ ├── node1
│ ├── node2
│ └── node3
└── kibana
└── conf
└── kibana.yml
重新设置系统级别的默认打开文件最大个数 防止JVM报错
echo vm.max_map_count=655360 >> /etc/sysctl.conf
在root账户执行这一句 作用是重新载入sysctl系统参数
sysctl -p
docker-compose.yml文件
version: '3'
services:
es1:
# es镜像版本,我之前docker拉取的版本是7.2.0 你需要在这里修改为自己的版本
image: elasticsearch:7.2.0
# 容器名称
container_name: es1
privileged: true
# 启动时的环境参数 因为我的服务器配置较低所以分配了128m
environment:
- "ES_JAVA_OPTS=-Xms128m -Xmx128m"
ulimits:
memlock:
soft: -1
hard: -1
# 挂载数据卷
volumes:
# 挂载data
- ./elasticsearch/data/node1:/usr/share/elasticsearch/data
# 挂载自己的配置文件
- ./elasticsearch/conf/node1/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
# 挂载日志文件
- ./elasticsearch/logs/node1:/usr/share/elasticsearch/logs
# 端口映射关系
ports:
- 9201:9200
- 9301:9300
# 网络信息
networks:
- esnet
es2:
# es镜像版本,我之前docker拉取的版本是7.2.0 你需要在这里修改为自己的版本
image: elasticsearch:7.2.0
# 容器名称
container_name: es2
privileged: true
# 启动时的环境参数 因为我的服务器配置较低所以分配了128m
environment:
- "ES_JAVA_OPTS=-Xms128m -Xmx128m"
ulimits:
memlock:
soft: -1
hard: -1
# 挂载数据卷
volumes:
# 挂载data
- ./elasticsearch/data/node2:/usr/share/elasticsearch/data
# 挂载自己的配置文件
- ./elasticsearch/conf/node2/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
# 挂载日志文件
- ./elasticsearch/logs/node2:/usr/share/elasticsearch/logs
# 端口映射关系
ports:
- 9202:9200
- 9302:9300
# 网络信息
networks:
- esnet
es3:
# es镜像版本,我之前docker拉取的版本是7.2.0 你需要在这里修改为自己的版本
image: elasticsearch:7.2.0
# 容器名称
container_name: es3
privileged: true
# 启动时的环境参数 因为我的服务器配置较低所以分配了128m
environment:
- "ES_JAVA_OPTS=-Xms128m -Xmx128m"
ulimits:
memlock:
soft: -1
hard: -1
# 挂载数据卷
volumes:
# 挂载data
- ./elasticsearch/data/node3:/usr/share/elasticsearch/data
# 挂载自己的配置文件
- ./elasticsearch/conf/node3/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
# 挂载日志文件
- ./elasticsearch/logs/node3:/usr/share/elasticsearch/logs
# 端口映射关系
ports:
- 9203:9200
- 9303:9300
# 网络信息
networks:
- esnet
kibana:
image: kibana:7.2.0
container_name: kibana
privileged: true
ports:
- 5601:5601
environment:
- ELASTICSEARCH_URL=http://es1:9200
volumes:
- ./kibana/conf/kibana.yml:/usr/share/kibana/config/kibana.yml
networks:
- esnet
# 使用桥接的网络连接方式
networks:
esnet:
driver: bridge
主节点的配置文件
# 集群名称 EsCluster
cluster.name: huaweiES
# 节点名称
node.name: es1
# 是否为主节点
node.master: true
# 该节点是否存储数据
node.data: true
# 对外开放的http端口
http.port: 9200
# 回环地址
network.host: 0.0.0.0
#network.publish_host: master-ip
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
# 是否运行跨域REST请求
http.cors.enabled: true
# 允许跨域请求来自何处
http.cors.allow-origin: "*"
# 有成为主节点资格的最小节点数
discovery.zen.minimum_master_nodes: 1
cluster.initial_master_nodes: ["es1"]
xpack.security.enabled: false
indices.fielddata.cache.size: 50%
es2的配置文件
# 集群名称 EsCluster
cluster.name: huaweiES
# 节点名称
node.name: es2
# 是否为主节点
node.master: false
# 该节点是否存储数据
node.data: true
# 对外开放的http端口
http.port: 9200
# 回环地址
network.host: 0.0.0.0
#network.publish_host: master-ip
# 有资格成为主节点的资格列表
discovery.zen.ping.unicast.hosts: ["es1"]
# 是否运行跨域REST请求
http.cors.enabled: true
# 允许跨域请求来自何处
http.cors.allow-origin: "*"
# 有成为主节点资格的最小节点数
discovery.zen.minimum_master_nodes: 1
xpack.security.enabled: false
indices.fielddata.cache.size: 50%
es3的配置文件
# 集群名称 EsCluster
cluster.name: huaweiES
# 节点名称
node.name: es3
# 是否为主节点
node.master: false
# 该节点是否存储数据
node.data: true
# 对外开放的http端口
http.port: 9200
# 回环地址
network.host: 0.0.0.0
#network.publish_host: master-ip
# 有资格成为主节点的资格列表
discovery.zen.ping.unicast.hosts: ["es1"]
# 是否运行跨域REST请求
http.cors.enabled: true
# 允许跨域请求来自何处
http.cors.allow-origin: "*"
# 有成为主节点资格的最小节点数
discovery.zen.minimum_master_nodes: 1
xpack.security.enabled: false
indices.fielddata.cache.size: 50%
kibana配置文件
cat kibana/conf/kibana.yml
elasticsearch.hosts: http://es1:9200
server.host: "0.0.0.0"
server.name: kibana
xpack.monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: zh-CN