我希望得到有经验的人的建议,建立一个 HA 基础架构,每周以 JSON 格式记录 2To 数据。我需要保留 7 天,并且需要能够通过 API 请求这些数据。
全球要求是: - 每月处理 400 000 000 个请求(每秒 154 次) - 需要处理 JSON 格式的平面日志并通过删除不需要的信息来清除它以节省磁盘空间。 - 拥有平面日志的实时仪表板 - 拥有一个仪表板,能够对存储 7 天的最终日志制作图表或提出请求。 - 有一个可用的 API,以便能够从外部软件检索这些日志的数据。 - 基础设施应该能够在未来轻松增长。
我考虑在 6 台专用服务器(3 台主服务器和 3 台工作服务器)上创建一个 Kubernetes 集群。3 个工作节点每个节点将有 2To 的 SSD 磁盘空间。平面日志请求将发送到 Kafka,Graylog 将订阅 kafka 主题并将其发送到 Elastic search,因此:- Kafka 允许我每秒处理数千个请求而不会出现问题(因为可能会出现一些峰值)- Graylog 允许我实时处理日志并获得仪表板- ElasticSearch 允许我获得分析仪表板和 API
您对此有何看法?您是否已经开发过大型日志系统?如果是,您使用了什么?
答案1
如果我理解正确的话,您希望以简单的文本形式存储和索引这些 JSON 数据。虽然存储不应该是一个大问题,索引实现快速搜索和数据可视化需要使用某种二进制格式。Graylog(和 Elastic)正是这样做的,使用二进制索引来存储消息。
因此关键问题是:
Graylog(或 Elastic)可以用于这样的任务吗?是的。150 req/s 并不是一个很大的速率,尤其是每个条目约为 24 KB(2 TB / 7 / 86400 / 150),因此写入速率约为 4 MB/s
需要什么硬件设置?我会从一台配备 SSD 的机器开始使用 ZFS 并配置
ashift=12, sync=disabled, atime=off, compression=lz4, recordsize=16K, xattr=off
。根据需要扩展后收集宝贵的现实世界经验。