我们有一个 ELK (ElasticSearch-Logstash-Kibana) 部署,我们通过 logstash 将日志发送到 Elasticsearch 集群。每天都会创建索引。我们关闭超过 3 天的索引,并对超过 7 天的索引进行快照,然后通过 curator 将它们推送到 Amazon S3。
我们有大约 10 个不同的每日索引,每个索引的平均大小约为 1GB。复制因子为 1。每个索引有 2 个分片。Logstash 以每秒 2000 个 log_events 的速率将数据推送到 ES Cluster
我们的拓扑
- 3 专用主+数据
- 1 个专用客户端节点 + Kibana
硬件配置
- 12芯
- 64 GB 内存
- 2 TB 旋转磁盘
- Debian 7
- 弹性搜索版本 - 1.7.1
- Logstash - 1.5.3
遵循所有标准配置,如发现中的单播模式,已分配 30 GB RAM。
现在,快照作业通过策展人从客户端机器上运行,请求本地发送到客户端机器上运行的 ES 实例。Logstash 将日志直接发送到客户端节点
正在使用的馆长命令:-
curator --timeout 21600 --host es-client --port 9200 snapshot --name $snapshot_name_$project-$date --repository walle_elk_archive indices --older-than 3 --time-unit days --timestring %Y-%m-%d --prefix $prefix
有人可以在以下方面帮助我:-
- 可以像我们一样在客户端机器上运行 curator 作业吗?
- 可以从一台机器上拍摄所有索引的快照吗?
- 由于日志是连续推送的,当快照创建和推送到 Amazon S3 进行时,是否会使集群不稳定?
- 人们从 Elasticsearch 备份旧索引时通常遵循哪些最佳实践?
是的,因为“客户端”机器除了在您的 ES 集群上触发 REST 请求并等待响应之外什么都不做。
再次,是的。原因与第一个问题相同。
根据快照和还原的 ES 文档
索引速度可能会略有放缓,但根据您的机器规格,我认为这可能会很好,但除非您尝试,否则真的无法知道。快照速度的限制因素可能是共享文件系统存储库的磁盘,以及 S3 存储库的 Internet 连接速度。
在使用 S3 存储库以及它如何影响流程方面, S3 存储库插件的文档中没有太多详细信息(如,没有)关于它的实际工作方式。我怀疑每个持有主分片的数据节点都会将其分片推送到存储库、S3 或其他地方。这意味着在对 S3 存储库执行快照时,ES 集群上的负载可能不会比对共享文件系统存储库的负载多。
再次,测试它,因为每个环境都是独一无二的,对一个人有用的可能不适用于下一个。
我发现 ES 有很好的文档,并且有一个关于Snapshot And Restore的部分。在“最佳”实践方面实际上并没有太多,所以除非你在网上遇到其他一些资源,否则我会说你最好的选择是开始尝试看看什么对你有用。