ロードバランサーとは


ロードバランサーとは

サーバーの負荷を分散させる装置をロードバランサー(負荷分散装置とも言う)と言います。
ロードとは負荷のことです。
WEBサーバーに大量のアクセスがあり、ブラウザの表示が重くなっている状態はロードが高いといえます。
→これを防ぐ為に、ロードバランサーがあります。

ロードバランサーの機能
負荷分散

負荷分散には、2つの種類があります。
・静的負荷分散方式:事前に決められたルールに基づいてリクエストを分配する。
・動的負荷分散方式:変化するサーバーの状態や負荷に基づいてリクエストを分配する。

負荷分散:静的負荷分散方式

静的負荷分散方式とは、ロードバランサーが決められた順序で各リクエストを各サーバーに振り分ける方式です。

6個のリクエストがあり、3台のサーバーがある場合にリクエストを以下のように処理すると、事前に決めておく方式が
静的負荷分散方式となります。
・1番目のリクエストをサーバーAで処理する
・2番目のリクエストをサーバーBで処理する
・3番目のリクエストをサーバーCで処理する
・4番目のリクエストをサーバーAで処理する
・5番目のリクエストをサーバーBで処理する
・6番目のリクエストをサーバーCで処理する

静的負荷分散方式にも、2つの振り分け方式があります。
①ラウンドロビン
②重み付きラウンドロビン

①ラウンドロビン

ラウンドロビンは、上記で説明したように、事前に各サーバーに決められた順序でリクエストを振り分ける方式です。
この方式は以下が前提となっています。
各サーバーの処理能力が同じで、各リクエストの処理量が同じ
もしも、A、Bサーバーが高性能でCの性能が低い場合、同じ量のリクエストでもCはダウンする可能性があります。
処理能力が同じである必要があるのです。

②重み付きラウンドロビン

重み付きラウンドロビンは、各サーバーの処理能力に応じて、リクエストの割り振り比率を調整する方法です。処理能力の高いサーバーに多くのリクエストを割り振ります。
各サーバーごとに割り振るリクエスト量を事前に決めておく方式です。

①、②に共通しているのは、割り振るリクエスト量を事前に決めておく点です。そのため、途中で高負荷になってもトラフィックの分散方法は変更されません。

負荷分散:動的負荷分散方式

リクエストを受けるたびに、サーバーやネットワークの現状を考慮して、送付先のサーバーを決める方式。
この方式は以下が前提となっています。
各サーバーの処理能力が異なり、各リクエストに必要な処理時間が異なる

動的分散方式には以下のような分散方式があります。
・最小コネクション数
・重み付き最小コネクション数
・最小クライアント数
・最小データ通信量
・最小応答時間
・最小サーバ負荷

死活監視

死活監視とは、リクエストを処理するサーバーが正常に動作しているかを確認するプロセスです。

Pingコマンド
指定したIPアドレスにパケットを送り、その応答時間を測定します。

HTTPリクエスト
HTTPリクエストをサーバーに送り、応答コードや応答時間を測定します。

死活監視にも手法がある

・アクティブ型ヘルスチェック

サーバーに定期的にリクエストを送信し、適切な応答が返ってくることを確認します。

・パッシブ型ヘルスチェック

普段流れてくるリクエストを利用し、サーバーの状態監視を行う。
サーバーからエラー応答が返ることが多くなった場合にサーバーに問題があると判断します。

その他の死活監視

・ログ監視

OSやアプリなどから出力されるログを分析し、異常かどうかを判断する。

・アプリケーション監視

アプリの実行時間、応答時間、エラー率などを監視し、分析します。

・パフォーマンス監視

CPU使用率、メモリ使用率、ネットワーク使用率などを監視し、分析します。

DNSラウンドロビン

ロードバランサーと似たものが、DNSラウンドロビンです。
DNSラウンドロビンは、1つのドメイン名に複数のIPアドレスを割り当て、PCなどからのリクエストに順に応答する負荷分散の技術です。
こちらは、DNSサーバーに設定します。

DNSゾーンファイルは↓以下となります。

www.example.comIN A1.1.1.1
www.example.comIN A1.1.1.2
www.example.comIN A1.1.1.3

www.example.comへのアクセスを分散させるために、DNSサーバーのゾーンファイルには、
www.example.comのホストに対するAレコードを3行設定します。
同じホスト名のAレコードが複数ある場合、DNSサーバーは設定したIPを順番に応答するので負荷分散ができます。