Reliability:
A single ZooKeeper server (standalone) is essentially a coordinator with
no reliability (a single serving node failure brings down the ZK service).
A 3 server ensemble (you need to jump to 3 and not 2 because ZK works
based on simple majority voting) allows for a single server to fail and
the service will still be available.
So if you want reliability go with at least 3. We typically recommend
having 5 servers in "online" production serving environments. This allows
you to take 1 server out of service (say planned maintenance) and still
be able to sustain an unexpected outage of one of the remaining servers
w/o interruption of the service.
3サーバーのアンサンブルでは、1台のサーバーがローテーションから外され、1台のサーバーで予期しない停止が発生した場合でも、サービスの中断がないことを保証するサーバーが1台残っています。では、なぜ5台のサーバーが必要なのでしょうか。それとも、検討されているのは単なるサービスの中断以上のものですか?
アップデート:
クォーラムの維持に関係していることを指摘してくれた@sbridgesに感謝します。また、ZKがクォーラムを定義する方法はceil(N/2)
、アンサンブル内N
の元の番号です(現在使用可能なセットだけではありません)。
さて、ZKクォーラムのグーグル検索はZKのHBase本の章でこれを見つけます:
ZooKeeperでは、偶数のピアがサポートされていますが、偶数のサイズのアンサンブルでは、それに比例して、奇数のサイズのアンサンブルよりも多くのピアがクォーラムを形成する必要があるため、通常は使用されません。たとえば、4つのピアを持つアンサンブルはクォーラムを形成するために3を必要としますが、5つのピアを持つアンサンブルもクォーラムを形成するために3を必要とします。したがって、アンサンブル5を使用すると、2つのピアに障害が発生してもクォーラムを維持できるため、ダウンピアを1つだけ許可する4のアンサンブルよりもフォールトトレラントになります。
そして、エドワードJ.ユンのブログでのウィキペディアのこの言い換え:
通常、これはそこにいると予想される人々の大多数ですが、多くの団体はより低いまたはより高い定足数を持っている可能性があります。