BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【AWS】AWS上でのHAクラスタ構成~スプリットブレインの対応について~

コンニチハ、BFT名古屋支店のヤタテです。 今回は、AWS上でHAクラスタを組んだ場合にスプリットブレインに対応する方法について書いてみたいと思います。

はじめに

スプリットブレインを知らない方は以下のWiki参照お願いします。

ja.wikipedia.org

かいつまんで言うと、クラスタを構成するサーバ同士お互いどちらが生きているのか分からなくなって両方がサービスを起動してしまうリスクの事です。 この状態を回避する為にはオンプレミス構成では、一番確実な方法として共有ディスクを使用したロックディスク獲得方式が一般的です。 これは、共有ディスク上に設けられたロックディスクを獲得した方が稼働系として生きのこるというもので、早い者勝ちで残存ノードが決まります。

この仕組みをAWSクラスタを組んだ場合にも使用したい為、EBSを使用して実現できそうにも思えるのですが、EBSはAZを跨って付け替え できないという仕様がありAZを跨ったクラスタ構成が実現できません。

AZを跨げないとAZ障害に対応できない為、そもそもクラスタ構成の意味もなくなってしまいます。

ではどうするか

ここでは良く使われるクラスタソフトである、LifeKeeperとPacemakerについて簡単に説明したいと思います。 まずLifeKeeperでは「Quorum モードの TCP_REMOTE 設定」を使用するのが良さそうです。 tcp_remote モード - SIOS Protection Suite for Linux - 9.5.1

クラスタ構成サーバ以外に複数のTCP到達可能ホストが必要なのでそこは要設計ですね。

Pacemakerではクォーラムデバイスを使用するのが良さそうです。 こちらもクラスタ構成ノード以外にサーバが必要となりますので、他にEC2サーバがあると良さそうです。 access.redhat.com

おわりに

そもそも、AWS上でHAクラスタを組むってどうなんだって思いますが、オンプレからのリフト要件等でやむを得ない場合もあるかと思います。 そんな時に、オンプレでは当たり前のようにある共有ディスクストレージが使えないAWS環境でのスプリットブレイン対策について少しでも 参考になれば幸いです。