A10 Thunderの負荷分散にて、クライアントからの初回リクエストをどのサーバに転送するのかを決定するのに、ラウンドロビン、最小コネクションなど様々な方式が選択できます。
この記事では、下記の構成を前提としていますので、先にお読みいただくことをおすすめします。
>> 参考記事 : サーバ負荷分散(レイヤ4)の基本設定と動作確認 5.2.0ロードバランシング方式の設定箇所
ロードバランシング方式は、サービスグループで設定します。GUIでは、ADC >> SLB >> Service Groups より設定できます。
下記の例は、作成したsg-webというサービスグループで、グループ内に、Web-01とWeb-02がメンバとして所属しています。Algorithmというのが、ロードバランスシング方式で、デフォルトは下記のとおり、ラウンドロビン(Round Robin)となります。
今回は、実務でよく使用される、下記方式の設定と動作確認をします。
- ラウンドロビン(Round Robin)
- 最小コネクション(Least Connection)
- 重み付けラウンドロビン(Weighted Round Robin)
- サービスポートレベルの重み付けラウンドロビン(Weighted Round Robin on service port level)
ラウンドロビン(Round Robin)
デフォルトのロードバランシング方式です。この方式は、負荷分散対象のサーバに対して、順番かつ、均等に接続を振り分けます。
下記のとおり、Web-01とWeb-02の2つのメンバーに対して、ラウンドロビンを適用した場合、クライアントからのリクエストが均等に分散します。
クライアントのリクエストがWeb-01、Web-02にそれぞれ15,14 と均等に振り分けられています。
ロードバランスの状況をCLIで確認するには、show slb service-group で確認できます。
vThunder# show slb service-group Total Number of Service Groups configured: 1 Current = Current Connections, Total = Total Connections Fwd-p = Forward packets, Rev-p = Reverse packets Peak-c = Peak connections Service Group Name Service Current Total Fwd-p Rev-p Peak-c ----------------------------------------------------------------------------------- *sg-web State: All Up Web-01:80 1 15 94 49 0 Web-02:80 1 14 84 44 0
最小コネクション(Least Connection)
現在、どれだけのコネクションがあるかを確認し、次のリクエストに対して、一番コネクションが少ないサーバへ接続を割り振ります。
サービスグループ設定(ADC >> SLB >> Service Groups)よりsg-webを選択し、Algorithmから、Least Connectionを選択し、設定を更新します。
CLIでは下記の通り設定します。
vThunder(config)# slb service-group sg-web tcp vThunder(config-slb svc group)# method least-connection vThunder(config-slb svc group)# exit vThunder(config)#
1台目のクライアントの接続で、複数のコネクションを張り(Web-01へ振られています)、2台目、3台目と端末から接続すると、コネクションの少ないWeb-02に振られます。
同様にCLIでも確認します。
vThunder# show slb service-group Total Number of Service Groups configured: 1 Current = Current Connections, Total = Total Connections Fwd-p = Forward packets, Rev-p = Reverse packets Peak-c = Peak connections Service Group Name Service Current Total Fwd-p Rev-p Peak-c ----------------------------------------------------------------------------------- *sg-web State: All Up Web-01:80 1 23 145 82 0 Web-02:80 3 8 71 51 0
重み付けラウンドロビン(Weighted Round Robin)
分散対象のメンバーサーバに対して、重みをつけて、ラウンドロビン(Weighted Round Robin)することができます。
サービスグループ設定(ADC >> SLB >> Service Groups)よりsg-webを選択し、Algorithmから、Weighted Round Robinを選択し、設定を更新します。
CLIでは下記の通り設定します。
vThunder(config)# slb service-group sg-web tcp vThunder(config-slb svc group)# method weighted-rr vThunder(config-slb svc group)# exit vThunder(config)#
重み(Weight)は、サーバ単位で設定します。今回は、Web-01とWeb-02で、10:1になるように重みをつけてラウンドロビンします。
ADC >> SLB >> Servers で Web-01をEditとし、Advanced FieldのWeightを10に変更します。(デフォルトは1)
CLIでは下記の通り設定します。
vThunder(config)# slb server Web-01 10.0.200.100 vThunder(config-real server)# weight 10
クライアントのリクエストがWeb-01、Web-02にそれぞれ24, 2 で、おおよそ、10:1に振り分けられています。
同様にCLIでも確認します。
vThunder#show slb service-group Total Number of Service Groups configured: 1 Current = Current Connections, Total = Total Connections Fwd-p = Forward packets, Rev-p = Reverse packets Peak-c = Peak connections Service Group Name Service Current Total Fwd-p Rev-p Peak-c ----------------------------------------------------------------------------------- *sg-web State: All Up Web-01:80 2 24 148 80 0 Web-02:80 0 2 13 7 0
サービスポートレベルの重み付けラウンドロビン(Weighted round robin on service port level)
重み付けラウンドロビン(Weighted Round Robin)は、リアルサーバ単位の重み設定によりラウンドロビンしました。サーバ単位ではなく、サービスポート単位で重みを付ける場合、サービスポートレベルの重み付けラウンドロビン(Weighted round robin on service port level)を指定します。
今回は、Web-02のTCP80番の重みを20に変更します。
サービスグループ設定(ADC >> SLB >> Service Groups)よりsg-webを選択し、Algorithmから、Weighted round robin on service port level を選択し、設定を更新します。
CLIでは下記の通り設定します。
vThunder(config)# slb service-group sg-web tcp vThunder(config-slb svc group)# method service-weighted-rr
重み(Weight)は、サーバのサービスポートで設定します。ADC >> SLB >> Servers で Web-02のPort 80をEditのうえ、Weightを20に変更し、設定を更新します。
下記のように値が更新されます。
CLIでは下記の通り設定します。
vThunder(config)# slb server Web-02 10.0.200.173 vThunder(config-real server)# port 80 tcp vThunder(config-real server-node port)# weight 20
クライアントのリクエストがWeb-01、Web-02にそれぞれ4, 76 で、おおよそ、1:20で振り分けています。
同様にCLIでも確認します。
vThunder# show slb service-group Total Number of Service Groups configured: 1 Current = Current Connections, Total = Total Connections Fwd-p = Forward packets, Rev-p = Reverse packets Peak-c = Peak connections Service Group Name Service Current Total Fwd-p Rev-p Peak-c ----------------------------------------------------------------------------------- *sg-web State: All Up Web-01:80 0 4 24 12 0 Web-02:80 2 76 477 259 0
コメント