• CVPの冗長性-クォーラムクラスタについて-

 
 
Print Friendly, PDF & Email

はじめに

我々ネットワークエンジニアは冗長性の確保に関してはVRRPなどの手法に慣れている為、データベースシステムで行わるQuarum(クォーラム:定足数)クラスタ方式などに馴染みが無い方も多い。

本Blogでは従来のネットワークの冗長性の提供方法とCVPのクォーラムクラスタに関して説明し、理解を深めることを目的とする。

VRRPについて

VRRPは標準技術であり、非常に多く使われている。

定期的にHelloパケットを送ることで隣接ノードの存在を認識し、プライオリティによりマスターを選出し、他のノードはバックアップとして動作する。

  VRRPでは完全なマスター/バックアップという関係になり、バックアップも各端末のMACアドレスやARP情報などを同期していない。

またHelloパケットが送られるインターフェースと実際のパケット転送に使われるインターフェースは同一のもの(in-bandシグナル)になる。

MLAGについて

MLAGは二台のシャーシにて、接続装置にActive-Activeの冗長性を提供するアリスタ独自の技術になる。

接続する装置からは1つのシャーシに見え、LAG(Link Aggregation) IEEE 802.3adの機能のみで接続出来る。

MLAGでは実際にパケットが流れるインターフェース以外のPeer Link上でHeartbeatメッセージをやり取りをし、mlagピアリンク間で学習したMACアドレスなどは同期する。

プライマリとセカンダリの選出を行い、プライマリはLACPやSTPなどのやり取りを受け持つ。

PeerLinkダウンやプライマリとのHeatbeatメッセージのやり取りが途絶えた時、ペアがダウンしたと判断し、セカンダリはプライマリとして動作し始める。

もし、プライマリノードがダウンせずにPeer Linkのみがダウンした際には両方のノードがプライマリになる状態となる。いわゆるスプリットブレインの状態に陥る。

これを検出する為に管理ポートを使って双方がプライマリになってるのを検出し、もともとセカンダリだったMLAGのインターフェースを無効化する機能も追加されている。

CVPのクォーラムクラスタについて

本題に入るが、ここまででVRRP/MLAGといったネットワーク装置での冗長性手法に関して記載をしてきた。

システムの冗長性においてポイントになるのは下記となる。

  • 同期する情報の有無
  • 監視方法(in-band/out-band)
  • スプリットブレインの際の対処方法

CVPはバックエンドではZookeeper, Hadoop/HDFSや HBaseなどの分散コンポーネントを利用し、システムを構築している。

このためCVPクラスタ上では様々な情報を同期する必要がある。

クォーラムクラスタではシステムの整合性を取る為に各ノードはVote(投票権)を持つ。

システムとして3票持っており、整合性が完全に取れている。

 

1つのノードが落ちた時、例えネットワークの障害でシステムが分断しただけであったとしても、整合性を証明するもう1つのノードが存在する為、システムの整合性は保たれ正常に動作する。

2台のノードが落ちた時、システムとしての整合性を証明するノードはいない為、CVPは動作を停止する。

これがCVPがシングルノードで動作するのにも関わらず、マルチノードクラスタでは2台の障害には耐えられない理由となる。

 

まとめ

ネットワークエンジニアの方がCVPを構築した時によく陥る疑問CVPクラスタの冗長性について、従来のネットワークの冗長性と比較しながら説明をしてみた。

Follow

Get every new post on this blog delivered to your Inbox.

Join other followers: