【BIG-IP LTM】負荷分散の基本設定と動作確認(Node、Pool、VirtualServer)Version: 16.1.2

音声で聞く

読む前にこの記事のポイントを音声で確認できます。この音声は本記事をもとにAIツール(NotebookLM)で自動生成したもので、発音や言い回しが不自然な箇所や、内容の誤りが含まれる可能性があります。理解の補助としてご利用ください。

ロードバランサは、クライアントからの通信を複数のサーバに振り分ける装置です。1つのサービスを複数のサーバで処理することで、処理能力・可用性(耐障害性)・メンテナンス性が上がります。この記事では、F5社のBIG-IP LTM(Version 16.1.2)で、2台のHTTPサーバに負荷分散する基本設定と動作を確認します。

この記事でわかること
  1. Node(負荷分散するサーバのIPアドレス)の登録
  2. Pool と Pool Member(IPアドレス+ポート)の作成
  3. Virtual Server の作成と、ラウンドロビンでの振り分けの確認

検証構成と設定の全体像

端末は www.hirotanoblog.work(10.0.1.100)へHTTPでアクセスします。BIG-IPはこの通信を受け取り、Web-01(10.0.2.24)かWeb-02(10.0.2.71)のどちらかへ中継します。インターフェースやVLANなど、ネットワーク関連の設定は済んでいるものとします。

端末 HTTP BIG-IP LTM 仮想アドレス 10.0.1.100 www.hirotanoblog.work Web-01 10.0.2.24 Web-02 10.0.2.71 HTTP HTTP
図1 検証構成

BIG-IPの負荷分散は、Node・Pool Member・Pool・Virtual Server の4つを組み合わせて設定します。設定はこの順番(下から上)に作っていくと、前に作ったものを選ぶだけで済みます。

Virtual Server:Web-VS 10.0.1.100:80 / Default Pool Pool:Web-Pool Round Robin / Monitor:http Pool Member 10.0.2.24:80 Pool Member 10.0.2.71:80 Node:Web-01 10.0.2.24 / Monitor:icmp Node:Web-02 10.0.2.71 / Monitor:icmp 利用者に公開 振り分け先 のグループ サーバ(IP)
図2 Node・Pool Member・Pool・Virtual Server の関係
設定中身今回の値
Node負荷分散するサーバのIPアドレス(ポートは含まない)Web-01:10.0.2.24、Web-02:10.0.2.71
Pool MemberNode のIPアドレス+公開するサービスのポート10.0.2.24:80、10.0.2.71:80
PoolPool Member のグループ。振り分け方式とヘルスモニタを持つWeb-Pool(Round Robin、http監視)
Virtual Server利用者に公開するIPアドレス+ポート。受けた通信を Pool へ渡すWeb-VS:10.0.1.100:80
画面イメージについて

この記事の設定画面は、実際の画面ではなく、検証時の画面から設定する項目を抜き出して描いたイメージです。BIG-IPのバージョンによって、項目の並びや表記は変わります。

Node の設定

Node を登録する

Node は、負荷分散するサーバのIPアドレスです。サーバでどのサービス(ポート)が動いているかはここでは関係なく、IPアドレスだけを登録します。Web-01(10.0.2.24)と Web-02(10.0.2.71)の2台を登録します。

Main ›› Local Traffic ›› Nodes ›› Node List を開き、右上の Create をクリックします。

