一、搭建 Elasticsearch 集群
要在 Docker 中启动并运行一个三节点 Elasticsearch 集群,您可以使用 Docker Compose:
- 创建一个
docker-compose.yml
文件:
yaml
version: '2.2'
services:
es01:
# 修改版本
image: docker.elastic.co/elasticsearch/elasticsearch:版本
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:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
es02:
# 修改版本
image: docker.elastic.co/elasticsearch/elasticsearch:版本
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:
- data02:/usr/share/elasticsearch/data
networks:
- elastic
es03:
# 修改版本
image: docker.elastic.co/elasticsearch/elasticsearch:7.13.2
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:
- data03:/usr/share/elasticsearch/data
networks:
- elastic
networks:
elastic:
driver: bridge
- 创建3个挂载数据的文件夹, 并且赋予读写权限。
sh
$ mkdir data01 data02 data03 && chmod 775 data01 data02 data03
- 运行
docker-compose
启动ES集群:
sh
$ docker-compose up -d
- 使用命令
_cat/nodes
请求以查看节点是否已启动并正在运行:
sh
$ curl -X GET "localhost:9200/_cat/nodes?v=true&pretty"
- 正常显示结果:
sh
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.21.0.2 39 99 70 2.96 1.12 0.64 dilm - es03
172.21.0.3 25 99 69 2.96 1.12 0.64 dilm * es01
172.21.0.4 39 99 70 2.96 1.12 0.64 dilm - es02