使用 Docker Compose 搭建 Elasticsearch 集群
资源准备
服务器 3 台,安装 Docker & Compose。拉取 Elasticsearch 镜像。
1 | docker pull elasticsearch:8.16.0 |
本文中使用的三台服务器 IP 分别为:
- 10.1.1.2
- 10.1.1.3
- 10.1.1.4
docker-compose.yml
分别在三台服务器上创建 docker-compose.yml 文件,内容如下:
1 | services: |
该配置文件中:
- 为了避免数据丢失,将 Elasticsearch 数据目录挂载到
es_data卷中。 ES_JAVA_OPTS配置 JVM 内存,可根据实际情况调整。
.env
分别在三台服务器的 docker-compose.yml 同级目录下创建 .env 文件。
以主机 10.1.1.2 为例,内容如下:
1 | node_name=es01 |
各项配置说明如下:
- node_name: 节点名称,每台服务器上使用不同的名称
- cluster_name: 集群名称,每台服务器上使用相同的名称
- seed_hosts: 集群自动发现所需的初始主机节点列表,每台服务器上配置相同,使用逗号分隔
- initial_master_nodes: 指定集群的初始主节点列表,每台服务器上配置相同,使用逗号分隔
- publish_host: 发布地址,修改为当前服务器 IP
通常情况下,每台主机的 node_name 和 publish_host 配置不同,其他配置相同。
启动集群
三台服务器均需要执行以下命令:
1 | docker compose up -d |
使用以下命令查看日志:
1 | docker compose logs -f |
耐心等待,确定没有报错信息后,进行下一步。
验证
在任意一台服务器上执行以下命令,查看集群状态:
1 | curl -X GET "localhost:9200/_cat/nodes?v&pretty" |
输出结果如下:
1 | ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name |