1. はじめに
前回、IBM Cloud: VPCにF5 BIG-IP Virtual Editionを導入してみたという記事で、IBM CloudのVPC上にF5 BIG-IP Virtual Editionをデプロイしました。
本稿では、設定を追加してF5 BIG-IP経由でWebサーバーの負荷分散をしてみたいと思います。
2. NW構成
F5のインターフェース情報は以下のようになっていたが、今回はアプリケーション処理をするためには1つ目のdata-1-1しか使わないことにする(one-arm構成。そもそも別Availability Zoneへの割り振りもしたいので)。
3. IBM Cloud(VPC)の設定
3-1. Webサーバーの構築
(省略)
3-2. Custom Routeの設定(Virtual IPの作成)
将来BIG-IPでHA構成にする場合、そのStandby側のサーバーにもまったく同じアドレスでクライアントからアクセスしたい。そのために、192.168.10.10
というアドレス宛へのパケットは172.16.5.7に転送されるようにVPCのcustom routeを構成しておき、もしBIG-IPに障害があった時にはcustom routeの設定を変えるだけでStandby側のBIG-IPにアクセスするように構成したい。
このあたりの手順は、IBM Cloud: VPC Custom Routesを利用したAZまたぎのHA環境の構成例(VPC内部からのアクセス)などに詳細に説明したので、参照のこと。
最終的には以下のような設定になり、private-to-privateの割り振りができることを確認した。
3-3 IP Spoofingの設定。
1-1のインターフェースで192.168.10.10というアドレスの送受信をする必要があるため、IP Spoofingを有効化させる必要がある。そのあたりの説明もIBM Cloud: VPC Custom Routesを利用したAZまたぎのHA環境の構成例(VPC内部からのアクセス)などを参照のこと。
4. BIG-IPの構成
4-1. Static Routeの構成
VPCでデプロイされたBIG-IPにおいて、Default Gatewayはmgmtインターフェースが利用されている。よって、デフォルト構成では別subnetとの通信にmgmtインターフェースが使われてしまう。
mgmtインターフェースにはFloating IPが割り当てられているため、Default Gatewayの変更までやるのは今回は敷居が高いと考え、まずは簡単に構成するために、Webサーバー宛のパケットは1.1側のGateway(つまり172.16.5.1)を利用するようにStatic Routeで構成する。
- Network -> Routesにて、「Create」を押下。
- Static Routeの設定(WebServer1用)。完了したらFinishedを押下。
- Static Routeの設定(WebServer2用)。完了したらFinishedを押下。
4-2. (Backend memberを登録する)Poolの作成
4-3. (ClientからのアクセスをListenする)Virtual Serverの構成
- Local Traffic -> Virtual Serversにて、「Create」を押下。
- 以下を入力してFinished.
(補足)Source Address TranslationのAuto Mapについて
以下はBIG-IPのマニュアルより引用
バーチャルサーバの仕組みについて
(途中略)
BIG-IPが、要求パケットのDestination IP Addressヘッダに含まれる宛先IPアドレス (つまり、バーチャルサーバのアドレス)を、選択されたノードの実際のアドレスに変更します。この場合、 パケットに含まれる送信元アドレス (つまり、 その接続を開始したクライアントのアドレス) は変更されずに残ります。
(途中略)
常にBIG-IP経由でサーバ応答が返されるよ うにするには、 サーバのデフォルト経路を内部VLANのセルフIPアドレスに設定する必要があります。サーバがBIG-IPとは別のネッ トワーク上に置かれており、この設定ができない場合は、SNATを作成することが可能です。
(途中略)
SNAT automapというBIG-IPの機能を利用してSNATを作成する方法もあります。SNAT automap機能では、BIG-IP自身のIPアドレスからいずれか1つ(通常は出力VLANのフローティングセルフIPアドレス) が自動的に選択され、 オリジナルIPアドレスまたはSNAT作成時に指定したアドレスにそれがマップされます。この機能を使用すると、 変換アドレスを明示的に指定する必要がなくなります。
5. テスト
VPC上のサーバーからアクセステスト
[root@syssuda5-vpc2 ~]# curl 192.168.10.10
tokyo1-web1
[root@syssuda5-vpc2 ~]# curl 192.168.10.10
tokyo2-web1
[root@syssuda5-vpc2 ~]# curl -I 192.168.10.10
HTTP/1.1 200 OK
Date: Wed, 02 Dec 2020 06:54:35 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips
Last-Modified: Mon, 30 Nov 2020 01:02:49 GMT
ETag: "c-5b54891aea968"
Accept-Ranges: bytes
Content-Length: 12
Content-Type: text/html; charset=UTF-8