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のエンジニアは、新しい負荷分散システムへの移行について説明するとともに、新しい開発をより詳細に説明することを約束します。



All Articles