ロードバランシングとは、ある瞬間に最も必要とされる場所にリソースを分配することです。
パソコンが開発された当初は、一家に一台しかパソコンがなかったかもしれません。昼間は子供たちがコンピューターゲームで遊び、夜は親が経理やプログラミングをしたり、業務支援システムで歩き回ったりしていました。しかし、コンピューターが1台しかない家庭を想像してみてください。誰もがコンピューターを使いたがり、キーボードとマウスは1つしかありません。
コンピューターがますます一般的になるにつれ、IT業界も多かれ少なかれ同じ状況にあります。サービスやサーバーの需要は、過負荷でシャットダウンしてしまうほど高まっています。幸いなことに、ロードバランシングという概念が需要を処理するために利用できるようになりました。
ロードバランシングとは何ですか?
ロードバランシングは、管理されたリソースの効率的な分配を保証するために行われることを指す一般的な用語です。ウェブサーバーのシステム管理者にとって、ロードバランシングとは通常、ウェブサーバーソフトウェアが訪問者の急増を処理するのに十分な動作ノードで構成されていることを確認することを意味します。言い換えれば、あるWebサイトが突然人気を博し、訪問者が数分で4倍になった場合、サーバーを実行するソフトウェアは、各訪問者に対応し、どの訪問者にもサービス品質の低下を感じさせないようにする必要があります。単純なサイトであれば、設定オプションの1行を変更するだけで済みますが、動的なコンテンツやユーザーごとに複数のデータベースクエリを持つ複雑なサイトでは、深刻な問題になりかねません。
この問題は、クラウド・コンピューティングの発展とともに解決されるはずでしたが、ウェブアプリケーションが予期せぬ急増に見舞われたときに、スケーリングに失敗することは不可能ではありません。
ロードバランシングで覚えておくべき重要な点は、リソースを割り当てることは必ずしもリソースを割り当てることではないということです。すべてのタスクが常にすべての利用可能なリソースを必要とするわけではありません。インテリジェントなロードバランシングポリシーは、必要なときだけユーザーやタスクにリソースを提供します。これは通常、ITインフラストラクチャの責任ではなく、アプリケーション開発者の領域です。非同期アプリケーションは、コンピュータから離れるユーザがサーバの貴重なリソースを占有しないようにするために重要です。
ロードバランシングはどのように機能するのですか?
ロードバランシングは、複数のコンピュートノードにワークロードを分散することでボトルネックを回避します。これらのノードは、データセンターの物理サーバ、クラウド環境のコンテナ、エッジコンピューティング用に戦略的に配置されたサーバ、複雑なアプリケーションフレームワークのスタンドアロンJava仮想マシン、または単一のLinuxサーバ上で実行されるデーモンである可能性があります。
このアイデアは、大きな問題を小さなタスクに分割し、各タスクを専用のコンピュータに割り当てるというものです。例えば、ユーザーがログインする必要があるサイトの場合、サイトはサーバーAでホストされ、ログインページとそれに付随する認証クエリはすべてサーバーBでホストされます。こうすることで、新規ユーザが自分のアカウントにログインする際に、サイトを利用している他のユーザのリソースを占有することがなくなります。
クラウド負荷分散
クラウド・コンピューティングは コンテナ使用するため、通常、タスクごとに物理サーバーを分けることはありません。その代わりに、複数のコンテナから「」が作成されます。ユーザーやタスクの負荷によってコンテナポッドのリソースが不足し始めると、同じコンテナポッドが生成されます。コンテナポッドはストレージとネットワークリソースを共有し、各コンテナポッドは作成時にコンピュートノードに割り当てられます。コンテナポッドは負荷に応じて作成または破棄できるため、ユーザー数に関係なく一貫したサービス品質をユーザーに提供できます。
エッジコンピューティング
エッジ・コンピューティング 負荷分散には現実世界が考慮されます。クラウドコンピューティングは当然分散システムですが、現実にはクラウドのノードは通常いくつかのデータセンターに集中しています。クラウドを実行しているデータセンターからユーザーが離れれば離れるほど、最高のサービスを受けるために乗り越えなければならない物理的な障害が増えます。光ファイバー接続と適切な負荷分散を行っても、3,000マイル離れた場所にあるサーバーの応答時間は、わずか300マイル離れた場所にあるサーバーの応答時間よりも長くなることがあります。
エッジ・コンピューティングは、クラウドの「エッジ」にコンピュート・ノードを持ち込むことで、地理的な隔たりを埋め、クラウドのサテライト・ネットワークのようなものを形成しようとするものです。
負荷分散アルゴリズムとは何ですか?
ロードバランシング戦略には多くのものがあり、その複雑さは関係するテクノロジーや要件によって異なります。ロードバランシングは複雑である必要はなく、 Kubernetes Keepalived ような特殊なソフトウェアを使用する場合でも、最初からロードバランシングすることが重要です。
自分でアプリケーションを設計し、簡単な予防措置を講じることができるのであれば、ロードバランシングをコンテナに頼らないでください。最初からモジュール式でアドホックなアプリケーションを設計すれば、巧みなネットワーク設計、コンテナ・オーケストレーション、その他の将来のテクノロジーによってもたらされる負荷分散の機会から恩恵を受けることができます。
アプリケーション開発者やネットワークエンジニアの作業の指針となる一般的なアルゴリズムには、次のようなものがあります:
- 順番にサーバーにタスクを割り当てます。
- 現在最もビジーでないサーバーにタスクを割り当てます。
- 最もレスポンスの速いサーバーにタスクを割り当てます。
- タスクのランダム割り当て。
例として、特に複雑なタスクを割り当てる場合、これらの原則を組み合わせたり、グループ内で最も強力なサーバーに割り当てるように重み付けしたりすることができます。多くの場合、 、管理者が負荷分散のための完璧なアルゴリズムやポリシーを見つける必要がないように使用されます。
予期せぬ事態を想定
ロードバランシングとは、ネットワーク全体ですべてのリソースが均等に使用されるようにすることではありません。ロードバランシングとは実際には、予期せぬ事態が発生した場合でも、信頼性の高いユーザー体験を提供できるようにすることです。優れたインフラストラクチャーは、コンピューターのクラッシュ、アプリケーションの過負荷、ネットワークトラフィックのショック、ユーザーのエラーに耐えることができます。サービスがどのように回復力を持つことができるかを考え、それに応じてロードバランシング戦略を一から設計しましょう。





