У меня есть кластер Pulsar из 3 машин. У каждого из них работает брокер Pulsar, Zookeeper и Bookkeeper. В моем broker.conf есть следующее:
managedLedgerDefaultEnsembleSize=2
managedLedgerDefaultWriteQuorum=2
managedLedgerDefaultAckQuorum=2
Значит, я могу на время отключить любую из трех машин без каких-либо перебоев в обслуживании, верно? И когда я подниму его, получит ли он копии всего пропущенного сообщения? Я просто хочу убедиться, что правильно понимаю вещи, прежде чем делать это с нашим живым кластером. Я не хочу, чтобы у меня были очень плохие выходные!
Извините за пропущенную настройку (EnsembleSize, writeQuorum, AckQuorum) значения кворума (2,2,2) в предыдущем ответе. Если только с 3 букмекерами, он не будет поддерживать одну машину при кворуме (3,3,2).
Но даже при кворуме (2,2,2) перед тем, как снять одну машину, убедитесь, что выключили авто-восстановление bookkeeper с помощью команды bin/bookkeeper shell autorecovery -disable
, и включите его, когда машина вернется, с помощью bin/bookkeeper shell autorecovery -enable
.
Если не выключить, бухгалтер выполнит авто-восстановление после того, как машина выключится, так как ожидалось, что у бухгалтера будет 3 копии данных, но теперь у него только 2 копии. А так как найти третью доступную машину для размещения восстановленной копии не удастся, то авто-восстановление будет неудачным.
Для получения более подробной информации об авто-восстановлении для бухгалтера вы можете посмотреть по этой ссылке. Вот часть содержимого:
Вы можете отключить авто-восстановление в любое время, например, во время обслуживания. Отключение авто-восстановления гарантирует, что данные букмекера не будут излишне реплицироваться, когда букмекер снимается только на короткий период времени, например, когда букмекер обновляется или конфигурация, если она была изменена.