我有一个由 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 自动恢复的更多信息,您可以查看此链接。以下是部分内容: