ロードバランサー(Load Balancer)

ロードバランサー(Load Balancer)とは、多数のアクセス(負荷)を複数のサーバーへ振り分けて、1台に負担が集中しないように調整する仕組み・装置のことです。英語のLoad(負荷)とBalance(つり合い)を組み合わせた言葉で、日本語では「負荷分散装置」とも呼ばれます。

現実世界でいえば、行列を複数のレジへ案内するスーパーの案内係のような存在です。お客さん(アクセス)が一つのレジに殺到しないように、「こちらの空いているレジへどうぞ」と振り分けます。おかげで、どのレジも混みすぎず、全体をスムーズにさばくことができます。

ロードバランサーの仕組み

利用者からのアクセスは、まずロードバランサーがまとめて受け取ります。ロードバランサーは、後ろに並ぶ複数のサーバーの中から適切な1台を選び、そこへリクエストを渡します。利用者からは、あたかも1台のサーバーとやり取りしているように見えますが、実際には裏側で複数台が手分けして処理しています。

負荷を分散するメリット

アクセスを分けることで、サービス全体の安定性と性能が高まります。

  • アクセス集中に強くなる
    大量のアクセスを複数台で分担するため、1台がパンクするのを防げます。
  • 止まりにくくなる(可用性)
    1台が故障しても、残りのサーバーに振り分けを続けることで、サービスを止めずに済みます。
  • 拡張しやすい
    アクセスが増えたら、後ろにサーバーを追加するだけで処理能力を増やせます。
  • メンテナンスしやすい
    1台ずつ切り離して作業できるため、サービスを止めずに更新や点検ができます。

振り分け方式(アルゴリズム)

ロードバランサーがどのサーバーへ振り分けるかには、いくつかの方式があります。

方式 振り分けの考え方
ラウンドロビン 順番に1台ずつ、均等に割り当てていくシンプルな方式。
最小接続数 その時点で接続数が最も少ない(=空いている)サーバーへ割り当てる方式。
重み付け 性能の高いサーバーに多く割り当てるなど、サーバーごとに配分を変える方式。

ヘルスチェック

ロードバランサーは、後ろのサーバーが正常に動いているかを定期的に確認しています。これをヘルスチェックといいます。応答しないサーバーを見つけると、そのサーバーへの振り分けを一時的にやめ、正常なサーバーだけにアクセスを流します。これにより、故障した1台の影響が利用者に及ばないようにしています。

ロードバランサーの種類

実現方法によって、専用の機器を使う「ハードウェア型」と、ソフトウェアで実現する「ソフトウェア型」があります。近年はクラウド上でサービスとして提供されるものも一般的で、Nginxなどのソフトをリバースプロキシとして使い、負荷分散を担わせることも広く行われています。

あわせて知っておきたい用語

  • リバースプロキシ
    サーバー側の代理として外部アクセスを受け止める仕組み。負荷分散を兼ねることも多いです。
  • 可用性
    システムが止まらずに使い続けられる度合い。負荷分散は可用性を高めます。
  • スケールアウト
    サーバーの台数を増やして処理能力を上げる方法。ロードバランサーが前提になります。
  • オートスケーリング
    アクセス量に応じてサーバー台数を自動で増減させる仕組みです。
  • Nginx
    リバースプロキシや負荷分散にもよく使われる高速なWebサーバーソフトです。

コメント

タイトルとURLをコピーしました