Elasticsearch 7.17.8 集群部署指南
📘 一、ES 集群概念
集群是由多个节点(node)组成的整体系统,共同对外提供统一服务,以实现高可用性和高性能。在 Elasticsearch(ES)中,集群是默认的部署形式。
1.1 架构图

从用户视角看,ES 是一个去中心化系统,节点故障不会影响集群其他节点运行。
内部结构如下图:

1.2 节点类型说明
| 节点类型 | 说明 |
|---|---|
| Master Node | 管理集群元数据,处理索引、删除、分片分配等。每时刻只有一个主节点在工作,其它为候选。 |
| Data Node | 存储数据,负责读写操作、分片、查询聚合等,是资源消耗最重的节点。 |
| Client Node | 分发查询任务,承担部分聚合处理,可缓解数据节点压力,提升查询性能。 |
1.3 请求流程概述
- 搜索查询(Search):Kibana 或用户请求通过 Client Node → Data Node → 聚合结果 → 返回。
- 索引操作(Indexing):API 请求通过 Master Node → 分发至 Data Node → 写入数据。
- 所有请求最终都落到 Data Node,它是最核心的数据处理节点。
📐 二、集群架构规划
2.1 节点规划表
| 节点名称 | IP 地址 | 角色 |
|---|---|---|
| es1 | 192.168.116.128 | master |
| es2 | 192.168.116.129 | data |
| es3 | 192.168.116.130 | data |
2.2 节点类型选择建议
| 节点类型 | 功能描述 | 适用场景说明 |
|---|---|---|
| 数据节点 | 存储数据并处理查询与写入请求。 | 集群核心组成,至少部署 2 个,性能依赖于硬件配置。 |
| Master 节点 | 管理元数据和集群状态,如索引、分片分配、节点监控等。 | 建议大集群或高分片数场景部署,建议部署 3 个以避免主节点不可用。 |
| Client 节点 | 接收用户请求,分发到数据节点,并进行第一轮聚合计算。 | 适用于高查询 QPS 或大量聚合请求的场景。 |
| 冷数据节点 | 存储低频访问数据,优化存储成本。 | 适用于日志归档、历史数据等低时效性需求场景。 |
⚙️ 三、集群部署步骤
3.1 修改主机名(每台机器执行)
# 示例:在 es1 上
hostnamectl set-hostname es13.2 修改 /etc/hosts(所有机器)
cat >> /etc/hosts <<EOF
192.168.116.128 es1
192.168.116.129 es2
192.168.116.130 es3
EOF3.3 关闭防火墙和 SELinux(测试环境)
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config🔧 四、系统资源优化
4.1 修改 limits.conf
cat >> /etc/security/limits.conf <<EOF
* soft nofile 204800
* hard nofile 204800
* soft nproc 204800
* hard nproc 204800
EOF4.2 修改 sysctl.conf
cat >> /etc/sysctl.conf <<EOF
vm.max_map_count=655360
EOF
# 应用生效
sysctl -p📦 五、安装 Elasticsearch 7.17.8
5.1 下载并解压
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.8-linux-x86_64.tar.gz
tar -zxf elasticsearch-7.17.8-linux-x86_64.tar.gz -C /opt/
mv /opt/elasticsearch-7.17.8 /opt/es5.2 创建独立运行用户
useradd es
chown -R es:es /opt/es🛠️ 六、配置 Elasticsearch 节点
6.1 通用配置(所有节点)
编辑 /opt/es/config/elasticsearch.yml 添加以下内容:
cluster.name: es-cluster
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
discovery.seed_hosts: ["es1", "es2", "es3"]
cluster.initial_master_nodes: ["es1"]
bootstrap.memory_lock: true6.2 节点角色配置(分别配置)
es1 节点:
node.name: es1
node.master: true
node.data: truees2 和 es3 节点:
node.name: es2 # 或 es3
node.master: false
node.data: true🧠 七、JVM 参数优化
编辑 /opt/es/config/jvm.options,设置内存参数:
-Xms4g
-Xmx4g建议为服务器物理内存的一半,最大不超过 32GB。
🚀 八、启动服务
# 切换用户
su - es
cd /opt/es
./bin/elasticsearch -d使用 -d 参数后台运行🔒 九、安全加固(可选)
建议配置 TLS 加密和权限控制:
- 使用
elasticsearch-certutil创建证书 - 开启 X-Pack 安全机制
- 配置角色和用户权限
详见官方文档:安全配置指南
✅ 十、验证集群状态
查看节点信息:
curl http://es1:9200/_cat/nodes?v查看健康状态:
curl http://es1:9200/_cluster/health?pretty🧩 十一、常见问题排查
| 问题 | 可能原因 |
|---|---|
| 节点无法加入集群 | IP、主机名未配置正确,端口未开放 |
| 启动失败,提示内存锁失败 | bootstrap.memory_lock未生效或权限不足 |
| 启动后访问失败 | 未配置network.host或监听端口错误 |