F5 BIG-IP Virtual Edition を AWSで使う:シングル構成編

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、菊池です。

AWSでロードバランサーといえばELB/ALBが一般的かと思いますが、オンプレ環境のインフラエンジニアには馴染み深いのがF5社製のBIG-IPです。今回、EC2で稼働するBIG-IP Virtual Edition (VE) を評価ライセンスで試す機会がありましたので、シングル構成およびMulti-AZでのHA構成を構築してみました。

今回はシングル構成での構築手順を紹介いたします。

2016/11/12 追記:Multi-AZ HA構成の記事を公開しました。

F5 BIG-IP とは

F5 BIG-IP といえばロードバランサのアプライアンスというイメージですが、それ以外にもFirewallやWAF、認証機能といった機能を持っており、アプリケーションサービスのセキュリティ/可用性をL4-L7で統合管理可能なプラットフォームです。

機能ごとにライセンスが分かれていて、それぞれ有効化することでその機能を利用可能になります。主な機能として以下のようなものがあります。

  • LTM (Local Traffic Manager):ロードバランサ機能
  • ASM (Application Security Manager):WAF/L7でのDDoS対策
  • APM (Access Policy Manager):高度な認証連携
  • AFM (Advanced Firewall Manager):Firewall/L4以下でのDDoS対策

今回はロードバランス機能であるLTMについて検証しました。

また、ロードバランサとしての機能として、AWSのELB/ALBと比較すると、以下のような優位性があります。

  • iRuleを用いた高度な処理(レスポンスボディによる処理や高度なパーシステンス)
  • オンプレミスで使っている場合の移行
  • クライアント証明書を使った認証が可能
  • ソースNATせずにクライアントIPをそのままでサーバにアクセス可能
  • 帯域制御
  • 5xxエラーをクライアントに返さず、Sorryページを返すことができる
  • リアルタイムに詳細なログ出力が可能

マネージドサービスであるELB/ALBを使うことによるコストや運用負荷と比較・検討し、うまく選択するとよいでしょう。

構成

構築するシステムの構成は以下の図のようになります。

bip-000

インターネットに直接通信可能なPublic SubnetにBIG-IP VE 001のEC2インスタンスを配置し、Private SubnetにあるWordPressのインスタンスに対するアクセスを負荷分散します。

特徴的な点は、Public Subnetを2つ用意し、BIG-IPの管理ネットワークと、VirtualServerが待ち受けるサービス用のネットワークを分離するため、ENI (ネットワークIF)を2つアタッチすることです。また、サービス用のネットワークにはIPを2つ(プライマリ/セカンダリ)割り当て、パブリックIPであるEIPもそれぞれ付与します。

構築手順

手順サマリ

  1. EC2インスタンスの作成
    1. BIG-IP VEのローンチ
    2. WordPressのローンチ
  2. BIG-IP VEの設定
    1. システム基本設定とライセンスの登録
    2. VLANの作成
    3. IPアドレスの設定
    4. Routeの設定
    5. Poolの作成
    6. Virtual Serverの作成
  3. 接続確認

なお、前述の図のようなVPC/Subnet/RouteTableは作成済みの前提です。

1. EC2インスタンスの作成

1-1. BIG-IP VEのローンチ

まずはマネジメントコンソールからインスタンスを作成します。F5 BIG-IP Virtual Edition Best (BYOL)のイメージを選択しました。

bip-001

ライセンスの確認がありますので、Continueを選択して進めます。

bip-002

インスタンスタイプの選択。今回選択したイメージでは最小でもm4.2xlargeでした。

bip-003-0

インスタンスの詳細で、ネットワークインターフェースを2つアタッチします。eth0が管理用eth1がサービス用になります。プライマリIPも固定で割り当てます。

bip-003-1

ストレージの選択。デフォルトで問題ありませんが、検証用なので削除忘れがないように"合わせて削除"にチェックを入れておきます。

bip-004

任意の名前をつけておきます。

bip-005

セキュリティグループです。SSH用に自分のIPを設定します。設定はSSHの他にHTTPSを使います。また、サービスで使うHTTPも解放しました。

bip-006

問題なければ、作成します。

bip-007

無事ローンチされたら、サービス用のネットワークインターフェース(ENI)にセカンダリIPを設定します。"プライベートIPアドレスの管理"を選択。

bip-008

Virtual Server用にセカンダリIPを割り当てます。

bip-009

これで、BIG-IPのインスタンスには、管理用(eth0のプライマリIP)、サービス用(eth1のプライマリIP)、Virtual Server用(eth1のセカンダリIP)の3つのプライベートIPが付与されています。この3つ全てに対し、パブリックIPとしてEIPを割り当てます。

