BIG-IP LTM で、クライアントからの新しい接続をどのサーバに振り分けるかは、Pool に設定するロードバランシング方式(Load Balancing Method)で決まります。方式は、あらかじめ決めた順番や比率で振り分けるスタティック方式と、サーバの接続数や応答時間を見て振り分け先を決めるダイナミック方式に分かれます。この記事では、代表的な方式を設定し、Pool の統計で振り分けの結果を確かめます。
この記事は、次の記事で作った Node・Pool・Virtual Server の構成(Web-Pool に Web-01:80 と Web-02:80 を登録)を前提にしています。先に読んでおくと、画面の流れがつかみやすくなります。
同じクライアントからの接続を同じサーバに送り続けるセッション維持(パーシステンス)は、次の記事で扱っています。
- ロードバランシング方式の設定箇所(Pool の Members タブ)
- ラウンドロビン:順番に1つずつ、均等に振り分ける
- 比率(Ratio):設定した重みの比で振り分ける
- 最小コネクション:接続数がいちばん少ないサーバへ振り分ける
- 最小セッション:パーシステンスのエントリがいちばん少ないサーバへ振り分ける
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 の Members タブを開く
Local Traffic ›› Pools ›› Pool List を開き、Web-Pool をクリックします。Members タブを選ぶと、上に Load Balancing の設定欄、下に Pool のメンバー一覧(Current Members)が表示されます。
この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
| 1Load Balancing Method | Round Robin |
| Priority Group Activation | Disabled |
| Status | Member |
|---|---|
| Web-01:80 | |
| Web-02:80 |
| No. | 項目 | 内容 |
|---|---|---|
| 1 | Load Balancing Method | この Pool の振り分け方式です。初期値は Round Robin です。変更したら Update をクリックして反映します。 |
| 2 | Current 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 を作ったときの初期値はこの方式です。
動作確認
クライアントから Virtual Server 宛てに何回かアクセスすると、Web-01 と Web-02 のページが交互に表示されます。
振り分けの結果は、Pool の統計で確かめます。Statistics ›› Module Statistics ›› Local Traffic ›› Pools を開きます。
| Bits | Packets | Connections | |||||||
|---|---|---|---|---|---|---|---|---|---|
| Status | Pool | Pool Member | In | Out | In | Out | Current | Maximum | Total |
| Web-Pool | 439.6K | 25.8M | 878 | 2.6K | 0 | 4 | 100 | ||
| Web-01:80 | 209.8K | 11.4M | 415 | 1.2K | 0 | 2 | 150 | ||
| Web-02:80 | 229.8K | 14.3M | 463 | 1.4K | 0 | 2 | 50 | ||
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Connections の 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 に設定します。
方式を Ratio (member) にする
Web-Pool の Members タブで、Load Balancing Method を Ratio (member) に変更し、Update をクリックします。
| 1Load Balancing Method | Ratio (member) |
| Ignore Persisted Weight | ☐ |
| Priority Group Activation | Disabled |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | Load Balancing Method | Ratio (member) を選びます。Ratio (member) を選ぶと、Ignore Persisted Weight の欄が表示されます。パーシステンスで振り分け先が決まった接続を重みの計算から外す設定で、今回はチェックを入れません。 |
| 2 | Update | クリックして反映します。 |
メンバーの Ratio を 10 にする
Current Members の Web-01:80 をクリックして、メンバーの設定画面を開きます。Configuration の Ratio を 10 にして、Update をクリックします。Web-02:80 は初期値の 1 のままにします。
| Node Name | Web-01 |
| Address | (伏せています) |
| Service Port | 80 |
| ⋮ (中略) | |
| 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) |
| 1Ratio | 10 |
| Priority Group | 0 |
| Connection Limit | 0 |
| Connection Rate Limit | 0 |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | Ratio | 10(初期値は 1)。Ratio (member) では、この値の比で振り分けます。 |
| 2 | Update | クリックして反映します。 |
Members タブに戻ると、メンバー一覧の Ratio 列が 10 と 1 になっています。
| Load Balancing Method | Ratio (member) |
| Status | Member | Address | Service Port | FQDN | Ephemeral | Ratio |
|---|---|---|---|---|---|---|
| Web-01:80 | (伏せています) | 80 | No | 110 | ||
| Web-02:80 | (伏せています) | 80 | No | 1 |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Ratio | Web-01:80 が 10、Web-02:80 が 1 で、10 : 1 になっています。 |
動作確認
クライアントから Virtual Server 宛てに何回もアクセスすると、ほとんど Web-01 のページが表示され、Web-02 はたまにしか表示されません。Statistics ›› Module Statistics ›› Local Traffic ›› Pools で統計を確認します。
| Bits | Packets | Connections | |||||||
|---|---|---|---|---|---|---|---|---|---|
| Status | Pool | Pool Member | In | Out | In | Out | Current | Maximum | Total |
| Web-Pool | 467.8K | 25.8M | 928 | 2.6K | 0 | 4 | 110 | ||
| Web-01:80 | 422.1K | 22.9M | 836 | 2.4K | 0 | 2 | 1100 | ||
| Web-02:80 | 45.7K | 2.8M | 92 | 290 | 0 | 2 | 10 | ||
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Connections の Total | 合計 110 接続のうち、Web-01:80 に 100、Web-02:80 に 10 が振り分けられ、設定した 10 : 1 の比になっています。 |
ダイナミック方式
ダイナミック方式では、BIG-IP がその時点のサーバの接続数、セッション数、応答時間などを見て振り分け先を決めます。Load Balancing Method のプルダウンを開くと、スタティック方式を含めて次の方式が並びます。
| 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) |
| No. | 項目 | 内容 |
|---|---|---|
| 1 | Least Connections (member) / (node) | 最小コネクションです。接続数を Pool Member 単位で数えるか、Node 単位で数えるかを選べます(STEP 4)。 |
| 2 | Least 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:80 | 3 |
| Web-02:80 | 2 |
| Web-03:80 | 1 |
この場合、次の接続は接続数がいちばん少ない Web-03:80 に振り分けられます。
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回目以降の接続は方式に関係なく同じサーバに送られるので、統計の割合も方式どおりにはなりません。方式ごとの振り分けを確かめるときは、パーシステンスを外した状態で試します。
コメント