Hi, 想請教 ELK cluster 容錯問題,是這樣的,這是我的架構,有三台 ES
|----|| kibana-01 -- es-01 || # instance01
client -> nginx |----|| kibana-02 -- es-02 || # instance02
|----|| kibana-03 -- es-03 || # instance03
最近讀到 shard 與 replication,
shard 是把容量切片,比方說 1T 切成四片分散在主機
replication 是複製,把資料備份後存在跟 primary shard 不一樣的主機上。
預計我可能有 1T 左右的資料要儲存。
請問
那我設定上我是不是 不能
把 shard 設定切成3份?
這是因為 1T的資料量切成三份,在沒有副本的情況下,任何一台 es倒掉,假設他切成是
ABC三個部分,C的部分永遠也找不回來。
又假設,
replication 我就備份一份吧,應該就可以,感覺就沒問題了?
shard ABC
replication A-R1,B-R1,C-R1
一台機器倒下了,失去的是 A跟C-R1,這樣就可以拼的起來完整的 ABC
那我是不是可以這樣規劃
1T 的資料量,三台叢集每個給他 666GB 硬碟(1T/32 分片1副本),然後開一個 S3 使用 ELK 他們文件的 kibana 介面上的備份機制做備份,(所以估S3也是1T),最後怕死一點用 AWS snapshot 對三個主機分別做快照。
主機 | 容量 |
---|---|
es-1 | 666G |
es-2 | 666G |
es-3 | 666G |
. S3 | 1T |
我覺得對三台機器做快照沒有什麼意義,因為快照會有時差間,主機死掉後起來資料還是會消失。
不過既然都用 AWS 了,後續維護方便的話,硬碟沒有地端空間上限的問題,
好像三台都開1T不做 shard,只做複製1份的話,對主管他們理解比較容易,
這樣將會有一台主機是很閒的狀況,因為 replication 只會到同一台主機上
應該是不會到第三台主機上才對,(要做叢集投票,要基數個所以留著)
主機 | 容量 | 工作 |
---|---|---|
es-1 | 1T | 沒事做 |
es-2 | 1T | 副本1. |
es-3 | 1T | 主要. |
我最終的目標只是希望任何一台機器倒了,資料不要消失,服務不要停掉,災害復原能快點回來
其實我有在想要不要推 ELK cloud or aws openserach
但 ELK cloud 我按起來要 3萬一個月,aws opensearch 不是 ELK 最新版的,
都不想用...只好自建
你這樣建, 不就 Shard+Replica 都有了:
P0/R0 互為 Replica, P1/R1 互為 Replica, P2/R2 互為 Replica
Px 自己是總資料切成三份 Shard, Rx 則是這些 Shard 的 Replica:
https://nidhig631.medium.com/primary-shards-replica-shards-in-elasticsearch-269343324f86