はじめに
この記事は、以下を実現するために作成しました。
- VMware WorkStation ProでBIG-IPを冗長構成で構築する。
- BIG-IPを利用した実サーバ(リアルサーバ)へのアクセスを実現する。
- 2点を実現することで、本格的なロードバランサーの学習環境を提供する。
この記事で解説していること
Virtual-Serverを作成するまでに必要なステップを網羅しました。
GUIで設定します。
前回の記事

検証環境の構成図をおさらい
次の図となります。
この記事では、ロードバランサーの中核機能となる負荷分散を実現するために、Virtual-Serverを作成する方法について、順を追って解説します。設定項目が多岐に渡るので、馴染みが無いと情報量が多くて大変だと思われます。
今回の要件
以下の通りです。小難しいものは省きます。
①node zabbix-01:172.16.4.81 zabbix-02:172.16.4.82 ②使用するポート http(TCP 80) ③X-Forwarded-For:使用します。 ④Cookie:Insert-Cookie方式を使用します。 ⑤irule:今回は使用しません。 ⑥Virtual-ServerのIPアドレス:192.168.1.1 ⑦SNATのIPアドレス:192.168.2.1
表示画面の修正
System > Preferencesをクリックします。
以下の2つを修正します。
- Records Per Screen:1000へ変更。リストに一度に表示されるオブジェクトを増やすためです。
- Idle Time Before Automatic Logout:86400へ変更。時間経過によるログアウトを極力防ぐためです。
Monitorの作成
Local Traffic > Monitorsを選択します。
右上にあるCreateをクリックします。
Nameには『monitor-http』と入力してください。
Typeには『HTTP』を選択することで、HTTP Monitorの設定画面が表示されます。Parent Monitorを選択することで、指定したmonitorの設定を継承することができます。ここではデフォルトで作成されているhttpを選択します。
Configurationでは次のように設定します。
[説明] zabbixのdashboardへGETメソッドでアクセス。HTTP Responseとして200(正常)を受け取れば、ヘルスチェックが成功したと判断させます。 WebサーバはTCP:80(HTTP)でリッスンさせているので、Alias Service Portには80を指定します。 5秒間隔でアクセス。16秒間にHTTP Response Code 200を受けることができないと、ヘルスチェック失敗と判定します。 ・Interval:5 ・Timeout:16 ・Send String:GET /zabbix.php?action=dashboard.view&dashboardid=1\r\n ・Receive String:200 ・User Name:Admin ・Password:zabbix ・Alias Service Port:80
Nodeの作成
Local Traffic > Nodes を選択します。
右上にあるCreateをクリックします。
次のように入力します。
[説明] BIG-IP側でリアルサーバを認識させる必要があります。このために作成するのがNodeです。 NodeのIPアドレスはリアルサーバのIPアドレスとなります。 ただし、今回はVDOMを使用しているので、%"VDOMのID"をIPアドレスの末尾に付与する必要があります。 Nodeのヘルスチェックを行うことが可能です。複数のヘルスチェックを組み合わせることも可能です。 今回は、ICMPによるレイヤー3までの疎通確認を行うため、gateway_icmpを選択しています。icmpでも同様です。 ・Name:172.16.4.81%10 ・Description:zabbix-01 ・Address:172.16.4.81%10 ・Health Monitors:Node Specific ・Select Monitors:gateway_icmp
2号機(zabbix-02)も同様に作成します。IPアドレスのみ変更してください。
作成が完了したらリストに2台とも表示されることを確認します。
また、ステータスが正常、つまりBIG-IPのInternalのインタフェースからPINGが通ることも確認します。この時点でエラーですと、次のPOOLでもステータスが正常となりません。
Poolの作成
Local Traffic > Pools を選択します。
右上にあるCreateをクリックします。
次のように入力します。
[説明] リアルサーバをグループ化して、ヘルスチェックや負荷分散などの機能を提供します。 この時、Node+ポート番号の組み合わせのことを、プールメンバーと言います。 今回の場合、プールメンバーは2つ存在し、両方ともTCP:80(HTTP)がサービスポートとなります。 ヘルスチェックには、先ほど作成したmonitor-httpを指定することで、zabbixのdashboardへのアクセス可否を確認します。 負荷分散方式はデフォルトはRound Robinとなります。非常に種類が多いので詳細は割愛。 ・Name:POOL ・Description:zabbix ・Health Monitors:monitor-http ・Load Balancing Method:Round Robin ・New Members:Node Listから先ほど作成したnodeを選択し、Service Portに80を入力してAddを押す。
作成直後は、ステータスが以下の様になります
POOLをクリックして、Availabilityで緑マークが表示されていれば、無事にmonitor-httpによるヘルスチェックが成功しています。
SNAT Poolの作成
Local Traffic > Address Translation > SNAT Pool List を選択します。
右上にあるCreateをクリックします。
次のように入力します。
[説明] VDOMを使用してルーティングするため、SNATのセグメントから割り当てたIPアドレスの末尾に%IDを付与します。 ・Name:192.168.2.1%10 ・IP Address:192.168.2.1%10 を入力後、Addをクリック。
TCP Profileの作成
Local Traffic > Profiles > Protocol > tcp を選択します。
今回は検証用途のため新規作成しません。デフォルトのtcpプロファイルの中身を確認してみます。これを後で使用します。
見てもらうとわかりますが、設定可能な項目数が非常に多いです。
この中でも、Timer ManagementのIdle Timeoutは修正する機会が多いと思われます。気になる方は全ての項目について調べてみてください。TCPというプロトコルについて深い知見が得られます。
Connection SetupではデフォルトでTCP Fast Openが有効化されていることも確認できます。

