サーバ負荷分散(ロードバランサ)では、クライアントからのアプリケーション通信処理を複数のサーバへ共有(分散)します。 1つのサービスを複数のサーバに処理を分散させることで、全体として処理能力や可用性(耐障害性)、メンテナンス性が向上します。
ここでは、有名なF5社のロードバランサBIG-IPをベースに、2台のHTTPサーバに対して負荷分散する動作を確認します。
端末はwww.hirotanoblog.work(10.0.1.100)へHTTPアクセスします。すると、BIG-IP が Web-01もしくはWeb-02のいずれかにアクセスを中継します。(ネットワーク関連の設定は完了しているものとします)
Node の設定
Nodeとは、負荷分散対象のサーバ(IPアドレス)を定義します。このサーバ上でどのようなサービス(ポート)が公開されているかは関係ありません。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の設定
Pool Member とは、負荷分散対象のサーバのIPアドレスと公開するサービスのポート番号のセットです。 今回は、WebサーバとしてTCP80番ポートを公開していますので、Web-01の場合は、10.0.2.24:80と表現する場合もあります。
この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をクリックします。以下の通り、表示されます。
動作確認
端末には、www.hirotanoblog.work で、Virtual ServerのIPアドレスで接続できるよう、Hostsファイルを追加しています。
端末からwww.hirotanoblog.workにブラウザでアクセスします。すると、Web-01が表示されます。
別の端末からアクセスすると、Web-02が表示されます。
今回設定したPoolのロードバランシングメソッドは、ラウンドロビン(Round Robin)のため、2台のサーバに対して、交互にセッションを割り振ります。下記は、Curlコマンドで、Webサーバのタイトルのみを取得しています。Web-01、Web-02が交互に表示されていることが確認できます。
$ curl -s www.hirotanoblog.work | grep -o '<title>.*</title>' | sed 's#<title>\(.*\)</title>#\1#' Web-01 – Web-01 $ curl -s www.hirotanoblog.work | grep -o '<title>.*</title>' | sed 's#<title>\(.*\)</title>#\1#' Web-02 – Web-02 $ curl -s www.hirotanoblog.work | grep -o '<title>.*</title>' | sed 's#<title>\(.*\)</title>#\1#' Web-01 – Web-01 $ curl -s www.hirotanoblog.work | grep -o '<title>.*</title>' | sed 's#<title>\(.*\)</title>#\1#' Web-02 – Web-02
以上が基本設定です。ロードバランス方式やパーシステンスを設定する際は、下記記事を参考にしてください。
>> 参考記事 : ロードバランシング方式 と動作確認 >> 参考記事 : セッションパーシステンス と動作確認
コメント