bip-010

ここまでで、BIG-IP VEのローンチは完了です。

1-2. WordPressのローンチ

続けて、WordPressのサーバ2台をローンチします。WordPress powered by Bitnami のイメージを選択しました。(検証用なので、HTTPのリクエストを返してくれればなんでも構いません)

bip-011

インスタンス数を2にして、一度にローンチします。

bip-012

サブネットがPrivateになるようにだけ間違えないようにしましょう。他はデフォルトで問題ありません。

2. BIG-IP VEの設定

BIG-IP VEの設定に移ります。

2-1. システム基本設定とライセンスの登録

まずはBIG-IP VEの管理用IPに対し、SSHで接続します。ユーザ名はadminで、ローンチ時に指定したキーペアを使ってログインします。

$ ssh -i ****.pem admin@52.***.***.***
admin@(ip-10-0-0-201)(cfg-sync )(NO LICENSE)(/Common)(tmos)#

パスワードを変更。

admin@(ip-10-0-0-201)(cfg-sync Standalone)(NO LICENSE)(/Common)(tmos)# modify auth password admin
changing password for admin
new password:
confirm password:

変更を保存します。

admin@(ip-10-0-0-201)(cfg-sync Standalone)(NO LICENSE)(/Common)(tmos)# save sys config
Saving running configuration...
  /config/bigip.conf
  /config/bigip_base.conf
  /config/bigip_user.conf
Saving Ethernet mapping...done
admin@(ip-10-0-0-201)(cfg-sync Standalone)(NO LICENSE)(/Common)(tmos)#

パスワードが設定できたら、ブラウザを使って管理用IPにHTTPSで接続しましょう。ブラウザで証明書の警告が出ますが、続行すると以下のようなログイン画面が出てきます。Usernameにadmin、Passwordは先ほど設定したものを入力します。

bip-013

Setup Utilityの画面になりますので、Nextを選択

bip-014

ライセンスキーを入力し、Activation MethodAutomaticにして進みます。

bip-015

ライセンス条文が出てきますので確認の上、Accept

bip-016

しばらくするとアクティベーションが完了します。

bip-017

有効な機能/ライセンスが表示されますので、そのまま下に進み、

bip-018

Nextを選択。

bip-019

デフォルトの証明書が表示されます。そのまま次へ。

bip-020

ホスト名(FQDN)、タイムゾーン、パスワードを入力し、次へ進みます。

bip-021

一旦、ログイン画面に戻りますので、再度ログインします。

bip-022

続けての設定項目もありますが、Finishで終了します。

bip-023

初期画面に遷移します。

bip-024

2-2. VLANの作成

左のメニューから、VLANsを選択し、Createをクリック。

bip-025

任意のVLAN名を入れ、下図のようにInterfaceを設定します。

bip-026

2-3. IPアドレスの設定

左のSelf IPs を選択し、Createをクリック。

bip-027

任意の名前、IPアドレス/VLANを設定します。

bip-028

2-4. Routeの設定

左のメニューからRoutesを選択し、Addをクリック。

bip-029

任意の名前、宛先(0.0.0.0/0)、GWアドレスを入力します。GWアドレスは、AWSで予約されているサブネットの先頭IPになります。

bip-030

2-5. Poolの作成

左のメニューから、Poolsを選択し、Createをクリック。

bip-031

任意の名前、ヘルスモニタ、メンバーを以下のように設定します。

bip-032

作成できたPool名をクリックします。

bip-033

Membersタブを選択し、2台のWordPressサーバのStatusがグリーンになっていればOKです。

bip-034

2-6. Virtual Serverの作成

左のメニューから、Virtual Serversを選択し、Createをクリック。

bip-035

名前、IP/Port、プロファイル、Source Address Transition、Poolを以下のように設定。

bip-036

bip-037

bip-038

以上でBIG-IP VEの設定は完了です。

接続確認

Virtual Serverに設定したIP(パブリックIPに設定したEIP)にブラウザからHTTPでアクセスしましょう。

以下のようにWordPressの画面が表示されればOKです。

bip-039

まとめ

いかがでしたでしょうか。普段、ELB/ALBに慣れていると、設定項目が多くて難しく感じるかもしれません。しかし、オンプレミス環境でBIG-IPの設定に慣れているエンジニアの方は、慣れ親しんだ設定でAWSでもBIG-IPが利用可能です。

次は、AWSで本番環境で使うのであれば必須といえる、Multi-AZでの冗長構成を試してみたいと思います。