F5 BIG-IP Virtual Edition を AWSで使う:シングル構成編
こんにちは、菊池です。
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を使うことによるコストや運用負荷と比較・検討し、うまく選択するとよいでしょう。
構成
構築するシステムの構成は以下の図のようになります。
インターネットに直接通信可能なPublic SubnetにBIG-IP VE 001のEC2インスタンスを配置し、Private SubnetにあるWordPressのインスタンスに対するアクセスを負荷分散します。
特徴的な点は、Public Subnetを2つ用意し、BIG-IPの管理ネットワークと、VirtualServerが待ち受けるサービス用のネットワークを分離するため、ENI (ネットワークIF)を2つアタッチすることです。また、サービス用のネットワークにはIPを2つ(プライマリ/セカンダリ)割り当て、パブリックIPであるEIPもそれぞれ付与します。
構築手順
手順サマリ
- EC2インスタンスの作成
- BIG-IP VEのローンチ
- WordPressのローンチ
- BIG-IP VEの設定
- システム基本設定とライセンスの登録
- VLANの作成
- IPアドレスの設定
- Routeの設定
- Poolの作成
- Virtual Serverの作成
- 接続確認
なお、前述の図のようなVPC/Subnet/RouteTableは作成済みの前提です。
1. EC2インスタンスの作成
1-1. BIG-IP VEのローンチ
まずはマネジメントコンソールからインスタンスを作成します。F5 BIG-IP Virtual Edition Best (BYOL)のイメージを選択しました。
ライセンスの確認がありますので、Continueを選択して進めます。
インスタンスタイプの選択。今回選択したイメージでは最小でもm4.2xlargeでした。
インスタンスの詳細で、ネットワークインターフェースを2つアタッチします。eth0が管理用、eth1がサービス用になります。プライマリIPも固定で割り当てます。
ストレージの選択。デフォルトで問題ありませんが、検証用なので削除忘れがないように"合わせて削除"にチェックを入れておきます。
任意の名前をつけておきます。
セキュリティグループです。SSH用に自分のIPを設定します。設定はSSHの他にHTTPSを使います。また、サービスで使うHTTPも解放しました。
問題なければ、作成します。
無事ローンチされたら、サービス用のネットワークインターフェース(ENI)にセカンダリIPを設定します。"プライベートIPアドレスの管理"を選択。
Virtual Server用にセカンダリIPを割り当てます。
これで、BIG-IPのインスタンスには、管理用(eth0のプライマリIP)、サービス用(eth1のプライマリIP)、Virtual Server用(eth1のセカンダリIP)の3つのプライベートIPが付与されています。この3つ全てに対し、パブリックIPとしてEIPを割り当てます。
ここまでで、BIG-IP VEのローンチは完了です。
1-2. WordPressのローンチ
続けて、WordPressのサーバ2台をローンチします。WordPress powered by Bitnami のイメージを選択しました。(検証用なので、HTTPのリクエストを返してくれればなんでも構いません)
インスタンス数を2にして、一度にローンチします。
サブネットが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は先ほど設定したものを入力します。
Setup Utilityの画面になりますので、Nextを選択
ライセンスキーを入力し、Activation MethodをAutomaticにして進みます。
ライセンス条文が出てきますので確認の上、Accept。
しばらくするとアクティベーションが完了します。
有効な機能/ライセンスが表示されますので、そのまま下に進み、
Nextを選択。
デフォルトの証明書が表示されます。そのまま次へ。
ホスト名(FQDN)、タイムゾーン、パスワードを入力し、次へ進みます。
一旦、ログイン画面に戻りますので、再度ログインします。
続けての設定項目もありますが、Finishで終了します。
初期画面に遷移します。
2-2. VLANの作成
左のメニューから、VLANsを選択し、Createをクリック。
任意のVLAN名を入れ、下図のようにInterfaceを設定します。
2-3. IPアドレスの設定
左のSelf IPs を選択し、Createをクリック。
任意の名前、IPアドレス/VLANを設定します。
2-4. Routeの設定
左のメニューからRoutesを選択し、Addをクリック。
任意の名前、宛先(0.0.0.0/0)、GWアドレスを入力します。GWアドレスは、AWSで予約されているサブネットの先頭IPになります。
2-5. Poolの作成
左のメニューから、Poolsを選択し、Createをクリック。
任意の名前、ヘルスモニタ、メンバーを以下のように設定します。
作成できたPool名をクリックします。
Membersタブを選択し、2台のWordPressサーバのStatusがグリーンになっていればOKです。
2-6. Virtual Serverの作成
左のメニューから、Virtual Serversを選択し、Createをクリック。
名前、IP/Port、プロファイル、Source Address Transition、Poolを以下のように設定。
以上でBIG-IP VEの設定は完了です。
接続確認
Virtual Serverに設定したIP(パブリックIPに設定したEIP)にブラウザからHTTPでアクセスしましょう。
以下のようにWordPressの画面が表示されればOKです。
まとめ
いかがでしたでしょうか。普段、ELB/ALBに慣れていると、設定項目が多くて難しく感じるかもしれません。しかし、オンプレミス環境でBIG-IPの設定に慣れているエンジニアの方は、慣れ親しんだ設定でAWSでもBIG-IPが利用可能です。
次は、AWSで本番環境で使うのであれば必須といえる、Multi-AZでの冗長構成を試してみたいと思います。