English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

ゲスト
1 / ?

受信と送信を異なる集合として

ネットワークアーキテクチャにおける二部グラフ

二部グラフはノードを2つの集合に分割し、エッジは集合間のみを結ぶことが許可される(同一集合内では不可)。

ネットワーク境界には自然な二部構造がある:

- 受信側: 片側に外部クライアント、もう片側に内部サービス。エッジ: 入ってくる外部リクエスト、出ていく内部レスポンス。

- エグレス側: 片側に内部サービス、もう片側に外部宛先。エッジは、内部サービスからのアウトバウンド呼び出しの開始と、外部からの応答の返却を表す。

非対称性:

- イングレス: ソースセットは無制限(インターネット上の誰でも)。宛先セットは小さい(少数のサービス)。トラフィック量はユーザー数に比例してスケールする。

- エグレス: ソースセットは小さい(少数の内部サービス)。宛先セットは有界(少数の既知のパートナー)。トラフィック量は内部アクティビティに比例してスケールする。

単一ボックス設計では、両方の二部グラフの半分が1つのノードに集約される。そのノードには、外部からのファンイン(イングレス)と、内部からのファンイン(エグレスの逆方向)の両方が存在する。ノードの負荷は、両側の合計となる。

分割設計では、両方の二部グラフの半分が別々のノードに保持される。各ノードは、適切なスケール軸を持つ1つの役割を処理する。

Bipartite ingress & egress: separate node sets, separate cut vertices

小規模なSaaSの二部グラフを描画してください:5つの外部顧客エンドポイント(リクエストを送信)、3つの内部サービス(バックエンド)、および4つの外部パートナーAPI(アウトバウンドで呼び出される)。どのエッジがイングレスの二部グラフの半分に属し、どのエッジがエグレスの二部グラフの半分に属するかを特定してください。内部サービスの1つが障害を起こした場合に、グラフの接続性に何が起きるか予測してください。

分裂の前:至る所にあるカット頂点

単一ボックス:1つの頂点がすべてを支えている

分割前、すべての外部/内部ペアの間に単一のプロキシボックスが存在します。グラフの用語では、これは高次のカット頂点であり、これを削除すると、すべてのクライアントがすべてのバックエンドから、かつすべての内部サービスがすべての外部パートナーから切断されます。

このノードでの接続性は1です。このノードを妨害するもの(プロセスクラッシュ、ネットワークの故障、OOMキル)は、すべての依存パスを切断します。

分割後:カット頂点が2つの軽量なノードに置き換えられる

ingressとegressに分割することで、1つだったグラフノードが2つになります。各ノードは、もはや片方の二部グラフの半分にのみ位置します:

- Ingressノード:外部クライアントから内部サービスへの二部グラフの半分のカット頂点

- Egressノード:内部サービスからパートナーへの二部グラフの半分のカット頂点

ヘアピンループは幾何学的に消えます:単一ボックスのグラフでは、内部サービスがパブリックアドレス経由で外部向けサービスに到達しようとする場合、同じ頂点を2回通過する必要がありました(egressロールで出て、ingressロールで入る)。分割されたグラフでは、通過は2つの異なる頂点にヒットします。

各側の接続性は1のままですが、2つのカット頂点は独立して置き換えることができます。第2のingressプロキシを追加することで、egress側を変更せずにingress側の接続性を2に引き上げることができます。

各方向の複製

本番環境のフロートでは、通常、2台以上のイングレスプロキシ(HA)と2台以上のエグレスプロキシ(HA)が運用されます。各方向は独立して接続性2に達します。必要に応じて、各方向でキャパシティが水平にスケールされます。

あるチームは現在、1台のプロキシボックス(両方向の単一カットバーテックス)を運用しています。これをイングレス1台とエグレス1台に分割し、その後、第2のイングレス(HAペア)を追加しましたが、エグレスは単一のままです。各ステップでのグラフの接続性の変化を順に説明し、ステップ3の後に依然として接続性1である二部グラフの半分(したがって、依然として最も耐障害性が低い障害モード)を特定してください。

ネットワーク分割耐性

統合

これにより、ネットワークアーキテクチャを二部グラフとして読み取り、カット頂点を特定し、各半分の接続性を追跡できるようになりました。

これをネットワーク分割に適用してください。

ネットワーク分割とはグラフのカットです。分割を跨ぐエッジが失敗し、両側は動作を維持しますが、互いに到達できなくなります。

地理的に分散されたシステムには、単一のDC間リンクで接続された2つのデータセンターがあります。流入トラフィックはDC1経由で入ります。流出トラフィックはDC1経由で外部パートナーへ送信されます。一部の内部サービスはDC2に存在し、ステートフルな操作のためにDC1へコールバックします。

DC間リンクが失敗した場合に何が起きるか予測してください:(1) 各DC内でどの二部グラフの半分が接続されたままか、(2) どのトラフィックフローが継続し、どのフローが停止するか、(3) 完全な障害ではなく、限界のある劣化でこの分割に耐えられるようにするためのアーキテクチャ変更を1つ提案してください。

補足ノート

補足ノート

この幾何学的レッスンは、Ingress & Egress Separation のメインレッスンを二部グラフ解析として再定式化しています。

次の補足ノート geometry_of_failure_modes_and_blast_radius では、介在中心性(ボトルネックノードの特定)と最小カット(影響範囲の上限)を導出します。

よくできました。