【BIG-IP LTM】ロードバランシング方式 と動作確認 Version: 16.1.2

BIG-IP LTM で、クライアントからの新しい接続をどのサーバに振り分けるかは、Pool に設定するロードバランシング方式(Load Balancing Method)で決まります。方式は、あらかじめ決めた順番や比率で振り分けるスタティック方式と、サーバの接続数や応答時間を見て振り分け先を決めるダイナミック方式に分かれます。この記事では、代表的な方式を設定し、Pool の統計で振り分けの結果を確かめます。

前提の記事

この記事は、次の記事で作った Node・Pool・Virtual Server の構成(Web-Pool に Web-01:80 と Web-02:80 を登録)を前提にしています。先に読んでおくと、画面の流れがつかみやすくなります。

同じクライアントからの接続を同じサーバに送り続けるセッション維持(パーシステンス)は、次の記事で扱っています。

この記事でわかること
  1. ロードバランシング方式の設定箇所(Pool の Members タブ)
  2. ラウンドロビン:順番に1つずつ、均等に振り分ける
  3. 比率(Ratio):設定した重みの比で振り分ける
  4. 最小コネクション:接続数がいちばん少ないサーバへ振り分ける
  5. 最小セッション:パーシステンスのエントリがいちばん少ないサーバへ振り分ける
検証環境

BIG-IP 16.1.2 で検証しています。16.1 系はすでに F5 のサポート期間が終わっているので、これから構築する場合はサポート中のバージョンを選んでください。この記事で扱う方式は、BIG-IP 17.0 の tmsh リファレンスにも同じ名前で載っています。

スタティック方式とダイナミック方式

ロードバランシング方式は、振り分け先の決め方によって次の2つに分かれます。

分類振り分け先の決め方主な方式
スタティック管理者が決めた順番や重み(Ratio)に従って振り分けます。サーバの混み具合は見ません。Round Robin、Ratio
ダイナミック接続数、セッション数、応答時間など、その時点のサーバの状態を BIG-IP が見て振り分け先を決めます。Least Connections、Least Sessions、Observed など

どちらの方式でも、ヘルスモニタで利用できない状態になったメンバーには振り分けません。方式は Pool に設定し、その Pool のメンバー全体への振り分け方が決まります。

Pool(Web-Pool)Load BalancingMethodクライアントBIG-IP LTMVirtual ServerWeb-01:80Web-02:80
図1 ロードバランシング方式は Pool に設定し、Pool のメンバーへの振り分け方を決める

ロードバランシング方式の設定箇所

Pool の Members タブを開く

Local Traffic ›› Pools ›› Pool List を開き、Web-Pool をクリックします。Members タブを選ぶと、上に Load Balancing の設定欄、下に Pool のメンバー一覧(Current Members)が表示されます。

画面イメージについて

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

