Loading... # 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 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 安全机制** * **配置角色和用户权限** **详见官方文档:**[安全配置指南](https://www.elastic.co/guide/en/elasticsearch/reference/7.17/configuring-stack-security.html) ## ✅ 十、验证集群状态 **查看节点信息:** ``` curl http://es1:9200/_cat/nodes?v ``` **查看健康状态:** ``` curl http://es1:9200/_cluster/health?pretty ``` ## 🧩 十一、常见问题排查 | **问题** | **可能原因** | | ---------------------------- | --------------------------------------- | | **节点无法加入集群** | **IP、主机名未配置正确,端口未开放** | | **启动失败,提示内存锁失败** | `bootstrap.memory_lock`未生效或权限不足 | | **启动后访问失败** | **未配置**`network.host`或监听端口错误 | 最后修改:2025 年 05 月 26 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