無題の備忘録

IT技術について調べたことや学んだこと、試したこと記録するブログです。Erlang、ネットワーク、 セキュリティ、Linux関係のものが多いです。

ロードバランサの負荷分散方式

リクエストの負荷分散方式

ロードバランサの最も基本的な機能に、クライアントからのリクエストをサーバに割り振る機能があります。システム全体の資源を効率的に使うためには、リクエストを何を基準にしてどのサーバに割り振るか(分散方式)が重要です。

分散方式の分類

分散方式には大きく分けて静的分散方式と動的分散方式に分けられます。

静的分散方式

静的分散方式はあらかじめ決められた割り当てで、サーバにリクエストを割り振る方式です。 分散先のサーバの処理能力が同じ場合やリクエストの処理時間が一定である場合に用いられます。 また、静的分散方式は仕組みが単純なため、設計が簡単になります。

静的分散方式には次のようなものがあります。

(1)ラウンドロビン

各サーバに、均等にリクエストを割り振ります。

(2)重み付きラウンドロビン

各サーバに、あらかじめ設定された重み付けでリクエストを割り振ります。

動的分散方式

動的分散方式はサーバやネットワークの状況を考慮して、最適なサーバにリクエストを割り振る方式です。 静的分散方式とは逆に、分散先のサーバの処理能力が異なっている場合やリクエスト毎に処理時間が異なっている場合に利用されます。

動的分散方式には次のようなものがあります。

(3)最小コネクション数

処理中のコネクションが最も少ないサーバにリクエストを割り振ります。 サーバの処理能力に応じてリクエストを割り振ることができます。

(4)重み付き最小コネクション数

あらかじめ設定された重み付けを考慮した上で、処理中のコネクションが最も少ないサーバにリクエストを割り振ります。

(5)最小クライアント数

接続中のクライアントが最も少ないサーバにリクエストを割り振ります。 リクエストのIPアドレスなどに基づいてクライアントを識別します。 クライアント単位で、分散先サーバを選択することができます。

(6)最小データ通信量

処理中のデータ通信量が最も少ないサーバにリクエストを割り振ります。 各サーバが転送したデータ量を計測し、転送したデータ量が少ないサーバにリクエストを割り振ります。 コネクションあたりのデータ転送量が多いアプリケーションに有効です。

(7)最小応答時間

応答時間が最も短いサーバにリクエストを割り振ります。 サーバの処理能力に応じてリクエストを割り振ることができます。

(8)最小サーバ負荷

CPU、メモリ、I/Oの利用率が最も低いサーバにリクエストを割り振ります。 サーバの処理能力やリクエスト以外にサーバで処理をすることがある場合に、それを考慮してリクエストを割り振ることができます。

その他分散方式

その他の分散方式として、次のものがあります。

(9)ランダム

ランダムに選択した分散先サーバにリクエストを割り振ります。 真にランダムであれば、統計的にはサーバへの割り振りは均等になります。