こんにちは、技術2課の紅林です。好きなラバーはタキネスチョップです。
さて、以前、CLUSTERPROでElastic IP(以下、EIP)を用いたHAクラスタを組む方法をご紹介しました。
今回は、その際言及したCLUSTERPROで用意されているAWSリソースのもう1つの方法であるVirtual IP(以下、VIP)を用いた方法をご紹介します。
概要
EIPを用いた方式は、パブリックなサブネット上でサービスを提供する場合での使用が想定されています。
他方、VIPを用いた方式は社内向けのサーバ等、VPC内部にサービスを提供する場合での使用が想定されています。サービス提供用途のVIPをルートテーブルでアクティブ側のサーバにルーティングさせることでクラスタを実現します。
イメージを以下に示します。
VIPについて
今回クラスタを構成する2台のノードは異なるAZ(サブネット)に構築することを想定します。
同一のAZであれば、ENIの付け替えや、セカンダリIPの追加等によりVIPを共有する方法もあるかと思いますが、今回想定するケースでは、「送信元/送信先チェック」を無効化し、ルートテーブルによりアクティブ側のノードにルーティングを向けることによりVIPの共有を実現します。
(CLUSTERPROで提供されているAWSのVIPリソースの機能もこのケースが想定されており、実現に必要なAWSリソースの操作が自動で実行されます)
事前準備
- 2台のノードでCLUSTERPROによるクラスタが組めていること
- クラスタを組むノードは固定IPアドレス設定であること(DHCPではないこと)
- クラスタを組むノードはインターネットへ疎通可能であること(NATインスタンスを経由する等)
手順
1.「送信元/送信先チェック」の無効化
VIP宛のパケットを各インスタンスが受け取れるよう各インスタンスのENIの「送信元/送信先チェック」を無効化します。各インスタンス(またはENI)上で右クリックし、下図の通り、「送信元/送信先チェック」を押下します。
確認画面が出ますので、そのまま「無効化する」を押下します。
2.ルートテーブルへのVIPの追加
クラスタで用いるVIPをルートテーブルに追加します。クラスタが所属しているVPCのルートテーブルにVIPを「/32」でクラスタを構成するサーバのどちらかに向けてルートを追加しておきます。
この時用いるVIPはVPCの範囲外のIPアドレスである必要があります。
3.VIPリソースの追加
次からはCLUSTERPRO上での設定になります。Webマネージャ上で用いるフェイルオーバーグループ上で右クリックし、「リソースの追加」を押下します。
「タイプ」から「AWS仮想IPリソース」を選択し、「次へ」を押下します。
デフォルトのまま「次へ」を押下し、下図の画面まで進みます。
下図の画面で「IPアドレス」に先ほどルートテーブルに設定したIPアドレスを入力します。「VPC ID」「ENI ID」それぞれに、クラスタの所属するVPC IDと、サーバどちらかのENI IDを入力します。
また、各サーバのタブで、各サーバのENI ID等を入力します。
正しく設定出来たら下図の通り、リソース一覧に追加されます。
4.設定反映
下図の通り、「設定の反映」ボタンを押下し、確認画面で「OK」ボタンを押下し、設定を反映させます。
5.動作確認
以上で設定は完了です。
試しにWebマネージャ上で手動でフェイルオーバーさせてみましょう。下図の通り、「操作モード」で「移動」を押下します。クラスタの切り替えと同時にAWS上のルートテーブルも書き換わることがわかると思います。
まとめ
以上、AWS上で、CLUSTERPROでVIPを用いたHAクラスタを組む手順を紹介しました。別途スクリプトを組む必要無く、VIPの切り替えを行うことが出来ました。