Data Transferを確認すると、Delayed Acksが有効化されています。性能を求めるのであれば、こちらは無効化推奨です。Nagle’s Algorithmはデフォルトで無効化されていることも確認できます。

Congestion Controlは基本触ることないと思います。ただし、ここでは、任意の輻輳制御アルゴリズムをプルダウンから選択することが可能です。明示的輻輳通知(ECN)についても、デフォルトで有効化されています。Slow Startも有効化されています。


HTTP Profileの作成
Local Traffic > Profiles > Services > HTTP を選択します。
今回は検証用途のため新規作成しません。デフォルトのhttpプロファイルの中身を確認してみます。ただし、一部の設定を変更します。これを後で使用します。
こちらもTCPプロファイル同様に設定項目が多岐にわたります。
この中でも、Insert X-Forwarded-ForはEnabledにされているところが多いと思われます。
そうしないと、リアルサーバ側で本当の送信元のIPアドレスを認識できません。Virtual-Serverを通過する際にアドレス変換されるためです。
※ただし、構成次第ではアドレス変換しないケースもあるので、必ずしも有効化する必要はないです。
Enforcementはデフォルトのままで問題ありません。
sFlowもデフォルトで問題ありません。
HTTP Strict Transport SecurityもHTTPを使用しているため、デフォルトのままにします。
HTTPSを使用してVirtual-Serverへアクセスする場合は有効化しておいた方が無難です。
Persistence Profileの作成
Local Traffic > Profiles > Persistence を選択します。
今回は検証用途のため新規作成しません。デフォルトのcookieプロファイルの中身を確認してみます。
Cokkie methodを確認すると、『HTTP Cookie Insert』がデフォルトで選択されています。
負荷分散をする際に、同一ユーザーが初回にアクセスしたサーバと継続的に通信するために必要です。
また、HTTPOnly属性やSecure属性についても、デフォルトで有効化されていることを確認できます。

Virtual-Serverの作成
Local Traffic > Virtual Servers を選択します。
右上にあるCreateをクリックします。
次のように入力します。
Name:Virtual-Server
Description:zabbix
Source Address:0.0.0.0%10/0
Destination Address/Mask:192.168.1.1%10 ※図が誤ってます。
Service Port:80
Protocol:デフォルトのTCP。TCP ProfileやHTTP ProfileはデフォルトではClient側もServer側も同様のプロファイルが使用されます。 HTTP Profile(Client):httpに変更します。
HTTPSをリッスンポートとしてVirtual-Serverを作成する場合には、SSL Profile(Client)の設定が必須です。外部からの通信~Virtual-Serverの通信の暗号化が必要だからです。
また、Virtual-Server~リアルサーバの通信を暗号化する場合には、SSL Profile(Server)の設定が必須です。今回は、HTTPを使用するため、このままで問題ありません。
VLAN and Tunnel Trafficは、Enabled onを選択します。
VLANs and Tunnelsには、ExternalとInternalをSelectedに格納されている状態にします。
これにより、このVirtual-Serverが使用するセグメントはExternal(172.16.2.0/24)、Internal(172.16.3.0/24)となります。
また、Source Address Translationでは、SNATを選択します。SNAT Poolでは、先ほど作成した192.168.2.1%10を選択します。
Resourceでは以下を設定します。
Default Pool:POOLを選択します。 Default Persistence Profile:cookieを選択します。 また、実運用ならばiRules、Policies、Fallback Persistence Profileも設定することが多いですが、検証用途なのでしません。
完了したら、Finishedをクリックします。
図の様にステータスが緑であることを確認します。
同期されているため2号機に自動的に設定が反映されます。
次に、検証用端末の準備と、VIrtual-Serverを経由した通信・挙動の確認を行います。
次の記事

コメント