BIG-IP 設定画面(Configuration Utility)画面イメージ
Local Traffic ›› Nodes : Node List ›› New Node…
General Properties
1NameWeb-01
Description 
2Address◉ Address○ FQDN
10.0.2.24
Configuration
3Health MonitorsNode Specific
4Select MonitorsActive/Common
icmp
Available/Common
gateway_icmp
https_443
real_server
snmp_dca
Availability RequirementAll Health Monitor(s)
Ratio1
Connection Limit0
Connection Rate Limit0
CancelRepeat5Finished
図3 Node の作成(Web-01)(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1Name任意の名前。今回は Web-01 にします。
2AddressAddress を選び、サーバのIPアドレス 10.0.2.24 を入力します。
3Health Monitors任意。Node Specific を選ぶと、このNode用のモニタを指定できます。
4Select Monitorsicmp を Active に移します。ICMP(ping)でサーバの死活を監視します。
5Finishedクリックして登録します。

同じ手順で Web-02(10.0.2.71)も登録します。ICMPに応答があると、Status が利用可能(実際の画面では緑の丸)になります。

BIG-IP 設定画面(Configuration Utility)画面イメージ
Local Traffic ›› Nodes : Node List
StatusNameDescriptionApplicationAddress
Web-0110.0.2.24
Web-0210.0.2.71
図4 Node List(2台登録後)(実際の画面ではなく、設定項目のポイントを示したイメージです)

Pool Member と Pool の設定

Pool を作成して Pool Member を登録する

Pool Member は、Node のIPアドレスと公開するサービスのポート番号の組み合わせです。今回はTCP 80番でWebサーバを公開しているので、Web-01 なら 10.0.2.24:80 になります。この Pool Member を Pool にまとめ、Pool の中で負荷分散します。

設定では、Pool を作る画面の中で、登録済みの Node を選んで Pool Member を追加します。Main ›› Local Traffic ›› Pools ›› Pool List を開き、右上の Create をクリックします。

BIG-IP 設定画面(Configuration Utility)画面イメージ
Local Traffic ›› Pools : Pool List ›› New Pool…
Configuration: Basic
1NameWeb-Pool
Description 
2Health MonitorsActive/Common
http
Available/Common
gateway_icmp
http2
http2_head_f5
http_head_f5
Resources
3Load Balancing MethodRound Robin
Priority Group ActivationDisabled
4New Members○ New Node○ New FQDN Node◉ Node List
Address: Web-02 (10.0.2.71)
Service Port: 80 HTTP Add
Node NameAddress/FQDNService PortPriority
Web-0110.0.2.24800
Web-0210.0.2.71800
CancelRepeat5Finished
図5 Pool の作成(Web-Pool)(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1Name任意の名前。今回は Web-Pool にします。
2Health MonitorsWebサーバなので http を Active に移し、HTTPで監視します。
3Load Balancing Method既定の Round Robin のままにします。
4New MembersNode List を選ぶと、Address のプルダウンに登録済みの Node が出ます。Service Port に 80(HTTP)を入れて Add をクリックします。画面は Web-01、Web-02 の2台を追加し終えた状態です。
5Finishedクリックして作成します。

作成後、Pool List の Members が2になっていることを確認します。HTTPのモニタに応答があると、Status が利用可能になります。

BIG-IP 設定画面(Configuration Utility)画面イメージ
Local Traffic ›› Pools : Pool List
StatusNameDescriptionApplicationMembers
Web-Pool2
図6 Pool List(実際の画面ではなく、設定項目のポイントを示したイメージです)
補足

今回は Node に icmp、Pool に http のモニタを設定しています。Node のモニタはサーバ自体が生きているか、Pool のモニタはサービス(HTTP)が応答するかを見ます。Node が停止と判断されると、その Node を使う Pool Member も振り分け対象から外れます。

Virtual Server の設定

Virtual Server を作成して Pool と紐付ける

Virtual Server は、Pool を利用者に公開するために BIG-IP が持つIPアドレスとポート番号の組み合わせです。今回は、上で作った Web-Pool を 10.0.1.100 の80番で公開します。

Main ›› Local Traffic ›› Virtual Servers ›› Virtual Server List を開き、右上の Create をクリックします。設定する項目は画面の上から下まで分かれているので、スクロールしながら入力します。

BIG-IP 設定画面(Configuration Utility)画面イメージ
Local Traffic ›› Virtual Servers : Virtual Server List ›› New Virtual Server…
General Properties
1NameWeb-VS
TypeStandard
Source Address◉ Host○ Address List
 
2Destination Address/Mask◉ Host○ Address List
10.0.1.100
3Service Port◉ Port○ Port List
80 HTTP
StateEnabled
Configuration: Basic
ProtocolTCP
Protocol Profile (Client)tcp
4HTTP Profile (Client)http
HTTP Profile (Server)(Use Client Profile)
⋮ (中略)
VLAN and Tunnel TrafficAll VLANs and Tunnels
5Source Address TranslationAuto Map
Resources
6Default PoolWeb-Pool
Default Persistence ProfileNone
Fallback Persistence ProfileNone
CancelRepeat7Finished
図7 Virtual Server の作成(Web-VS)(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1Name任意の名前。今回は Web-VS にします。
2Destination Address/Mask公開するIPアドレス 10.0.1.100 を入力します。
3Service PortHTTPなので 80 にします。
4HTTP Profile (Client)http を選びます。BIG-IPがHTTPの中身を解釈できるようになり、Cookieを使ったパーシステンスなどHTTPに関わる機能を使うときに必要です。
5Source Address TranslationAuto Map にします。端末から来た通信の送信元IPアドレスを BIG-IP のアドレスに変換(送信元NAT)してサーバへ送ります。
6Default Pool振り分け先の Web-Pool を選びます。
7Finishedクリックして作成します。

送信元NATを使う理由を図で確認しておきます。

端末 BIG-IP Web-01 / 02 宛先 10.0.1.100:80 送信元:端末のIP 宛先 10.0.2.24:80 など 送信元:BIG-IPのIP(Auto Map) 応答はBIG-IP宛てに返る BIG-IPが端末へ返す サーバのデフォルトゲートウェイがBIG-IPでなくても、応答が必ずBIG-IPを通る
図9 Source Address Translation(Auto Map)の動き

送信元を変換しないと、サーバは端末のIPアドレス宛てに直接応答を返そうとします。サーバのデフォルトゲートウェイが BIG-IP でない構成では、応答が BIG-IP を通らず、通信が成立しません。Auto Map は、サーバ側のネットワークにある BIG-IP 自身のアドレス(Self IP)を送信元に使います。

作成が終わると、Virtual Server List に表示されます。

BIG-IP 設定画面(Configuration Utility)画面イメージ
Local Traffic ›› Virtual Servers : Virtual Server List
StatusNameDescriptionApplicationDestinationService Port
Web-VS10.0.1.10080 (HTTP)
図8 Virtual Server List(実際の画面ではなく、設定項目のポイントを示したイメージです)

動作確認

端末から www.hirotanoblog.work で Virtual Server のアドレス(10.0.1.100)に接続できるよう、hosts ファイルに登録しておきます。ブラウザでアクセスすると Web-01 が表示され、別の端末からアクセスすると Web-02 が表示されました。

ブラウザでのアクセス結果画面イメージ
www.hirotanoblog.work
Web-011台目の端末からアクセス
www.hirotanoblog.work
Web-02別の端末からアクセス
図10 同じURLへのアクセスが2台に振り分けられる(実際の画面ではなく、表示内容のポイントを示したイメージです)

Pool の負荷分散方式はラウンドロビン(Round Robin)なので、新しい接続を2台に交互に割り振ります。curl コマンドでWebページのタイトルだけを取り出すと、Web-01 と Web-02 が交互に表示されることが確認できます。

$ curl -s www.hirotanoblog.work | grep -o '<title>.*</title>' | sed 's#<title>\(.*\)</title>#\1#'
Web-01 – Web-01
$ curl -s www.hirotanoblog.work | grep -o '<title>.*</title>' | sed 's#<title>\(.*\)</title>#\1#'
Web-02 – Web-02
$ curl -s www.hirotanoblog.work | grep -o '<title>.*</title>' | sed 's#<title>\(.*\)</title>#\1#'
Web-01 – Web-01
$ curl -s www.hirotanoblog.work | grep -o '<title>.*</title>' | sed 's#<title>\(.*\)</title>#\1#'
Web-02 – Web-02
補足

ラウンドロビンは接続(TCPセッション)単位で振り分けます。ブラウザは同じ接続を使い回すことがあるため、同じブラウザで再読み込みしても表示が切り替わらない場合があります。curl のように毎回新しく接続すると、交互に振り分けられる様子が分かりやすくなります。

うまくいかないときの確認ポイント

症状よくある原因確認すること
Node や Pool の Status が利用可能にならないモニタの応答がない(ICMPやHTTPが届かない、サーバでサービスが止まっている)BIG-IPからサーバへの到達性、Pool のモニタ(http)とサーバのポート
Virtual Server にアクセスしても応答がないサーバの応答が BIG-IP を通らずに返っているSource Address Translation の設定、サーバのデフォルトゲートウェイ
いつも同じサーバに振り分けられるブラウザが接続を使い回している、片方のメンバーが停止しているPool Member の Status、curl など新しい接続での動作

まとめ

手順メニュー主な設定値
NodeLocal Traffic ›› Nodes ›› Node ListWeb-01(10.0.2.24)、Web-02(10.0.2.71)、Monitor:icmp
Pool / Pool MemberLocal Traffic ›› Pools ›› Pool ListWeb-Pool、Monitor:http、Round Robin、メンバー::80 ×2
Virtual ServerLocal Traffic ›› Virtual Servers ›› Virtual Server ListWeb-VS、10.0.1.100:80、HTTP Profile:http、SNAT:Auto Map、Default Pool:Web-Pool

負荷分散方式やパーシステンスの設定は、次の記事で確認できます。

コメント