ロードバランサーBIG-IPとは?負荷分散の仕組みについても解説
こんにちは。クレスコ・デジタルテクノロジーズのWKです。
2022年度に入社し、現在はBIG-IP構築支援の業務を担当しています。
本記事ではサーバ運用で重要な働きを担うロードバランサー「BIG-IP」についてご紹介します。
BIG-IPを初めて聞いたという方にも、名前は聞いたことあるけどよくわからないという方にも、
こんな風に動いているんだと興味を持っていただけたら嬉しいです。
■あわせて読まれている資料:
対応事例やネットワークサービス一覧を掲載!
→ネットワークテクノロジーサービス
ロードバランサーとは?
■ ロードバランサーとは
インターネットサービスやWebサイトにおける単一のサーバへ大量にアクセスが集中してしまうと、ブラウザのレスポンスが低下したり、サーバがダウンしてしまい、障害が発生してしまう可能性があります。
こうした事態を防いでくれるのが、「ロードバランサー」です。
ロードバランサーは「負荷分散装置」と呼ばれ、その名の通り、
サーバーへのアクセスが集中しないよう、複数のサーバにアクセスを分散させ、
1つのサーバにかかる負荷を軽減したり、停止状態を防ぐことができるネットワーク機器です。
「BIG-IP」はF5社が開発・販売しているロードバランサーとなります。
■BIG-IPを使用するメリット
BIG-IPを使用することで以下のようなメリットを得ることができます。
①負荷分散
アクセスを複数のサーバに振り分け、負荷分散することで、レスポンス低下を防ぎ、
サービスの継続を可能にします。
②サーバ故障への対応
BIG-IPには常時サーバの稼働を監視する機能があります。
障害が発生しているサーバを検知した場合、負荷分散の対象サーバから切り離すことで
サービスの停止を防止できます。
③効率的なサーバ運用が可能
自動的に負荷分散させることで、常にリソースの全体最適化を実現するため、
効率的なサーバ運用が可能になります。
さらにセキュリティ面に関しても以下のようなメリットがあります。
④暗号化通信
SSLアクセラレーション機能により、サーバ証明書と秘密鍵をBIG-IPで集中管理ができます。
Webサーバは負荷のかかる暗号処理を行う必要がなくなるため、
サーバ本来の処理に専念することができます。
参考
以上のように、負荷分散を担うロードバランサーがあることで、安定性のあるサービス提供や
パフォーマンス低下を防ぐことができ、事業継続から生産性向上まで、BIG-IPは企業経営において
重要な役割を担っています。
本記事では①負荷分散についてもう少し詳しくご紹介したいと思います。
BIG-IPはどうやって負荷分散するの?
では、実際にBIG-IPはどのような仕組みで負荷分散をしているのでしょうか。
■負荷分散の仕組み
まず初めにクライアントは、BIG-IPに設定したVirtualServerへアクセスします。
BIG-IPは一旦このVirtualServerのIPアドレス(VIP)にてクライアントからの通信を受け入れます。
VirtualServerには振り分け先の複数サーバをグループ化した「Pool」というサーバ群を設定することができ、「Pool member」には振り分け先サーバのIPアドレスとPortを設定します。
BIG-IPはサーバに対して、定期的なヘルスモニタリングを行い、稼働監視を行っています。
ここで一定時間応答のないサーバはダウンしたと判断し、振り分け対象から外します。
複数ある振り分け先のサーバの状態を加味したうえで宛先IPアドレスを
転送先サーバのIPアドレスに書き換え、正常なサーバへリクエストを転送します。
サーバからのレスポンスを受け取ったBIG-IPは変換したIPアドレスを元に戻し、
クライアントへ応答を返します。
このようにして、BIG-IPは負荷分散を行っています。
■ロードバランシングの種類について
BIG-IPが受け取ったリクエストをサーバへ振り分ける方法はいくつか種類があります。
Round Robin
クライアントからのリクエストを振り分け対象のサーバに均等に振り分ける方式です。
デフォルトで設定されており、各サーバで処理するリクエストの数が均等になるため、
サーバの負荷も均等になります。
Ratio
ユーザが定義する比率の重みづけに従い、リクエストを振り分ける方式です。
サーバの比率を下記図のように「3:2:1」で設定した場合、6コネクション目は比率3のサーバへ
振り分けられます。
Least Connection
新しい接続を現在のコネクションが最も少ないサーバに振り分ける方式です。
下記図のように、コネクションが最も少ないサーバを選んで振り分けを行います。
このように振り分け方式には様々な種類があります。
サーバのスペックが同等であれば、Round Robin、
サーバのスペックを把握し、予め比率が決まっているのであればRatio、
サーバのスペックが異なり、現在の接続数を見ながら負荷分散したいのであれば
Least Connectionを選択する、というように、環境によって適切な負荷分散方式を
選択することができます。
参考
負荷分散とセッションパーシステンスについて
さて、ここまでBIG-IPの負荷分散の仕組み、振り分け方式について簡単にご紹介しました。
通常のロードバランスを行った場合、BIG-IPではコネクションレベルで振り分けを行います。
アプリケーションなどによっては、同じクライアントからの複数のコネクションを同じサーバで処理を継続することを前提とした実装である場合もありますよね。
そうした場合、通常のロードバランスでは必ずしも同じサーバへ振り分けが行われず、アプリケーション側で不整合が発生してしまうことがあります。
これを回避するためにBIG-IPには同一クライアントからの通信を同一Pool memberに振り分けるためのセッションパーシステンス機能が実装されています。
代表的な2つのセッションパーシステンス機能をご紹介したいと思います。
■Cookieパーシステンス
BIG-IPの「Cookie Insert Mode」では、
クライアントの接続先Pool memberに関する情報がサーバからのHTTP レスポンスのヘッダに
Cookieとして挿入されます。
①クライアントからの最初のコネクションはCookieを保持していないので、
BIG-IPはロードバランシングの設定に従い、サーバを選択して振り分けを行います。
②サーバからHTTP レスポンスを受信したBIG-IPはヘッダにCookieを挿入し、クライアントへ
転送します。
③クライアントからの次のHTTP リクエストには先ほどのCookieが挿入されており、
BIG-IPはクライアントから送付されたCookieを確認し、以後のコネクションは同じサーバに
振り分けることができます。
■ソースアドレスパーシステンス
こちらはCookie Insert Modeとは異なり、
クライアントの送信元IPアドレスを参照して、振り分け先のサーバを固定することができます。
①クライアントの送信元IPアドレスに対応するパーシステンスエントリがない場合、
ロードバランシングの設定に従って振り分けを行い、パーシステンスエントリを作成します。
②パーシステンスエントリに従い、以後のコネクションは同一Pool memberに振り分けます。
さいごに
BIG-IPの動作、機能について簡単にご紹介しましたがいかがでしたでしょうか。
その他にもBIG-IPには、「Hostヘッダを見て通信を振り分ける」などの細かな条件を設定したり、送信元のIPアドレスを変換するSNAT機能、冗長化機能など、環境に応じて様々な設定を組み合わせることができます。
BIG-IPについて、少しでも興味を持っていただけたら嬉しいです。
最後までお読みいただきありがとうございました。
■関連記事:
「BIG-IPの冗長化とは?設定例や系切替方式をわかりやすく解説」