GitHubはGLB独自のロードバランサーコードを開きます


GitHubは、毎日何十億ものHTTP、Git、およびSSH接続に対応しています。 生産性を向上させるために、同社はベアメタル、つまり仮想化の追加レベルなしのコンピューターの使用を開始しました。 ただし、歴史的に、ネットワーク負荷分散は最適化がより困難です。

これを行うために、GitHubは少数の大型マシンとhaproxyの起動に垂直スケーリングを使用しました。 さらに、10Gリンクのフォールトトレランスを提供する特定のハードウェア構成がインストールされました。

その結果、GitHubのエンジニアは、リソースの個々のニーズに対応する独自のソリューションを作成する必要があることに気付きました。 そのため、彼らはロードバランサー(GitHubロードバランサー-GLB)を開発しました。 GitHubは、開発をオープンソースプロジェクトに変えることを決定しました。

エンジニア 、GitHubに水平スケーリングやその他の標準的なバランシングスキームを実装するだけでは十分ではないと述べました。
プロジェクトの負荷または出席の増加に伴い、遅かれ早かれ、垂直スケーリング(メモリ、ディスク速度などのサーバーリソースの増加)は一定の制限に反し、目立った増加はありません。 この場合、水平スケーリングが使用されます-新しいサーバーを追加し、それらの間で負荷を再分散します。

開発者は、以前のシステムのボトルネックを考慮して、新しいバランスシステムの次の要件に注目しました。

•標準のネットワーク機器で動作します。
•水平方向にスケーリングされます。
•高品質のアクセス、TCP接続の安定性、フォールトトレランスを提供します。
•新しい接続のブロックをサポートします。
•個々のサービスと複数のサービスのホストの負荷分散。
•反復開発をサポートし、通常のソフトウェアとして展開します。
•統合テストではなく、各レイヤーのテストを許可します。
•複数のプレゼンスポイントとデータセンターで機能します。
•一般的なDDoS攻撃および新しいタイプの攻撃に対処するツールに抵抗します。

IPを使用する


通常、1つの外部パブリックIPアドレスが1つの実マシンに関連付けられています。 DNSを使用して、トラフィックを複数のIPに分割できます。 これにより、複数のサーバーにトラフィックを分散できます。 GitHubには、1つのIPアドレスを複数のマシンに関連付けることができるソリューションが必要でした。

このため、同社はECMPルーティング(等コストマルチパスルーティング)を使用しました。これにより、この問題が解決され、接続レベルでのバランシングが可能になりました。

分離L4 / L7


負荷分散は、レベルL4およびL7で個別に実行されます。 L4レベルでは、ルーターはECMPを使用し、L7にトラフィックを送信します。L7は必要なソフトウェア(たとえばhaproxy)を起動します。

今後の投稿では 、GitHubのエンジニアは、新しい負荷分散システムへの移行について説明するとともに、新しい開発をより詳細に説明することを約束します。

Source: https://habr.com/ru/post/J310852/


All Articles