F5 BIG-IP Virtual Edition を AWSで使う:Multi-AZ HA構成編
こんにちは、菊池です。
F5 BIG-IP on AWSの続編ということで、BIG-IP VEをMulti-AZで冗長化する構成を紹介します。前回のシングル構成での構築ができている前提での構築手順となりますので、前回の記事を合わせて参照ください。
システム構成
システム構成です。
2つのAZ-a/cに、BIG-IP VE001/002をそれぞれ配置します。以下の図の右半分が今回新規に構築する部分です。
BIG-IP VEのMulti-AZ構成では、Virtual Serverに割り当てたセカンダリIPに紐付くEIPを2台のBIG-IP VE間で付け替えすることでフェイルオーバーを実現します。
構築手順
それでは実際に構築していきます。一部、前回のBIG-IP VE 001と同じ手順となる部分は省略していますので、シングル構成編を合わせてご確認ください。
手順サマリ
- BIG-IP VE 002 のローンチ
- IPアドレスの設定
- SecurityGroupの変更
- IAMユーザ作成/アクセスキー・シークレットキーの取得
- BIG-IP VE の設定
- システム基本設定
- VLANの作成
- IPアドレスの設定
- Routeの設定
- Device Managementの設定
- IPアドレスの設定(BIG-IP VE 001)
- 冗長化の設定
- Virtual Serverの作成
- フェイルオーバーの設定
- フェイルオーバー動作の確認
1. BIG-IP VE 002のローンチ
まずはBIG-IP VE 002となるEC2インスタンスをローンチします。IPアドレス、サブネット配置(AZ)のみの違い以外は001と同じ手順となりますので省略します。
以下のように、AZ-C、プライベートIPに10.0.1.202と10.0.5.202となるように設定の上、起動します。
1-1. IPアドレスの設定
続けて、Virtual Server用のプライベートIPを設定します。セカンダリIPとして10.0.5.102を設定します。
2つのプライベートIP(プライマリIP)にEIPを割り当てます。Virtual Server用のEIPは、BIG-IP VE 001と共用しますので、ここでは割り当てしません。
もしすでに他でEIPを使用している場合、1リージョンあたりデフォルトで利用可能なEIPの上限5つに引っかかりますので、サポートから上限緩和申請をしておきましょう。
1-2. SecurityGroupの設定
BIG-IP VE 001/002に割り当てているSecurity Groupの設定です。設定の同期、ヘルスチェックに必要な通信許可を追加します。ICMPをすべての範囲で、TCP:4353、UDP:1026をVPC内で許可します。
1-3. IAMユーザの作成/アクセスキー・シークレットキーの取得
BIG-IP VEのフェイルオーバー動作では、EIPを制御するためにAWSのAPIから操作します。そのための権限が必要となりますので、IAMユーザーを作成し、アクセスキー/シークレットキーのCSVファイルをダウンロードしておきます。今回は簡単にするためにポリシーにEC2 Full Controlの権限をつけています。
2. BIG-IP VE の設定
BIG-IP VEの設定を行います。
2-1. システム基本設定
まずは、新しくローンチしたAZ-cのBIG-IP VE 002の基本設定です。
SSHで管理用IPに接続し、パスワードを変更/保存します。(詳細はシングル構成編の記事を参照)変更ができたら、ブラウザからHTTPSで接続します。以下の画面が表示されたら、Username: adminと設定したPasswordでログインします。
Setup Utilityが表示されますので、BIG-IP VE 001の時と同様に画面に従ってライセンスキーの入力、アプティベーションを行いましょう。
機能の確認、デフォルト証明書の確認の次に進みます。管理用IPの設定ですが、Manualを選択してIPアドレス/サブネット、ホスト名(FQDN)、タイムゾーン、パスワードを入力して、次へ進みます。
初期画面に戻りますので再度ログインします。
FinishedでSetup Utilityを完了します。
2-2. VLANの作成
続いて、VLANの作成です。左メニューからVLANsを選択し、Create。
下図のように入力し、完了。
2-3. IPアドレスの設定
サービス用のIPアドレスを設定します。左メニューのSelf IPsから、Createを選択。
下図のように入力。クラスタ用にTCP:4353、UDP:1026を許可します。
2-4. Routeの設定
Routenの設定です。HA構成では設定を同期しますが、サブネットの異なる環境ではデフォルトルートも異なるため、同期対象から除外する必要があります。そのためにまずは、新規のパーテーションを作成しますので、Users -> Partition Listと進みます。
Createを選択。
任意の名前を入力し、以下のようにDevice Groupから除外します。
作成できたら、左メニューのRoutesに進みますが、右上のPartitionで、先ほど作成したLOCAL_ONLYを選択した状態でAddします。
任意の名前を入れて設定を入力。
2-5. Device Managementの設定
いよいよHAクラスタの設定に入ります。まずは右上のPartitionをCommonに戻しておきます。左メニューのDevicesから、BIG-IP VE 002を選択します。
Device ConnectivityタブからConfigSyncを選択。
10.0.5.202を選択してUpdate。
Device ConnectivityタブからFailover Networkを選択。
10.0.5.202を選択してFinished。
2-6. IPアドレスの設定(BIG-IP VE 001)
次に、前回シングル構成で作成したAZ-aにある、BIG-IP VE 001側の設定変更です。
左メニューのPlatformから、IPアドレスを下図のようにManualで設定します。
左メニューのSelf IPsから、作成済みのexternal-ipを選択。
クラスタ通信用に許可を追加します。
続けてRoutesの設定。002と同様に、デフォルトルートを同期対象から外す必要があるため、一度既存のルートを削除します。
002と同様にPartitionを追加します。
同様に設定。
PartitionをLOCAL_ONLYにしてRoutesを追加します。
デフォルトルートを設定。
2-7. 冗長化の設定
同じくBIG-IP VE 001での設定です。PartitionをCommonに戻し、左メニューのDevicesから自身を選択。
Device ConnectivityタブからConfigSyncを選択。
10.0.4.201を選択してUpdate。
Device ConnectivityタブからFailover Networkを選択。
10.0.4.201を選択してFinished。
左メニューのDevice Trustから、Peer Listを選択。
BIG-IP VE 002の管理IP(10.0.1.202)、管理ユーザ、パスワードを入力し、Retrieve Device Informationを選択。
Finishedを選択。
Device GroupsからCreate。
任意の名前を入力し、以下のように設定。
クラスタが作成され、デフォルトではIPが若い001がStandbyになります。
Overviewから、Sync Statusが以下のようにグリーンになって入れば設定が同期されています。
2-8. Virtual Serverの作成
BIG-IP VE 002側にVirtual Serverを作成します。設定は同期されていますのでどちらからでも作業可能です。
左メニューのVirtual ServersからCreate。
以下の図のように設定していきます。
2つのVirtual Serverが作成されました。
Virtual Address Listのタブから、10.0.4.101を選択します。
下図のようにTraffic Groupのチェックを外し、Noneを選択します。
同様に、10.0.5.102の方でも同じ設定をします。
Traffic Groupの項目が両方ともnoneとなってることを確認します。
2-9. フェイルオーバーの設定
フェイルオーバー時にEIPが付け替えされるように設定します。
左メニューのConfigurationsから、AWS -> Global Settingsを選択。
あらかじめダウンロードしてあった、IAMユーザのアクセスキー・シークレットキーを入力します。
次に、切り替えを制御するiAppの設定です。設定するiAppテンプレートはF5の公式コミュニティであるDevCentralからダウンロード可能です(要ユーザ登録)
今回は、ここからAWS Advanced HA iApp(f5.aws_advanced_ha.v1.0.1rc1.tmpl)をダウンロードしました。
左メニューのTemplatesから、importを選択。
DevCentralからダウンロードしたf5.aws_advanced_ha.v1.0.1rc1.tmplをアップロードします。
アップロードしたテンプレートを選択し、Create。
左メニューのApplication ServicesからCreateを選択。
任意の名前を入れて、テンプレートを選択。以下のように設定します。
AZ-cの002で、Application Servicesから、作成した名前を選択。
Reconfigureタブから設定が同期されていることを確認し、finished。
最後に、現在002がActiveとなっていますので、001をActiveに切り替えます。左メニューのTraffice Groupsから、トグループを選択してForce to Standbyを選択。
以下の画面になりますので、もう一度Force to Standbyを選択。
以上ですべての設定が完了です。
3. フェイルオーバー動作の確認
フェイルオーバー動作を確認します。先ほどの切り替え前では、Virtual ServerのEIP(52.198.174.xx)はAZ-Cの002側のプライベートIP(10.0.5.202)に割り当てられています。
フェイルオーバーを実行し、AZ-Aの001がActiveになったあと、再度EIPの割り当てを確認すると、
以下のように、AZ-Aの001のプライベートIP(10.0.4.201)にVirtual ServerのEIP(52.198.174.xx)が付け変わります。
この前後でブラウザでアクセスし、WordPressのページが表示されて入ればうまく切り替わっています。
まとめ
以上、2回に分けてBIG-IP VEをAWSで利用する設定手順を紹介しました。
注意点として、今回紹介したMulti-AZ環境でのHA構成では、オンプレでのHAクラスタのようにセッションの同期はサポートされていません。切り替え時には一度接続がリセットされますのでご注意ください。オンプレから比較すると機能低下のように感じるかもしれませんが、Multi-AZでのフェイルオーバーがデータセンターレベルの切り替え発生に相当することを考慮すれば、むしろ耐障害性は向上しているとも言えます。
ELB/ALBでは満たせない機能要件を使いたい場合やオンプレ環境のアプリケーションをそのままAWSで使いたい場合には選択肢になるでしょう。