目次
トグルロードバランサーとは何ですか?
通常、大規模なデータセンターでは、他のサーバーやクライアントから 1 秒あたり数百万、場合によっては数千万のリクエストが発生することがあります。このトラフィックを効果的に処理するには、このトラフィックを管理してバランスをとる必要があります。ロード バランサは、この種の大規模なトラフィック問題を処理するために特別に設計されたモジュールです。
ロード バランサーは主に、現在のサーバー負荷に基づいて、すべてのユーザー リクエストを対応するサーバーに分散します。この利点は、サーバーの過負荷やクラッシュを回避できることです。ただし、現在のシステムのトラフィックが高くなく、1 秒あたり数千リクエスト程度であれば、結局のところ、システムが複雑になるにつれてロード バランサーは必要なくなる可能性もあります。もっと多くのことを考慮する必要があります。
ロードバランサーの機能
ロード バランサーが大規模なトラフィックを処理するように設計された要素である場合、ロード バランサーにはどのような機能が必要ですか?
スケーラビリティ (スケーラビリティ)
によると 最新システム設計入門 - システム設計 01 システムが大きくなればなるほど、より多くのサーバーまたはコンポーネントが必要になるため、優れたシステムではスケーラビリティを考慮する必要があると述べました。ロードバランサは、拡張・縮小が可能なコンポーネントであるという特徴があるため、現在のシステムに合わせて拡張することができます。
可用性 (可用性)
いわゆる可用性とは、システムの一部のサーバーがクラッシュしても、システム全体の機能が停止しないことを意味します。ロード バランサーは、どのサーバーが過負荷またはダウンしているかを判断し、正常に動作しているサーバーにトラフィックをリダイレクトできるため、この種の問題を効果的に処理でき、それによってシステム障害や停止さえも回避できます。
パフォーマンス
ロード バランサーにとって非常に重要なタスクは、各サーバーが均等に分散されるようにすることです。基本的に、特定のサーバーに過剰なトラフィックが発生する問題は発生しません。このような機能により、ユーザーは確実に応答時間を短縮できます。
ロードバランサーはどのように機能しますか?
まず、ロード バランサーなしでサーバーがどのように動作するかを見てみましょう。
前述したように、ロード バランサーがないと、トラフィックが特定のサーバーに送信され、クライアントが遅延します。
逆に、ロードバランサーを中間に配置すると、トラフィックを該当するサーバーに効果的に分散できます。
AWS ロードバランサーの説明
ここではAWSの概略図を載せて説明し、出典とソースも添付します!
以下は AWS の原文の翻訳文です。
企業は多くの場合、アプリケーションを複数のサーバーで実行します。このタイプのサーバー配置はサーバー ファームと呼ばれます。アプリケーションに対するユーザーリクエストは、まずロードバランサーに送られます。次に、ロード バランサーは、各リクエストを、そのリクエストの処理に最適なサーバー クラスター内の単一のサーバーにルーティングします。
負荷分散はレストランのマネージャーが行うようなものです。 5 人のウェイターがいるレストランを考えてみましょう。顧客がウェイターを選択できる場合、1 人または 2 人のウェイターが過負荷になり、他のウェイターはアイドル状態になる可能性があります。これを避けるために、レストランのマネージャーは、顧客にサービスを提供するのに最も適した特定のウェイターを顧客に割り当てます。
ロードバランサーの仕組み
負荷分散はロード バランサーによって処理されるため、1 つ目はロード バランサー ツール、2 つ目は負荷分散の問題です。
ロードバランサ
1 つ目は、ロード バランサーはハードウェアでもソフトウェアでもよいということです。ハードウェアロードバランサーの場合は専用の負荷分散装置を導入する必要がありますが、ソフトウェアロードバランサーの場合はサーバー、仮想マシン、クラウド上で動作します。一度入ったら システム設計コンポーネントの構成要素の概要 – システム設計 05 通常、前述のコンテンツ配信ネットワーク (CDN) には負荷分散機能もあります。CDN については、今後、記事をかけて詳しく説明します。
負荷分散アルゴリズム
ユーザーがリクエストを送信すると、ロード バランサーはさまざまなアルゴリズムを介してリクエストを渡し、どのサーバーがリクエストを処理するかを決定します。これらのアルゴリズムは、静的負荷分散アルゴリズムと動的負荷分散アルゴリズムの 2 つの主要なカテゴリに分類できます。
静的負荷分散アルゴリズム
静的負荷分散アルゴリズムは、平均アルゴリズムに基づいて負荷分散を実行し、現在のシステム状態を考慮しません。率直に言うと、静的負荷分散はサーバーのステータスを認識せず、サーバーが過負荷かアイドル状態かに基づいてトラフィックをインポートするかどうかを決定できません。その代わりに、最初から計画に基づいて負荷が分散されます。この利点は、負荷分散の設定と理解が非常に簡単であることですが、もちろん、欠点は効率の低下につながることです。
一般的な静的負荷分散方式の 1 つはラウンド ロビン (RR) です。このアルゴリズムは、名前が示すように、時間に基づいて対応するタスクを順番に実行します。ラウンドロビンアルゴリズムをより詳しく説明するために、ここにも提供されていますウィキペディア例。
タイム スライスの長さが 100 ミリ秒のシステムでは、次の表にリストされているプロセスを考慮してください。
動的負荷分散アルゴリズム
動的負荷分散アルゴリズムでは、可用性、ワークロード条件、サーバーの動作条件など、各サーバーの現在のステータスが考慮されます。
また、過負荷または低パフォーマンスのサーバーから完全に負荷がかかっていないサーバーにトラフィックを転送するため、トラフィックをより効率的に均等に分散できるという利点があります。ただし、動的な負荷分散を実現するのが難しいという欠点があります。サーバーの動作、サーバーのメモリ容量、クライアント要求のサイズなど、さまざまな要因がサーバーの可用性に影響します。
ここでは、最小接続、加重最小接続、リソースベースの負荷分散、地理的位置負荷分散 (地理位置情報ベースの負荷分散) など、リーダー向けのいくつかの一般的な動的分散アルゴリズムも提供します。
グローバルおよびローカルの負荷分散
ロード バランサーとは何か、そしてその仕組みについては前述しました。次に、ロード バランサーの種類について説明します。基本的に、ロード バランサーはグローバル ロード バランサー (グローバル サーバー ロード バランシング) とローカル ロード バランサー (ローカル ロード バランシング) に分けられます。 。単に文字通りの意味を理解すると、グローバル ロード バランシングが複数の地理的場所にわたるトラフィック バランシングを担当し、ローカル ロード バランシングが大規模なデータ センター内のトラフィック バランシングを担当することを理解するのは難しくありません。
グローバルサーバー負荷分散
グローバル サーバー負荷分散の主なタスクは、グローバル トラフィックのバランスをとり、さまざまな大規模データ センターに分散することです。例: 米国のユーザー トラフィックは、GSLB を通じて北米のデータ センターに分散されます。グローバル サーバー負荷分散では、ユーザーの現在の地理的位置とさまざまなデータ センターのステータスに基づいて、トラフィックをどの地理的データ センターに送信するかを決定できます。
別の例を次に示します。ユーザーが東京にいて、サーバーがニューヨークにある Web サービスを使用している場合、リクエストとレスポンスの両方が長距離を移動する必要があるため、読み込み時間に大幅な遅延が発生します。
GSLB を使用すると、グローバル サーバー プーリングにより、各ユーザーが地理的に近いサーバーに接続できるようになり、ホップと転送時間が最小限に抑えられます。この例では、ニューヨークに本社を置く企業が GSLB を使用している場合、東京のユーザーは自分の所在地に近いサーバーに接続できるため、ユーザー エクスペリエンスが高速化されます。
GSLBからDNSへ
前の記事 DNSとは何ですか?ドメインネームシステム入門 – システム設計 06 DNS については詳しく説明されていますが、実際にはその動作は負荷分散の概念に関連しています。 DNS は、各 DNS クエリに応じて IP アドレスのリストを並べ替えます。また、別のユーザーも IP の場所のリストを取得します。また、ユーザーはリクエストを処理するためにさまざまなサーバーにリクエストを送信するため、DNS はグローバル サーバー負荷分散を通じてリクエスト トラフィックをさまざまなデータ センターに分散します。
ローカル負荷分散
ローカル負荷分散は、データセンターに限定された負荷分散であり、範囲は 1 つのデータセンターに限定されます。ただし、本質的にはロード バランサーと同じであり、異なるアルゴリズムを通じてトラフィックを対応するサーバーに割り当てます。
ロードバランサーの実装
最初の紹介では、ロード バランサーはハードウェア、ソフトウェア、クラウド ロード バランサーに単純に分類できると述べました。以下に、3 つのロード バランサーの実装について説明します。
ハードウェアロードバランサー
ロード バランサーは 30 年前から存在しており、ロード バランサーはもともとハードウェアに実装されていました。もちろん、初期の頃はハードウェアを使用してロード バランサを構築するのは非常に高価でしたが、当時のトラフィックのユーザー ニーズに対応できるという利点がありました。ただし、現代では、ハードウェア ロード バランサーは必ずしも企業にとっての最初の選択肢ではありません。主な欠点は、ハードウェア ロード バランサーはハードウェアに大きく依存しており、メンテナンスと運用のコストが高くつき、ハードウェアの互換性の問題にも対処する必要があることです。
ソフトウェアロードバランサー
ハードウェアと比較して、ソフトウェア ロード バランサーには、高い柔軟性、プログラマビリティ、低コストなどの追加機能があります。ソフトウェア ロード バランサは拡張性が高く、システムが大きくなってもすぐにセットアップできるため、企業の間でますます人気が高まっています。
クラウドロードバランサ
もちろん、ソフトウェアだけでなく、3大クラウドサービスプロバイダーの登場により、ロードバランサーもクラウドサービスを利用できるようになりました。その中で、ロードバランサー&サービス(LBaaS)もこのタイミングで登場しました。もちろん、IaaS、PaaS、SaaS などの他の固有名詞に興味がある場合は、この記事を読むことができます。 Zeabur の IaaS、PaaS、SaaS について説明してください。クラウドサービスモデルのご紹介!。
クラウド ロード バランサーの最大の利点は、ユーザーが現在の使用量に基づいてクラウド プロバイダーに料金を支払うことができることです。また、ハードウェアやソフトウェアの技術的な敷居と比較して、クラウド ロード バランサーの敷居は比較的低いです。したがって、クラウド ロード バランサーは現在、多くの企業にとって主な選択肢の 1 つです。
結語
ロードバランサはシステム設計における重要な概念の一つであり、大規模システムには欠かせないツールでもあります。システムのパフォーマンスが向上するだけでなく、短期間の高トラフィックによってシステムがクラッシュすることもなくなります。
他のシステム設計に興味がある場合は、他のシステム設計の記事も読んでみてください。コミュニケーションのためにメッセージを残すことも大歓迎です。
関連記事
DNSとは何ですか?ドメインネームシステム入門 – システム設計 06
システム設計コンポーネントの構成要素の概要 – システム設計 05