BIG-IP 設定画面(Configuration Utility)画面イメージ
Local Traffic ›› Pools : Pool List ›› Web-Pool
Properties | Members | Statistics
Load Balancing
1Load Balancing MethodRound Robin
Priority Group ActivationDisabled
Update
2Current Members
StatusMember
Web-01:80
Web-02:80
EnableDisableForce OfflineRemove
図2 Web-Pool の Members タブ(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目内容
1Load Balancing Methodこの Pool の振り分け方式です。初期値は Round Robin です。変更したら Update をクリックして反映します。
2Current Members振り分け先のメンバーです。Status の緑のアイコンは、メンバーが利用できる状態(Available)であることを示します。

スタティック方式

スタティック方式には、ラウンドロビン(Round Robin)と比率(Ratio)があります。Ratio には、Pool Member ごとの重みを使う Ratio (member) と、Node ごとの重みを使う Ratio (node) があります。

ラウンドロビン(Round Robin)

新しい接続を、Pool のメンバーに順番に1つずつ振り分けます。Web-01:80 と Web-02:80 の2台なら、1つ目の接続は Web-01:80、2つ目は Web-02:80、3つ目は再び Web-01:80 というように交互に割り当てられ、接続数は均等になります。Pool を作ったときの初期値はこの方式です。

BIG-IP LTMWeb-01:80Web-02:801・3・5 … 番目の接続2・4・6 … 番目の接続順番に1つずつ、均等に振り分ける
図3 ラウンドロビンの振り分け

動作確認

クライアントから Virtual Server 宛てに何回かアクセスすると、Web-01 と Web-02 のページが交互に表示されます。

クライアントのブラウザ画面イメージ
http://(伏せています)/
Web-011回目のアクセス
http://(伏せています)/
Web-02再読み込み後
図4 アクセスするたびに Web-01 と Web-02 が交互に表示される(実際の画面ではなく、表示結果のイメージです)

振り分けの結果は、Pool の統計で確かめます。Statistics ›› Module Statistics ›› Local Traffic ›› Pools を開きます。

BIG-IP 統計画面(Pools)画面イメージ
BitsPacketsConnections
StatusPoolPool MemberInOutInOutCurrentMaximumTotal
Web-Pool439.6K25.8M8782.6K04100
Web-01:80209.8K11.4M4151.2K02150
Web-02:80229.8K14.3M4631.4K0250
図5 ラウンドロビンでの Pool の統計(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1Connections の Totalメンバーごとの累計の接続数です。Pool 全体の 100 接続が、Web-01:80 と Web-02:80 に 50 ずつ振り分けられています。

Connections の Current は今つながっている接続数、Maximum は同時接続数の最大値です。ラウンドロビンはサーバの性能を考えずに同じ数ずつ振り分けるので、CPU やメモリなどの性能がほぼ同じサーバを並べるときに使います。性能に差がある場合は、次の比率(Ratio)を検討します。

比率(Ratio)

メンバーごとに重み(Ratio)を設定し、その比に合わせて接続を振り分けます。Ratio の初期値は 1 なので、すべてのメンバーが 1 のままだとラウンドロビンと同じ振り分けになります。

ここでは、Web-01:80 の性能が Web-02:80 の 10 倍あると想定し、Web-01:80 : Web-02:80 = 10 : 1 に設定します。

BIG-IP LTMWeb-01:80Ratio 10Web-02:80Ratio 1101Ratio の比(10 : 1)で振り分ける
図6 Ratio を 10 : 1 にしたときの振り分け

方式を Ratio (member) にする

Web-Pool の Members タブで、Load Balancing Method を Ratio (member) に変更し、Update をクリックします。

BIG-IP 設定画面(Configuration Utility)画面イメージ
Local Traffic ›› Pools : Pool List ›› Web-Pool
Load Balancing
1Load Balancing MethodRatio (member)
Ignore Persisted Weight☐
Priority Group ActivationDisabled
2Update
図7 方式を Ratio (member) に変更する(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1Load Balancing MethodRatio (member) を選びます。Ratio (member) を選ぶと、Ignore Persisted Weight の欄が表示されます。パーシステンスで振り分け先が決まった接続を重みの計算から外す設定で、今回はチェックを入れません。
2Updateクリックして反映します。

メンバーの Ratio を 10 にする

Current Members の Web-01:80 をクリックして、メンバーの設定画面を開きます。Configuration の Ratio を 10 にして、Update をクリックします。Web-02:80 は初期値の 1 のままにします。

BIG-IP 設定画面(Configuration Utility)画面イメージ
Member Properties
Node NameWeb-01
Address(伏せています)
Service Port80
⋮ (中略)
Availability Available (Enabled) – Pool member is available
Health Monitors http
⋮ (中略)
State◉ Enabled (All traffic allowed)
○ Disabled (Only persistent or active connections allowed)
○ Forced Offline (Only active connections allowed)
Configuration: Basic
1Ratio10
Priority Group0
Connection Limit0
Connection Rate Limit0
2UpdateDelete
図8 Web-01:80 の Ratio を 10 にする(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1Ratio10(初期値は 1)。Ratio (member) では、この値の比で振り分けます。
2Updateクリックして反映します。

Members タブに戻ると、メンバー一覧の Ratio 列が 10 と 1 になっています。

BIG-IP 設定画面(Configuration Utility)画面イメージ
Load Balancing
Load Balancing MethodRatio (member)
Current Members
StatusMemberAddressService PortFQDNEphemeralRatio
Web-01:80(伏せています)80No110
Web-02:80(伏せています)80No1
図9 メンバー一覧の Ratio 列(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1RatioWeb-01:80 が 10、Web-02:80 が 1 で、10 : 1 になっています。

動作確認

クライアントから Virtual Server 宛てに何回もアクセスすると、ほとんど Web-01 のページが表示され、Web-02 はたまにしか表示されません。Statistics ›› Module Statistics ›› Local Traffic ›› Pools で統計を確認します。

BIG-IP 統計画面(Pools)画面イメージ
BitsPacketsConnections
StatusPoolPool MemberInOutInOutCurrentMaximumTotal
Web-Pool467.8K25.8M9282.6K04110
Web-01:80422.1K22.9M8362.4K021100
Web-02:8045.7K2.8M922900210
図10 Ratio 10 : 1 での Pool の統計(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1Connections の Total合計 110 接続のうち、Web-01:80 に 100、Web-02:80 に 10 が振り分けられ、設定した 10 : 1 の比になっています。

ダイナミック方式

ダイナミック方式では、BIG-IP がその時点のサーバの接続数、セッション数、応答時間などを見て振り分け先を決めます。Load Balancing Method のプルダウンを開くと、スタティック方式を含めて次の方式が並びます。

BIG-IP 設定画面(Configuration Utility)画面イメージ
Local Traffic ›› Pools : Pool List ›› Web-Pool
Load Balancing
Load Balancing Method プルダウンの一覧Round Robin
Ratio (member)
1✓ Least Connections (member)Observed (member)
Predictive (member)
Ratio (node)
1Least Connections (node)Fastest (node)
Observed (node)
Predictive (node)
Dynamic Ratio (node)
Fastest (application)
2Least SessionsDynamic Ratio (member)
Weighted Least Connections (member)
Weighted Least Connections (node)
Ratio (session)
Ratio Least Connections (member)
Ratio Least Connections (node)
図11 Load Balancing Method のプルダウン(実際の画面ではなく、選べる方式のポイントを示したイメージです)
No.項目内容
1Least Connections (member) / (node)最小コネクションです。接続数を Pool Member 単位で数えるか、Node 単位で数えるかを選べます(STEP 4)。
2Least Sessions最小セッションです。単位を選ぶ項目はなく、この1つだけです(STEP 5)。

プルダウンの方式を種類ごとにまとめると、次のようになります。(member) は Pool Member 単位、(node) は Node 単位で値を見ます。

方式分類振り分けの基準
Round Robinスタティック順番に1つずつ、均等に振り分ける
Ratio (member/node)スタティック設定した重み(Ratio)の比で振り分ける
Least Connections
(member/node)
ダイナミックアクティブな接続数がいちばん少ないところへ
Weighted Least Connections
(member/node)
ダイナミック接続数の上限(Connection Limit)に対する今の接続数の割合がいちばん小さいところへ
Ratio Least Connections
(member/node)
ダイナミックRatio の重みを加味した接続数がいちばん少ないところへ
Observed (member/node)ダイナミック今の接続数と応答時間を組み合わせて決める
Predictive (member/node)ダイナミック接続数と応答時間の時間的な変化も加味して決める
Fastest (node)ダイナミック応答時間がいちばん短い Node へ
Fastest (application)ダイナミックアプリケーションの応答時間がいちばん短いところへ
Dynamic Ratio
(member/node)
ダイナミックモニタで集めた値から重みを自動で決め、その比で振り分ける
Least Sessionsダイナミックパーシステンステーブルのエントリ数がいちばん少ないところへ
Ratio (session)ダイナミックRatio の重みを加味したセッション数がいちばん少ないところへ

この中から、よく使われる最小コネクション(Least Connections)と最小セッション(Least Sessions)を紹介します。

最小コネクション(Least Connections)

新しい接続を、その時点のアクティブな接続数がいちばん少ないサーバに振り分けます。たとえば Web サーバ3台の Pool で、今の接続数が次のようになっているとします。

Pool Member今の接続数
Web-01:803
Web-02:802
Web-03:801

この場合、次の接続は接続数がいちばん少ない Web-03:80 に振り分けられます。

BIG-IP LTMWeb-01:80今の接続数:3Web-02:80今の接続数:2Web-03:80今の接続数:1次の接続接続数がいちばん少ないサーバへ
図12 最小コネクションの振り分け

Least Connections には、接続数を数える単位の違う2つの方式があります。

方式比べる接続数
Least Connections (member)この Pool の中での、メンバーごとの接続数
Least Connections (node)その Node が属しているすべての Pool を合わせた、Node ごとの接続数

同じサーバ(Node)を複数の Pool で使っている場合、(member) ではほかの Pool 経由の接続が数に入りません。サーバ全体の接続数で比べたいときは (node) を選びます。

補足

Least Connections は、性能が近いサーバを並べた環境で効果を発揮します。性能に差がある場合は、Ratio の重みも加味する Ratio Least Connections などを検討します。また、OneConnect を有効にしている場合は、アイドル状態の接続は接続数に数えられません。

最小セッション(Least Sessions)

パーシステンステーブルを見て、エントリ(セッション)がいちばん少ないサーバに新しい接続を振り分けます。

パーシステンステーブルを使う方式なので、Virtual Server に Source Address Affinity や Universal のような、パーシステンスの情報を BIG-IP のテーブルに記録するプロファイルを設定しておく必要があります。Cookie パーシステンスとは組み合わせられません。

Least Connections と違って、プルダウンには Least Sessions の1つしかなく、Node 単位と Pool Member 単位を選び分けることはできません。

補足

パーシステンスの種類と設定は 【BIG-IP LTM】セッションパーシステンスの設定と動作確認 で扱っています。

まとめ

方式分類振り分けの基準使う場面
Round Robinスタティック順番に1つずつ性能がほぼ同じサーバを並べるとき(初期値)
Ratio
(member/node)
スタティック設定した重みの比サーバの性能に差があるとき
Least Connections
(member/node)
ダイナミック今の接続数が最も少ない性能が近いサーバで、接続数の偏りをならしたいとき
Least Sessionsダイナミックパーシステンスのエントリ数が最も少ないSource Address Affinity などのパーシステンスを使うとき(Cookie パーシステンスとは組み合わせない)
注意

ロードバランシング方式で決まるのは、振り分け先が決まっていない接続の行き先です。パーシステンスを設定していると、2回目以降の接続は方式に関係なく同じサーバに送られるので、統計の割合も方式どおりにはなりません。方式ごとの振り分けを確かめるときは、パーシステンスを外した状態で試します。

コメント