IBM Cloud: F5 BIG-IP Virtual Edition on VPCでHTTPリクエストを負荷分散(private-to-private)してみた


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への割り振りもしたいので)。

今回構成したいNWの全体像は以下になる。

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の作成

  • Local Traffic -> Poolsにて、「Create」を押下。
  • 以下の入力をしてFinishedを押下。
    • Name
    • Health Monitors
    • Load Balancing Method
    • New Members(Node Name, Address, Service Port)
  • - Statusが緑色(正常)になっていることを確認

4-3. (ClientからのアクセスをListenする)Virtual Serverの構成

  • Local Traffic -> Virtual Serversにて、「Create」を押下。
  • 以下を入力してFinished.
    • Name
    • Destination Address(VIPである192.168.10.10を指定)
    • Service Port
    • HTTP Profile (Client) -> http
    • Source Address Translation -> Auto Map
    • Default Pool -> 先ほど作成したPool。

(補足)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