ロードバランサー(LB)の基本:仕組みから実務で必要な設定まで解説

アイキャッチ画像

1.ロードバランサー(LB)とは                                               ロードバランサーとは、負荷分散装置ともいいクライアントPCからWebサーバーなどへのアクセス要求を制御して同じような機能を持つ複数のサーバに、アクセスを分散して転送する装置のことを指す。小規模の拠点では扱うことは少ないが、大規模拠点では扱われていることが多い。このように、アクセスさせたいサーバー「ターゲットサーバー❶と❷」の手前にロードバランサーを設置することで負荷の分散を行う。※図参照

※図

2.ロードバランサー(LB)の役割と仕組み

ロードバランサー(LB)の役割

システムダウンを防ぎサービスの可用性向上

ロードバランサーは負荷分散をして過剰なアクセス集中を防ぎ、システムダウンを抑制する。また、故障が疑われるサーバーの切り分けを自動的に行うため、ユーザーはアクセス不能になったサーバーを利用することがなくなる。故障したサーバーのメンテナンスを行ないながら、問題のないほかのサーバーを使ってサービスを継続して提供できるなど、システムの可用性を高めることができる。

速度低下を最小限に抑えることで処理速度の向上

ロードバランサーはサーバーの負荷を均等に分け合うので、CPUやメモリなどリソースの効率的な活用が可能になる。1台あたりの負荷を下げるので処理が高速になり、ページの表示速度の低下を防いでくれる。ページの表示に時間がかかると、ユーザーはストレスを感じる。それが原因で直帰率が上がることもあるので、速度低下の防止はそのままユーザーの満足度につながるだろう。

拡張性を高める

サービスの規模が拡大するにつれて、システムの処理能力が不足してきたと感じることは少なくない。負荷の少ない適切なシステム運用を続けるためにも、拡張性の高さは重要である。ロードバランサーを設置するとリソースの追加が容易になり、いつでも運用規模を拡大できる。

ロードバランサー(LB)の振り分け方式(ラウンドロビン型、リーストコネクション型)について

ラウンドロビン型は、「順番に回して、平等に仕事を振る」方式である。特徴は、全てのサーバーに均等にトラフィックを分散、実装がシンプルかつ処理も軽度である。各サーバーの性能が同等で処理時間にばらつきがない場合に有効である。サーバーの処理能力や応答時間を考慮しないので、負荷に偏りが生じてしまう、高負荷や不均一な処理時間のシステムには不向きなので注意しておきたい。

リーストコネクション型は、「現在最も暇なサーバーに仕事を渡す」賢い割り振り方式である。特徴は、各サーバーのコネクション数をリアルタイムで監視する、コネクション数が少ないサーバーに優先的に振り分ける等がある。各リクエストの処理時間にバラつきがある場合やサーバーごとの負荷分散を最適化したい場合等に有効である。各サーバーのコネクション数の監視が必要なので、ラウンドロビンより処理が複雑であったり、コネクション数だけで判断してしまうため処理の重さCPU負荷など)までは考慮しないので注意しておきたい。

ロードバランサー(LB)の仕組み

まず、ロードバランサーはユーザーのリクエストを一手に引き受ける。ロードバランサーに仮想IPアドレスが設定されており、ユーザーは一旦そこにアクセスする。そして、ロードバランサーは各サーバの状態を考慮し、リソースに余裕のあるサーバへユーザーを割り振る。具体的には、サーバのIPアドレス宛にアクセスが送信される。

3.ロードバランサー(LB)について(実務で必要な設定)

Node、Pool Member とPool、Virtual Server の設定方法

ここでは、有名なF5社のロードバランサBIG-IPをベースに、2台のHTTPサーバに対して負荷分散する。なお、今回の設定方法はGUIで行うとする。端末はwww.hirotanoblog.work(10.0.1.100)へHTTPアクセスする。すると、BIG-IP が Web-01もしくはWeb-02のいずれかにアクセスを中継する。(ネットワーク関連の設定は完了しているものとする)

・Nodeの設定方法

まずNodeとは、ロードバランサーがリクエストを振り分ける先のバックエンドサーバー(IPアドレス)のことを指す。

今回は、Web-01(10.0.2.24)とWeb-02(10.0.2.71)の2台をNodeとして登録する。                                   Main >> Local Traffic >> Virtual Servers >> Nodes  >> Node List へ移動し、右上のCreateをクリックする。

以下の画面が表示される。

Name:任意の名前を設定。今回は、Web-01と設定する。

Address: 負荷分散対象のIPアドレスを設定する。

Addressを選択の上、IPアドレスとして、10.0.2.24と設定する。

Health Monitor(任意の設定): サーバのヘルスモニタ(生死監視)を実行します。Node Specificを選択する。

Select Monitor(任意の設定):icmpを選択します。これで、登録したサーバに対して、icmpを用いて、ヘルスモニタ(生死監視)される。

設定完了したら、Finishedをクリックする。 すると以下の通り登録される。icmpの応答があるとStatusが緑色マークになる。

同様の要領でWeb-02も登録する。

・ Pool Memberの設定方法

 Pool Memberとは、ロードバランサーがトラフィックを分配する対象として登録されている個々のサーバー(ノード)のことである。このPool MemberをPoolに割り当て、そのPool内をロードバランシングする。

設定はまず、Poolを作成して、その中にNodeを用いて、Pool Memberを登録する。                          Main >> Local Traffic >> Virtual Servers >> Pools  >> Pool List へ移動し、右上のCreateをクリックする。

以下の画面が表示される。Poolを設定し、Pool Memberを登録することがイメージできるだろう。

Name: 任意のプールの名前。今回は、Web-Poolとする。

Health Monitors: ヘルスモニタの設定。今回は、Webサーバが対象ですので、httpでモニタするものとする。

Load Balancing Method: RoundRobin(デフォルト)とする。

New Member : Pool Memberを設定します。Node Listを選択すると、Addressのプルダウンに設定したNodeが出力されるので、Service PortをHTTPの80として、Addをクリックする。(上の図ではWeb-01、Web-02は登録済みの画面です)設定完了後、Finishedをクリックする。 すると以下のように、Pool内にメンバーが2であることが確認できる。また、httpの応答があると、Statusが緑色マークになる。

・ Virtual Serverの設定方法

Virtual ServerはPoolをユーザへ公開するために、ロードバランサに付与するIPアドレスとポート番号のセットである。今回は、ユーザ(端末)に対して、上で設定したPoolをIPアドレス 10.0.1.100 で公開する。

設定はVirtual Serverを設定し、ロードバランスしたいPoolと紐づける。                          Main >> Local Traffic >> Virtual Servers  >> Virtual Server List へ移動し、右上のCreateをクリックする。

以下の画面が表示される。

Name: 任意の名前。今回は、Web-VSとする。

Destination Address / Mask : 公開するIPアドレスである10.0.1.100を設定

Server Port : HTTPで、ポート番号は80を設定

また、画面を下にスクロールし、HTTP Profile(Client)で、httpを選択する。

今回は、端末からのHTTPアクセスをBIGIPで送信元NATして、Webサーバへ転送するものとする。 画面を下にスクロールし、Configuration設定で、Source Address Translation を Auto Mapにする。

さらに、画面を下にスクロールすると、Resource設定で、ロードバランシングしたいPoolをDefault Poolで指定する。今回はWeb-Poolを選択する。

完了したらFinishedをクリックします。以下の通り、表示される。

参考文献

https://hirotanoblog.com/bigip-slb-config/5428/#toc2