ELK 集群部署实战

ELK 集群部署实战

本次分享如何在生产环境搭建 高可用 ELK 集群,并分享实战中常用的部署技巧与优化策略。


一、部署前环境规划

1. 操作系统

ELK 对操作系统比较友好,主流 Linux 均支持:

  • CentOS 7/8

  • Ubuntu 18.04/20.04

  • 麒麟操作系统

建议尽量统一操作系统版本,以减少兼容性问题。

2. 硬件资源

节点类型 CPU 内存 磁盘
Master 2-4 4-8GB 50GB SSD
Data 4-8 16-32GB 500GB SSD/HDD
Client / Kibana 2 4-8GB 50GB SSD

3. 网络规划

  • 集群内部节点互通:TCP 9300(ES 节点间通信)

  • 外部访问 Elasticsearch REST API:TCP 9200

  • Kibana Web:TCP 5601

  • 节点间推荐使用静态 IP 或内网域名。


二、部署方式

1. 快速试用:Docker Compose

适合测试或 PoC:

复制代码
version: '3'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.8.2
    environment:
      - discovery.type=single-node
    ports:
      - 9200:9200
      - 9300:9300
  kibana:
    image: docker.elastic.co/kibana/kibana:8.8.2
    ports:
      - 5601:5601
    environment:
      ELASTICSEARCH_HOSTS: http://elasticsearch:9200

2. 生产环境:二进制安装 + Systemd

安装 Elasticsearch
复制代码
# 下载
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.8.2-linux-x86_64.tar.gz
tar -xzf elasticsearch-8.8.2-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local/elasticsearch-8.8.2
# 配置 elasticsearch.yml
vi config/elasticsearch.yml
elasticsearch.yaml示例配置:
复制代码
cluster.name: elk-prod
node.name: es-node1
node.roles: [ master, data ]
network.host: 0.0.0.0
discovery.seed_hosts: ["10.0.0.1","10.0.0.2","10.0.0.3"]
cluster.initial_master_nodes: ["es-node1","es-node2","es-node3"]
bootstrap.memory_lock: true
设置 Systemd 服务:
复制代码
sudo tee /etc/systemd/system/elasticsearch.service <<EOF
[Unit]
Description=Elasticsearch
After=network.target
[Service]
Type=simple
User=elasticsearch
Group=elasticsearch
ExecStart=/usr/local/elasticsearch-8.8.2/bin/elasticsearch
LimitNOFILE=65536
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
​
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
安装 Kibana
复制代码
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.8.2-linux-x86_64.tar.gz
tar -xzf kibana-8.8.2-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local/kibana-8.8.2
vi config/kibana.yml
​
示例配置:
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://10.0.0.1:9200"]
​
启动:
./bin/kibana

3. 自动化部署:Ansible

适合大规模节点: • 编写 playbook 部署 Elasticsearch/Kibana。 • 支持批量配置 discovery.seed_hosts、集群名、角色分配。 • 可集成监控和证书分发。

三、集群配置要点

1. Elasticsearch 参数优化

复制代码
# jvm.options
-Xms16g
-Xmx16g
# elasticsearch.yml
cluster.routing.allocation.disk.watermark.high: 85%
cluster.routing.allocation.disk.watermark.low: 75%
indices.query.bool.max_clause_count: 10240

2. Logstash 参数

复制代码
pipeline.workers: 4       # CPU 核数
pipeline.batch.size: 125  # 每批处理日志数量
queue.type: persisted     # 持久化队列,防止丢失

3.Kibana

  • server.host 绑定内网 IP 或 0.0.0.0

  • elasticsearch.hosts 填写 ES 集群地址

  • 可配置 SSL/TLS 与认证

四、集群管理与监控

1. 集群状态检查

复制代码
curl http://10.0.0.1:9200/_cluster/health?pretty
curl http://10.0.0.1:9200/_cat/nodes?v
curl http://10.0.0.1:9200/_cat/indices?v

2. 常用监控指标

  • Heap 使用率

  • GC 次数

  • 分片数量与大小

  • 节点负载和磁盘占用

3. Kibana Monitoring

  • 可视化集群健康状态

  • 告警节点离线、磁盘满等

五、实战案例

当前ELK 集群部署:

节点设计:
  • 3 Master 节点

  • 6 Data 节点(热 SSD + 冷 HDD)

  • 2 Client 节点运行 Kibana

部署流程:
  • 安装 Elasticsearch 并配置集群。

  • 配置 Systemd 自动启动。

  • 部署 Kibana 并连接 ES。

  • Filebeat + Logstash 实现日志采集与清洗。

优化经验:
  • 分片控制在 30GB 左右。

  • 热数据副本 1,温数据副本 0。

  • 启用持久化队列防止 Logstash 高峰丢日志。

  • 使用 ILM 自动管理索引生命周期。

六、常见问题与排查

复制代码
1.节点无法加入集群
检查 discovery.seed_hosts、集群名
2.查询慢
检查分片数量、索引模板、查询语法
3.磁盘占满
检查 ILM 或 Curator 是否启用
4.Logstash 丢日志
检查队列配置及 pipeline 状态
5.Kibana 无法连接 Elasticsearch
检查 network.host、防火墙、TLS

七、总结

  • 高可用 ELK 集群部署必须规划好节点角色、资源和网络

  • 生产环境优先使用 Systemd 服务 + 持久化队列 + ILM

  • 监控与告警不可少,保证日志平台稳定

相关推荐
XIAOHEZIcode4 小时前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户03284722207020 小时前
如何搭建本地yum源(上)
运维
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质4 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工4 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智4 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_4 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉4 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦4 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw