web-dev-qa-db-ja.com

メンテナンスのために3ノードのApachePulsarクラスターから1つのノードを削除しても安全ですか?

私は3台のマシンのパルサークラスターを持っています。それぞれがPulsarブローカー、Zookeeper、Bookkeeperを実行しています。私のbroker.confには次のものがあります。

managedLedgerDefaultEnsembleSize=2
managedLedgerDefaultWriteQuorum=2
managedLedgerDefaultAckQuorum=2

それで、サービスを中断することなく、3台のマシンのいずれかをしばらくの間ダウンさせることができるはずですよね?そして、私がそれを持ち出すとき、それはそれが逃したすべてのメッセージのコピーを手に入れますか?ライブクラスターに対してこれを行う前に、物事を正しく理解していることを確認したいだけです。ひどい週末はしたくない!

1
David Tinker

前の回答で(EnsembleSize、writeQuorum、AckQuorum)クォーラム値(2,2,2)の構成を見逃してしまったことをお詫びします。ブックメーカーが3つしかない場合、クォーラム(3,3,2)の下で1台のマシンをサポートしません。

ただし、クォーラム(2,2,2)を使用している場合でも、1台のマシンを取り外す前に、コマンドbin/bookkeeper Shell autorecovery -disableを使用してブックキーパーの自動回復をオフにし、マシンがbin/bookkeeper Shell autorecovery -enableを使用して戻ったときにオンにしてください。

オフに設定されていない場合、ブックキーパーには3つのデータコピーがあると予想されていたため、マシンがオフラインになるとブックキーパーは自動回復を実行しますが、現在は2つのコピーしかありません。また、回復されたコピーを配置するために使用可能な3番目のマシンを見つけることは成功しないため、自動回復は失敗します。

Bookeeper自動回復の詳細については、 このリンク を確認できます。コンテンツの一部は次のとおりです。

AutoRecoveryは、メンテナンス中など、いつでも無効にできます。 AutoRecoveryを無効にすると、ブックメーカーが更新されているときや構成が変更されている場合など、ブックメーカーが短時間だけ削除されたときに、ブックメーカーのデータが不必要に再複製されないようになります。

1
Jia Zhai