ロードバランサーの代表的な負荷分散方式である
- ラウンドロビン方式
- 最少コネクション方式
の違いについて解説します。
ラウンドロビン方式
ラウンドロビン方式の概要
ラウンドロビンという言葉には、総当たり戦、傘連判状、持ち回りという意味があります。
ロードバランサーにおけるラウンドロビン方式というのは対象の分散先に対して、順番に処理を割り振っていく分散方式になります。
ラウンドロビン方式の注意点
処理の割り振りは均一に行うラウンドロビン方式ですが、Webシステムなどの対話型システムの場合、ユーザの利用状況によってコネクション数に差が出るケースがあります。
または、リクエストの処理量に差がある場合も同様のことが起こります。
そうなると、サーバ毎の負荷に差が出てきます。
ラウンドロビン方式に向いている処理
上記の注意点よりラウンドロビン方式の設定に向いている処理は
- 非対話型システム
- リクエスト毎の処理量のばらつきがない
と言えます。
最小コネクション方式
最小コネクション方式の概要
最小コネクション方式は、振り分け時に、対象の分散先の中で一番コネクション数の少ないものをロードバランサーが判断して処理を振り分ける方式です。
先ほどの「ラウンドロビン方式のイメージ②-2」の状況を当てはめると、最小コネクション方式では以下のような動きになります。
対話型のシステムやリクエスト毎の処理量にばらつきがある場合、ラウンドロビン方式よりも最小コネクション方式のほうが、負荷分散という観点では均等に分散されることになります。
最小コネクション方式の注意点
最小コネクション方式を採用するにあたって注意すべき点は、ロードバランサー上の「セッション維持時間」の設定です。
セッション維持時間を簡単に説明すると「リクエストを受け取って処理を行いレスポンスを返してから、コネクションが切れるまでの時間」です。
例えば、普段みなさんがwebシステムなどの対話型システムを利用する場合、色々な画面を行ったりきたりすると思いますが、
それは負荷分散対象のサーバのうち、どれかひとつとリクエストとレスポンスのやり取りをし続けていることになります。
仮に、画面1→画面2→画面3と操作を続けていくなかで、突然、画面4の操作だけ別のサーバに処理をさせることになると大抵システムエラーとなります。
そうならないように、ロードバランサー上では「接続元の端末(システム)と処理サーバの紐付け」を行っています。
この紐付け情報をいつまで保持しておくかというのが、「セッション維持時間」の設定になります。
セッション維持時間が短いと、
画面1→画面2→画面3と処理した後に「ちょっとトイレに行ってくるか」と離席し、戻って操作を再開したら、画面4の操作後にシステムエラーになる。
なんてことが起きてしまいます。
逆に長いと、(ようやく最小コネクション方式の話になりますが、)負荷分散における最小コネクション方式の利点を活かせなくなってしまいます。
それは、実際には利用や処理が完了しているのに、まだコネクションが残っていると判断されてしまうからです。
上記のとおり、セッション維持時間が短すぎると正常にサービスを提供できなくなり、逆に長すぎると負荷分散における最小コネクション方式の利点を活かせなくなってしまいます。
システムの特性に応じて、適切なセッション維持時間を設定する必要があります。
(余談ですが、Webシステムの場合、IISなどのwebサーバ側のセッション維持時間の設定も考慮する必要があります。)