ES8自2020年2月发布至今已有一年多时间,相较于es7而言,最大的改变是彻底删除_type,并默认开启三层安全配置,进一步提高了集群安全性,同时kibana的实用性也进一步提升,大部分日常操作都可以通过web界面完成。本系列教程使用最新的es8.8版本,从运维角度出发,以构建日志平台为目的,以尽可能贴近实际生产的场景案例,优先使用简易的部署方式和kibana图形化界面操作。由浅入深,带领大家逐步上手和掌握ELK技术栈。更多ELK相关内容欢迎访问官方文档或本人博客笔记:https://www.cuiliangblog.cn/catalog/10898409
日志类业务,假设理想情况下,此集群每天最多能够采集20GB的原始日志,需要经常查询最近7天数据,历史数据最大查询时间为30天,日志数据归档存储最多为60天。
日志类业务,通常情况下首选热温架构。如果有数据归档存储需求,可加入冷节点存储归档数据。 热节点使用高速SSD+小内存机器,温节点使用低速HDD+大内存机器,冷节点使用最便宜的DAS/SAN/磁带存储,组合达到最大性能和最低成本。
原始数据量和索引后所占磁盘空间之间的比例大约为 1.1,所以20GB的原始数据预计会在磁盘上产生 22GB的索引数据。 加上副本分片(通常为1副本)后,此数值会翻倍,每天为44GB。 在30天内,主副分片占用量为1320GB,加上归档存储30天的数据(通常为0副本)占用量660GB,总计1980GB,这就是集群需要处理的总量。
在预估数据节点时,需要注意以下几点:
基于这些数据,我们便可以确定热节点所需的总磁盘空间和总内存量。
磁盘与内存的比例 | 有效保留期(天) | 需存储的数据量 (GB) | 所需总磁盘空间 (GB) | 所需总内存 (GB) |
---|---|---|---|---|
30:1 | 7 | 308 | 370 | 12 |
为保障数据完整性,避免单点故障,同一索引的主副分片不能位于同一节点,因此热温节点数量最少各2台。考虑到hot节点写入负载较高,为提高集群写入能力,规划三台节点,热节点的最低配置如下所示:
节点 | CPU(核) | 内存(GB) | 数据盘(GB) |
---|---|---|---|
hot-1 | 1 | 4 | 123 |
hot-2 | 1 | 4 | 123 |
hot-3 | 1 | 4 | 123 |
热节点上超出保留期的数据将会转移到温节点。通过计算这些节点需要存储的数据量,我们便可以预估所需的规模,计算时也需要将高磁盘水位线和后台活动预留的开销考虑在内。
磁盘与内存的比例 | 有效保留期(天) | 需存储的数据量(GB) | 所需总磁盘空间(GB) | 所需总内存 (GB) |
---|---|---|---|---|
100:1 | 23 | 1012 | 1214 | 12 |
温节点的最低配置如下所示
节点 | CPU(核) | 内存(GB) | 数据盘(GB) |
---|---|---|---|
warm-1 | 1 | 6 | 607 |
warm-2 | 1 | 6 | 607 |
温节点上超出保留期的数据将会转移到冷节点。
磁盘与内存的比例 | 有效保留期(天) | 需存储的数据量(GB) | 所需总磁盘空间(GB) | 所需总内存 (GB) |
---|---|---|---|---|
1000:1 | 30 | 660 | 792 | 1 |
本实验中仅使用一台冷节点为例演示,存储到冷节点的索引不设置副本数。冷节点的最低配置如下所示
节点 | CPU(核) | 内存(GB) | 数据盘(GB) |
---|---|---|---|
cold-1 | 1 | 1 | 792 |
除了数据节点,我们通常还需要专用master节点,在实际生产环境建议部署3台master节点,以便提高集群的弹性和可用性。由于这些节点不处理任何流量,所以它们的规模很小,后期随着业务集群规模增长再提高配置或增加master节点数。master节点的最低配置如下所示
节点 | CPU(核) | 内存(GB) | 数据盘(GB) |
---|---|---|---|
master | 1 | 2 | 0 |
建议将数据节点内存至少配置到4G以上,随着数据写入以及Elastic Agent部署,2G内存经常会出现OOM。 由于是实验环境,master节点暂部署一台,生产环境建议master节点3台。 fleet server节点建议部署在es集群之外,生产环境建议2台及以上组成集群,通过负载均衡方式管理与下发agent策略。 考虑到es节点还需要运行logstash、kibana、filebeat、kafka等服务,集群角色与配置规划如下:
主机名 | CPU | 内存 | 数据盘 | es角色 | 其他服务 | ip |
---|---|---|---|---|---|---|
es-fleet1 | 1C | 1G | 0 | fleet server、filebeat、自定义APP | 192.168.10.130 | |
es-fleet2 | 1C | 1G | 0 | fleet server、minIO、Grafana、Prometheus | 192.168.10.131 | |
es-master | 4C | 4G | 50G | master,ingest | kibana、elastic agent | 192.168.10.132 |
es-hot1 | 2C | 4G | 120G | data_content,data_hot | kafka、elastic agent | 192.168.10.133 |
es-hot2 | 2C | 4G | 120G | data_content,data_hot | kafka、elastic agent | 192.168.10.134 |
es-hot3 | 2C | 4G | 120G | data_content,data_hot | kafka、elastic agent | 192.168.10.135 |
es-warm1 | 2C | 6G | 600G | data_content,data_warm | logstash、elastic agent | 192.168.10.136 |
es-warm2 | 2C | 6G | 600G | data_content,data_warm | logstash、elastic agent | 192.168.10.137 |
es-cold | 1C | 2G | 800G | data_content,data_cold | elastic agent | 192.168.10.138 |
操作系统:rockylinux:9.2 内核版本:5.15.49 ELK版本:8.8.2 prometheus版本:2.45.0 grafana版本:10.0.2