Elasticsearch

在 Elasticsearch 中備份舊索引

  • November 13, 2015

我們有一個 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。

現在,快照作業通過 curator 從客戶端機器上執行,請求本地發送到客戶端機器上執行的 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

有人可以在以下方面幫助我:-

  1. 可以像我們一樣在客戶端機器上執行 curator 作業嗎?
  2. 可以從一台機器上拍攝所有索引的快照嗎?
  3. 由於日誌是連續推送的,當快照創建和推送到 Amazon S3 進行時,是否會使集群不穩定?
  4. 人們從 Elasticsearch 備份舊索引時通常遵循哪些最佳實踐?

可以像我們一樣在客戶端機器上執行 curator 作業嗎?

是的,因為“客戶端”機器除了在您的 ES 集群上觸發 REST 請求並等待響應之外什麼都不做。

可以從一台機器上拍攝所有索引的快照嗎?

再次,是的。原因與第一個問題相同。

由於日誌是連續推送的,當快照創建和推送到 Amazon S3 進行時,是否會使集群不穩定?

根據快照和還原的 ES 文件

Snapshotting process is executed in non-blocking fashion. All indexing and searching 
operation can continue to be executed against the index that is being snapshotted.

索引速度可能會略微放緩,但根據您的機器規格,我認為它可能會很好,但除非您嘗試,否則真的沒有辦法知道。快照速度的限制因素可能是共享文件系統儲存庫的磁碟,以及 S3 儲存庫的 Internet 連接速度。

在使用 S3 儲存庫以及它如何影響流程方面,S3 儲存庫外掛的文件中沒有太多詳細資訊(例如,沒有)關於它的實際工作方式。我懷疑每個持有主分片的數據節點都會將其分片推送到儲存庫、S3 或其他地方。這意味著在對 S3 儲存庫執行快照時,ES 集群上的負載可能不會比對共享文件系統儲存庫的負載多。

再次,測試它,因為每個環境都是獨一無二的,對一個人有用的可能不適用於下一個。

從 Elasticsearch 備份舊索引時,人們通常遵循哪些最佳實踐?

我發現 ES 有很好的文件,並且有一個關於Snapshot And Restore的部分。在“最佳”實踐方面實際上並沒有太多,所以除非你在網上遇到其他一些資​​源,否則我會說你最好的選擇就是開始嘗試看看什麼對你有用。

引用自:https://serverfault.com/questions/736128