Message-Queuing
從 3 節點 Apache Pulsar 集群中刪除一個節點進行維護是否安全?
我有一個由 3 台機器組成的 Pulsar 集群。每個執行 Pulsar 代理、Zookeeper 和 Bookkeeper。我的 broker.conf 中有以下內容:
managedLedgerDefaultEnsembleSize=2 managedLedgerDefaultWriteQuorum=2 managedLedgerDefaultAckQuorum=2
因此,我應該能夠將 3 台機器中的任何一台關閉一段時間而不會中斷服務,對吧?當我提出它時,它會得到它錯過的所有資訊的副本嗎?我只是想確保在對我們的實時集群執行此操作之前正確理解事物。我不想有一個非常糟糕的周末!
哦,很抱歉在上一個答案中錯過了 (2,2,2) 的 (EnsembleSize, writeQuorum, AckQuorum) 仲裁值的配置。如果只有 3 個 bookie,它將不支持低於 quorum (3,3,2) 的一台機器。
但即使在關閉一台機器之前使用 quorum (2,2,2),請務必使用 command 關閉 bookkeeper 自動恢復
bin/bookkeeper shell autorecovery -disable
,並在機器恢復時使用bin/bookkeeper shell autorecovery -enable
.如果不設置,bookkeeper 會在機器離線後自動恢復,因為 bookkeeper 本來應該有 3 個數據副本,但現在只有 2 個副本。並且由於找不到第三台可用的機器來放置恢復的副本,因此自動恢復將失敗。
有關 bookeeper 自動恢復的更多資訊,您可以查看此連結。以下是部分內容:
您可以隨時禁用自動恢復,例如在維護期間。禁用 AutoRecovery 可確保當 bookie 僅在短時間內被刪除時,不會不必要地重新複製 bookie 的數據,例如在更新 bookie 或更改配置時。