Elasticsearch 7.17.8 集群部署指南

📘 一、ES 集群概念

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

1.1 架构图

ES集群架构

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

内部结构如下图:

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 地址角色
es1192.168.116.128master
es2192.168.116.129data
es3192.168.116.130data

2.2 节点类型选择建议

节点类型功能描述适用场景说明
数据节点存储数据并处理查询与写入请求。集群核心组成,至少部署 2 个,性能依赖于硬件配置。
Master 节点管理元数据和集群状态,如索引、分片分配、节点监控等。建议大集群或高分片数场景部署,建议部署 3 个以避免主节点不可用。
Client 节点接收用户请求,分发到数据节点,并进行第一轮聚合计算。适用于高查询 QPS 或大量聚合请求的场景。
冷数据节点存储低频访问数据,优化存储成本。适用于日志归档、历史数据等低时效性需求场景。

⚙️ 三、集群部署步骤

3.1 修改主机名(每台机器执行)

# 示例:在 es1 上
hostnamectl set-hostname es1

3.2 修改 /etc/hosts(所有机器)

cat >> /etc/hosts <<EOF
192.168.116.128 es1
192.168.116.129 es2
192.168.116.130 es3
EOF

3.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
EOF

4.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/es

5.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: true

6.2 节点角色配置(分别配置)

es1 节点:

node.name: es1
node.master: true
node.data: true

es2 和 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或监听端口错误
正文到此结束
最后修改:2025 年 05 月 26 日
如果觉得我的文章对你有用,请随意赞赏