JP6445621B2 - 分散型ロードバランサ - Google Patents

分散型ロードバランサ Download PDF

Info

Publication number
JP6445621B2
JP6445621B2 JP2017112933A JP2017112933A JP6445621B2 JP 6445621 B2 JP6445621 B2 JP 6445621B2 JP 2017112933 A JP2017112933 A JP 2017112933A JP 2017112933 A JP2017112933 A JP 2017112933A JP 6445621 B2 JP6445621 B2 JP 6445621B2
Authority
JP
Japan
Prior art keywords
node
load balancer
server
packet
connection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017112933A
Other languages
English (en)
Other versions
JP2017184272A (ja
Inventor
サード,ジェームズ・クリストファー ソレンソン,ザ
サード,ジェームズ・クリストファー ソレンソン,ザ
ローレンス,ダグラス・スチュワート
スリニヴァサン,ヴェンカトラガヴァン
ヴァイジャ,アクシャイ・スハス
チャン,ファン
Original Assignee
アマゾン・テクノロジーズ・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アマゾン・テクノロジーズ・インコーポレーテッド filed Critical アマゾン・テクノロジーズ・インコーポレーテッド
Publication of JP2017184272A publication Critical patent/JP2017184272A/ja
Application granted granted Critical
Publication of JP6445621B2 publication Critical patent/JP6445621B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1038Load balancing arrangements to avoid a single path through a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/288Distributed intermediate devices, i.e. intermediate devices for interaction with other intermediate devices on the same level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/72Routing based on the source address
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Description

本発明は、分散型ロードバランサに関する。
従来のロードバランサは、通常、単一且つ専用のボックスで、多数のネットワーク・イ
ンターフェイス制御部(NIC)、例えば8個のNICを有し、いくつかのNICはクラ
イアントとの間でインバウンドトラフィックやアウトバウンドトラフィックを取り扱い、
他のNICは負荷分散されているホスト装置(例えば、ウェブサーバなどのサーバ)との
間でアウトバウンドトラフィックやインバウンドトラフィックを取り扱う。これら従来の
ロードバランサにおける帯域幅またはスループットは、通常、クライアント側においても
40ギガビット/秒(Gbps)及びサーバ側においても40Gbpsの範囲内である。
クラウド・コンピュータ・サービスなどのネットワークベースのアプリケーション及びネ
ットワークベースのサービスの規模や範囲は増加してきているので、データセンターは、
負荷分散をするためのホスト装置(例えば、ウェブサーバ)を数百ないし数千に達するま
で収容するようになっていく。従来のロードバランサはこのような環境にうまくスケール
を変更することができない。
さらに、従来のロードバランサは、ホスト装置から収集したデータに対して、通常、最
大接続(またはmax conns)、ラウンド・ロビン、及び/または最小の接続(l
east conns)などの技法を使用して、接続を取り扱ういずれかのホスト装置を
選択する。また、従来のロードバランサは、クライアントからの接続(例えば、伝送制御
プロトコル(TCP)接続)を受けて、それゆえ終了させるホスト装置に対して、通常、
プロキシとしての機能を果たし、ホスト装置とロードバランサとの間で確立されたTCP
接続上でクライアントトラフィックをホスト装置に送信する。したがって、これら従来の
ロードバランサを使用した場合に、ホスト装置とクライアントとは直接のTCP接続によ
っては通信しない。
少なくともいくつかの実施形態において、分散型ロードバランシングシステムの実施例のブロック図である。 少なくともいくつかの実施形態において、図1の分散型ロードバランサシステムによって実施されるロードバランシング方法の上位のフローチャートである。 少なくともいくつかの実施形態において、入口、出口及びフロー追跡部の構成要素を有するロードバランサノードの実施例を示す。 少なくともいくつかの実施形態において、分散型ロードバランサ内のルーティング及びパケットフローを示す。 少なくともいくつかの実施形態において、エッジルータに対して広告している入口ノードを示す。 少なくともいくつかの実施形態において、マルチパス・ルーティング方法のフローチャートである。 少なくともいくつかの実施形態において、非対称のパケットフローをグラフィカルに示す。 少なくともいくつかの実施形態において、分散型ロードバランシングシステム内のパケットフローを示す。 少なくともいくつかの実施形態において、分散型ロードバランシングシステム内で接続を確立した場合のパケットフローのフローチャートを提供する。 少なくともいくつかの実施形態において、分散型ロードバランシングシステム内で接続を確立した場合のパケットフローのフローチャートを提供する。 少なくともいくつかの実施形態において、分散型ロードバランシングシステム内のパケットフローを示す。 少なくともいくつかの実施形態において、分散型ロードバランシングシステム内のパケットフローを示す。 少なくともいくつかの実施形態において、分散型ロードバランシングシステム内のパケットフローを示す。 少なくともいくつかの実施形態において、分散型ロードバランシングシステム内のパケットフローを示す。 少なくともいくつかの実施形態において、分散型ロードバランシングシステム内のパケットフローを示す。 少なくともいくつかの実施形態において、分散型ロードバランシングシステム内のパケットフローを示す。 少なくともいくつかの実施形態において、分散型ロードバランシングシステム内のパケットフローを示す。 少なくともいくつかの実施形態において、ロードバランサノードのコンシステントハッシュリングにおけるメンバーシップに影響を与えるイベントの取り扱いを示す。 少なくともいくつかの実施形態において、ロードバランサノードのコンシステントハッシュリングにおけるメンバーシップに影響を与えるイベントの取り扱いを示す。 少なくともいくつかの実施形態において、ロードバランサノードのコンシステントハッシュリングにおけるメンバーシップに影響を与えるイベントの取り扱いを示す。 少なくともいくつかの実施形態において、ロードバランサノードのコンシステントハッシュリングにおけるメンバーシップに影響を与えるイベントの取り扱いを示す。 少なくともいくつかの実施形態において、ヘルスチェック間隔に従って各ロードバランサノードによって実行されるヘルスチェック方法の上位のフローチャートである。 少なくともいくつかの実施形態において、他のロードバランサノードからロードバランサノードをヘルスチェックする方法を示す。 少なくともいくつかの実施形態において、1以上の他のロードバランサノードをヘルスチェックするロードバランサをグラフィカルに示す。 少なくともいくつかの実施形態において、サーバノードをヘルスチェックするロードバランサを示す。 少なくともいくつかの実施形態において、ロードバランサノード110によって維持される他のノードのヘルスの表示をグラフィカルに示す。 少なくともいくつかの実施形態において、各ロードバランサノードによって維持される健康情報を示す。 少なくともいくつかの実施形態において、ロードバランサノードの障害の取り扱いを示す。 少なくともいくつかの実施形態において、ロードバランサノードの障害の取り扱いを示す。 少なくともいくつかの実施形態において、接続公開技法をグラフィカルに示す。 少なくともいくつかの実施形態において、接続公開技法をグラフィカルに示す。 少なくともいくつかの実施形態において、各ロードバランサモジュールによって実行される接続公開方法の上位のフローチャートである。 少なくともいくつかの実施形態において、接続公開パケット内で受信されたアクティブな接続情報を目標のロードバランサノードに対して分散する方法のフローチャートである。 少なくともいくつかの実施形態において、接続公開パケット内で受信されたアクティブな接続情報を目標のロードバランサノードに対して分散する代替方法を示す。 少なくともいくつかの実施形態において、ロードバランサノードに対する例示的なソフトウェア・スタック・アーキテクチャを示す。 実施形態において使用されるコアパケット処理技術の態様を示す。 少なくともいくつかの実施形態において、ロードバランサノード上でデータフローを処理する例示的なマルチコア・パケット・プロセッサを示す。 少なくともいくつかの実施形態において、ロードバランサノード上でデータフローを処理する他の例示的なマルチコア・パケット・プロセッサを示す。 少なくともいくつかの実施形態において、ロードバランサノードのプロセスによる着信パケットの処理を示す。 少なくともいくつかの実施形態において、ロードバランサノードのプロセスによる発信パケットの処理を示す。 少なくともいくつかの実施形態において、生産環境の中で分散型ロードバランサを含むロードバランシングシステムを示す。 少なくともいくつかの実施形態において、単一のプロセスの中でまたは単一のプロセスとして多数の分散型ロードバランシングシステムの構成要素が構成され且つ実行されることを可能にするメッセージバスのメカニズムを組み込む分散型ロードバランサ試験システムを示す。 少なくともいくつかの実施形態において、メッセージバスのパケットアダプタ及びパケットパイプラインを示す。 少なくともいくつかの実施形態において、メッセージバスのパケットアダプタ及びパケットパイプラインを示す。 少なくともいくつかの実施形態において、例示的なプロバイダ・ネットワーク環境を示す。 少なくともいくつかの実施形態において、分散型ロードバランサの実装を図33Aにみられうようなプロバイダ・ネットワーク環境の例で示す。 少なくともいくつかの実施形態において、分散型ロードバランサ及びサーバノードの例示的な物理的なラック実装を示す。 少なくともいくつかの実施形態において、分散型ロードバランサ及びサーバノードの他の例示的な物理的なラック実装を示す。 少なくともいくつかの実施形態において、ネットワーク内に1つ、2つまたはそれより大きい分散型ロードバランサが実装された例示的なネットワーク環境を示す。 いくつかの実施形態において使用される例示的なコンピュータシステムを示すブロック図である。
いくつかの実施形態及び説明図についての実施例として実施形態が本明細書に記載され
るが、当業者であれば、記載された当該実施形態及び図面には実施形態が限定されないと
いうことを認識するであろう。図面及びそれについての詳細な記述は、開示された特定の
形態に実施形態を限定する意図はなく、その反対に、添付された特許請求の範囲によって
画定される趣旨及び範囲に包含される、すべての変形、等価物、及び代替に及ぶという意
図であることを理解する必要がある。ここで使用された見出しは、構成上の目的のための
みであり、本明細書の範囲または特許請求の範囲を限定するために使用されるものではな
い。この出願を通して使用されるように、「may(〜する)」の用語は、強制的な意味
(すなわち、しなければならない(must)の意味)ではなく、許容的な意味(すなわ
ち、可能性を持つの意味)に使用されている。同様に、「inlcude」、「incl
uding」、「inculudes」の用語は含んでいることを意味し、制限する意味
ではない。
ネットワーク環境における分散型ロードバランシング方法及びシステムの様々な実施形
態について説明する。様々なネットワーク環境における分散型ロードバランサの実施形態
に従って、実装される分散型ロードバランシング方法及びシステムの実施形態について説
明する。分散型ロードバランサの実施形態は、例えば、インターネットなどの外部ネット
ワーク上のクライアントと、図33A及び33Bに示されるようなプロバイダ・ネットワ
ーク1900などのローカルネットワーク上の宛先、一般的には、サーバ(例えば、ウェ
ブサーバ、アプリケーションサーバ、データサーバ等)との間で、パケットフロー、例え
ば、伝送制御プロトコル(TCP)技術のパケットフローを推進するため及び維持するた
めに使用される。実施形態は、TCPパケットフローの処理に関して本明細書において主
に説明するが、TCP以外の他のデータ通信プロトコル、及びパケットフロー処理以外の
他のアプリケーションにも適用されることに留意されたい。
分散型ロードバランサは、特定のクライアントと選択されたサーバ(例えば、ウェブサ
ーバ)との間でTCPパケットフローを推進し維持するために作用する。しかしながら、
分散型ロードバランサは、従来のロードバランサにおいて行われているように、クライア
ントからのTCPフローを終了させることはなく、且つ、サーバに対してプロキシとして
の役割をすることはない。その代わり、分散型ロードバランサのロードバランサノードは
、クライアントから受信されたTCPパケットを目標のサーバにルーティングし、サーバ
がそれらのTCPスタックを使用してクライアントに対するTCP接続を管理する。言い
換えれば、サーバがクライアントからのTCPパケットフローを終了させる。
さらに、従来のロードバランサ技術において行われているように、サーバから収集され
た情報に適用されるロードバランシング技法またはアルゴリズムに基づいて、どのサーバ
が接続要求に対応するかに関してロードバランサノードが決定を下す代わりに、ロードバ
ランサノードは、新たな接続要求を受信するサーバをランダムに選択して、当該サーバノ
ード上に属する分散型ロードバランサの構成要素が、それぞれのサーバの現在の状態の1
以上のメトリクスに基づいて、選択されたサーバが新たな接続要求を受理するかまたは拒
絶するかどうかに関してローカルに決定を下す。したがって、どのサーバが接続要求を受
理すべきかに関する決定は、ロードバランサノードから接続を取り扱うサーバノードに移
管される。言い換えれば、決定は、接続要求が対応されるより近い場所及び時間に移管さ
れる。
クライアントとサーバとの間のパケットフローを推進及び維持するために、分散型ロー
ドバランサの実施形態は、限定はされないが、マルチパス・ルーティング技術、コンシス
テントハッシュ法の技術、分散型ハッシュテーブル(DHT)技術、境界ゲートウェイ・
プロトコル(BGP)技術、メンバーシップ追跡処理、健康ヘルスチェック、接続公開、
及びパケットのカプセル化とデカプセル化を含む様々な技法や技術を利用してよい。これ
らは、分散型負荷分散システムの他の態様と同様、図面と関連して以下説明する。
分散型ロードバランシングシステム
図1は、少なくともいくつかの実施形態において、例示的な分散型ロードバランシング
システムのブロック図である。分散型ロードバランサの実施形態は、ネットワーク100
、例えば、図33A及び33Bに示されるようなサービス・プロバイダのプロバイダ・ネ
ットワーク1900の中に実装される。分散型ロードバランサシステムにおけるクライア
ントパケットの取り扱いの上位の概要として、ネットワーク100の1以上のクライアン
ト160は、例えば、インターネットなどの外部ネットワーク150を介して、ネットワ
ーク100の境界ルータ102に接続してよい。境界ルータ102は、クライアント16
0からの着信パケット(例えば、TCPパケット)を、分散型ロードバランサシステムの
ロードバランサノードレイヤにおけるロードバランサ(LB)ノード110に着信パケッ
トをルーティングする分散型ロードバランサのエッジルータ104の構成要素にルーティ
ングする。少なくともいくつかの実施形態において、エッジルータ104は、フロー単位
のハッシュ化マルチパス・ルーティング技法、例えば、等価マルチパス(ECMP)ハッ
シュ法の技法に従って、ルーティングの決定を下す。ロードバランサノード110は、今
度は、パケットを(例えば、ユーザ・データグラム・プロトコル(UDP)に従って)カ
プセル化し、ネットワーク100上のネットワークファブリック120(例えば、L3ネ
ットワーク)を介してサーバノード130上のローカルロードバランサモジュール132
にカプセル化されたパケットをルーティングする。ファブリック120は、1以上のネッ
トワーク装置、または、限定はされないが、スイッチ、ルータ、及びケーブルを含む構成
要素を含んでよい。サーバノード130上において、ローカルロードバランサモジュール
132は、パケットをデカプセル化し、サーバ134のTCPスタックにクライアントT
CPパケットを送信する。サーバノード130上のサーバ134は、次に、それらのTC
Pスタックを使用してクライアント160に対する接続を管理する。
図2は、少なくともいくつかの実施形態において、図1の分散型ロードバランサシステ
ムによって実行されるロードバランシング方法の上位のフローチャートである。分散型ロ
ードバランサシステムの実施形態は、従来のロードバランサにおいて行われているような
、多数の宛先(例えば、ウェブサーバ)の中に負荷を対応付けている困難な問題を解決す
ることができない。例えば、従来のロードバランサは、一般的に、最大接続、ラウンド・
ロビン、及び/または、最小接続の技法などの技法またはアルゴリズムを使用して、接続
を取り扱うべきいずれかのサーバを選択する。しかしながら、これらの技法は欠点があり
、特に、ロードバランシングの決定をするために使用されるデータがほとんど急速に古く
なるようなことが多い場所での分散型システムにおいては特に成功裏に実行することが困
難である。分散型ロードバランサシステムの少なくともいくつかの実施形態において、従
来のロードバランサにおいて行われているような、1以上のロードバランシング技法を使
用して、接続要求を満たすサーバノード130を選択する試みに代えて、ロードバランサ
ノードレイヤにおけるロードバランサノード110が、クライアント接続のための要求を
受信するサーバノード130をランダムに決定してもよい。サーバノード130が自身を
過負荷であると判断した場合には、当該サーバノード130は接続要求をロードバランサ
ノード110に送信して戻すので、当該サーバノード130が現在は接続を取り扱うこと
ができないことをロードバランサノード110に通知する。ロードバランサノードレイヤ
は、次に、接続要求を受信すべき他のサーバノード130をランダムに決定するか、ある
いは、要求しているクライアント160に対してエラーメッセージを返送して、接続が現
在は確立できないことをクライアント160に通知する。
図2の10に示されるように、分散型ロードバランサシステムのロードバランサノード
レイヤは、通信セッション(例えば、TCP接続)についての要求を送信元から受信する
。送信元は、例えば、分散型平衡器システムを実装するネットワーク100に対する外部
ネットワーク150上のクライアント160であってよい。少なくともいくつかの実施形
態において、要求はネットワーク100の境界ルータ102においてクライアント160
から受信され、例えば、クライアント160からの特定の接続要求がルーティングされる
ロードバランサノード110を擬似ランダムに選択するためのフロー単位の等価マルチパ
ス(ECMP)ハッシュ処理の技法を用いて、ロードバランサノードレイヤにおけるロー
ドバランサ(LB)ノード110に対して着信パケットをルーティングするエッジルータ
104に対してルーティングされる。
20に示されるように、ロードバランサノードレイヤは、宛先ノードをランダムに選択
して、その選択された宛先ノードに接続要求を転送する。宛先ノードは、例えば、ロード
バランサによって対応させられた複数のサーバノード130の1つであってよい。少なく
ともいくつかの実施形態において、ロードバランサレイヤにおけるロードバランサノード
110は、すべての既知のサーバノード130の中から接続要求を受信すべきサーバノー
ド130をランダムに選択してよい。しかしながら、すべての既知のサーバノード130
の中からの単なるランダムな選択ではなく、いくつかの実施形態においては、接続要求を
受信すべきサーバノード130を選択するために、他の方法が使用されてもよい。例えば
、いくつかの実施形態において、サーバノード130に関する情報が、サーバノード13
0のランダムな選択の重みづけをするロードバランサノード110によって使用される。
実施例のように、ロードバランサノード110が、異なるサーバノード130が異なるタ
イプの装置であるか、または、異なるCPUで構成されており、そのため異なる能力また
は容量を持っていることを認識している場合には、サーバノード130の特定のタイプま
たは構成に向かう(または、離れる)ようにランダムな選択に偏りを持たせるためにその
情報が使用されてもよい。
30に示されるように、宛先ノードは、通信セッションを受諾することができるかどう
かを判定する。少なくともいくつかの実施形態において、サーバノード130上のローカ
ルロードバランサ(LB)モジュール132は、サーバノード130上のそれぞれのサー
バ134がそれぞれのサーバ134の現在の状態の1以上のメトリクスに基づいて新たな
接続を受諾できるかどうかを判定する。
40において、接続要求が受諾された場合には、50に示されるように宛先ノードは、
宛先ノードが接続を取り扱うことができる旨をロードバランサノードレイヤに通知する。
60に示されるように、ロードバランサノードレイヤを介して、送信元(例えば、クライ
アント160)と宛先ノード(例えば、サーバノード130上のサーバ134)との間に
通信セッションが確立されることになる。少なくともいくつかの実施形態において、サー
バノード130上のサーバ134は、TCPスタックを使用してクライアント160に対
する接続を管理する。
40において、接続要求が受理されない場合には、70に示されるように、宛先ノード
はロードバランサノードレイヤに通知し、方法は要素20に戻る。その後、ロードバラン
サノードレイヤは、20において他の宛先ノードをランダムに選択するか、または、要求
しているクライアント160に対して、現在は接続を確立することができない旨を通知す
ることができる。クライアント160は、必ずしも接続要求を再実行する必要はなく、要
素10において再び方法を開始することに留意されたい。
再び図1を参照すると、分散型ロードバランサシステムの少なくともいくつかの実施形
態分散型は、汎用のハードウェアを使用して、ネットワーク100上のエッジルータ10
4において受信されたクライアントトラフィックをネットワーク100上のサーバノード
130にルーティングする。分散型ロードバランサの少なくともいくつかの実施形態は、
多数のロードバランサノード110を含むロードバランサノードレイヤを含んでもよい。
少なくともいくつかの実施形態において、各ロードバランサノード110は、ロードバラ
ンサノードレイヤにおいて1以上の多数の役割を果たす。ロードバランサノード110の
これらの役割は、入口ノード、及び出口ノード、及びフロー追跡部ノード(所定のパケッ
トフローに対する一次フロー追跡部または二次フロー追跡部として)を含む。少なくとも
いくつかの実施形態において、各ロードバランサノード110は、汎用のラック収容型演
算装置などの独立した演算装置としてまたはその上で、ロードバランサノードレイヤの中
に実装されてもよい。少なくともいくつかの実施形態において、各ロードバランサノード
110は、入口ノード、出口ノード、及びフロー追跡部ノード(パケットフローに対する
一次または二次フロー追跡部として)の3つの役割の各々を果たすが、通常は、ロードバ
ランサノード110は、特定のパケットフローに対する複数の役割の中の1つの役割だけ
に従事する(ただし、2つまたは3つの役割に従事することも可能)。しかしながら、少
なくともいくつかの実施形態において、ロードバランサノード110は、特定のパケット
フローに対する一次フロー追跡部及び二次フロー追跡部の両方としての役割を果たすこと
は許されないことに留意されたい。あるいは、いくつかの実施形態において、各ロードバ
ランサノード110は、3つの役割の中の1つの役割のみを果たす。この実施形態におい
ては、演算装置の独立した組み合わせは、特に、入口ノード、出口ノード、及びフロー追
跡部ノードとして、ロードバランサノードレイヤの中に実装されてもよい。
少なくともいくつかの実施形態において、コンシステントハッシュ法及びコンシステン
トハッシュリング技術は、パケットフローに対する一次及び二次フロー追跡部を決定する
ために適用されてもよい。クライアントからの各パケットフローは、例えば、クライアン
トIPアドレス、クライアントポート、サーバ(パブリック)IPアドレス、及びサーバ
ポートから構成される4つのタプルによって一意に認証される。この識別子は、クライア
ント及び公開エンドポイント対を示すCPまたはCcPpとして略すことができる。任意
の所定のTCPフロー(またはCP対)に関連するパケットは、エッジルータ104から
のハッシュ化マルチパス(例えば、ECMP)フロー分散のせいで、入口サーバ112と
して動作する任意のロードバランサノード110上に出現し得る。入口ノードとして機能
しているロードバランサノード110にパケットが到達した場合には、入口ノードは、パ
ケットフロー(すなわち、一次フロー追跡部ノード)に対応する状態を維持することを担
うのにどのロードバランサノード110にするかを決定することができるように、コンシ
ステントハッシュ法が使用される。CP対は、入口ノードによってハッシュ化されてコン
システントハッシュリングに入り、パケットフローに関する状態情報を維持することを担
うのにどのロードバランサノード110にするかを決定する。コンシステントハッシュリ
ングにおいてパケットフローに対応するCP対のコンシステントハッシュに従って決定さ
れたノード110は、パケットフローに対して一次フロー追跡部としての機能を果たすノ
ード110である。少なくともいくつかの実施形態において、コンシステントハッシュリ
ングの中で後に続くノードは、パケットフローに対して二次フロー追跡部としての機能を
果たす。
図3は、少なくともいくつかの実施形態において、すべての3つの役割(入口、出口、
及びフロー追跡部)を実施する構成要素を含む例示的なロードバランサ(LB)ノード1
10を示す。この実施例において、入口サーバ112の構成要素は、クライアントからの
インバウンドのTCPパケットを受信して、そのTCPパケットをカプセル化されたパケ
ットとしてサーバに送信する入口の役割を実行する。出口サーバ114の構成要素は、サ
ーバからのアウトバウンドのカプセル化されたパケットを受信して、デカプセル化された
TCPパケットをクライアントに対して送信する出口の役割を実行する。フロー追跡部1
16の構成要素は、クライアント160とサーバ134との間に確立された1または2以
上のパケットフローに対応する一次または二次フロー追跡部として実行する。入口サーバ
112はまた、ロードバランサノード110上のフロー追跡部116または他のロードバ
ランサノード110上のフロー追跡部116と通信し、それぞれのクライアント160か
ら受信した接続要求に応答して、クライアントとサーバ134の1つとの間のTCP接続
を開始し、または、パケットフローに対するマッピング情報を取得する。
<ロードバランサノード>
再び図1を参照すると、少なくともいくつかの実施形態において、ロードバランサノー
ドレイヤにおけるロードバランサノード110は、ネットワーク上の1以上のルータ10
4からのクライアントトラフィック(パケット、例えば、TCPパケット)を受信して、
ファブリック120上の分散型ロードバランサシステムによって使用されるプロトコル(
例えば、ユーザ・データグラム・プロトコル(UDP))に従って、そのパケットをカプ
セル化する。次に、ロードバランサノードレイヤは、そのカプセル化されたパケットを宛
先サーバノード130に対してファブリック120を介して転送する。各サーバノード1
30は、ロードバランサシステムの構成要素であるローカルモジュール132を含む。モ
ジュール132は、ここにおいてはロードバランサモジュールまたは単にLBモジュール
と称され、サーバノード130上のソフトウェア、ハードウェア、またはこれらの複合内
に実装されてもよい。各サーバノード130において、それぞれのロードバランサモジュ
ール132は、パケットをデカプセル化して、正常なTCP処理のためにローカルTCP
スタックに対してTCPパケットを送信する。少なくともいくつかの実施形態において、
ロードバランサノードレイヤは、すべてのクライアント−サーバTCPフローにおける状
態情報を維持するが、しかし、ロードバランサノードレイヤにおけるロードバランサノー
ド110は、TCPフローに関するいかなるものも解釈することはない。各フローは、そ
れぞれのサーバノード130上のサーバ134とクライアント160との間で管理される
。分散型ロードバランサシステムは、TCPパケットが正しい宛先サーバ134に到達す
ることを保証する。各サーバノード130におけるロードバランサモジュール132は、
それぞれのサーバ134がロードバランサノード110から受信したクライアント接続要
求に応答する新たな接続を受諾するかまたは拒絶するかどうかについて決定を下す。
少なくともいくつかの実施形態において、分散型ロードバランシングシステムは、コン
システントハッシュ法の技術を使用して、例えば、どのサーバノード130が特定のTC
Pパケットフローに対して責任を負うかについて、どのロードバランサノード110が記
憶すべきかを決定する。コンシステントハッシュ法の技術を使用することにより、ロード
バランサノードレイヤにおけるロードバランサノード110は、コンシステントハッシュ
リングとして見られ、ロードバランサノード110はそのリング内のメンバーシップを追
跡し、コンシステントハッシュ法の機能に従って、特定のパケットフローに対して責任を
負うそのリング内の特定のメンバーを決定する。少なくともいくつかの実施形態において
、クライアント160とサーバ134との間における各パケットフローの追跡に対して責
任を負う2つのロードバランサノード110が存在するが、これらのノード110は一次
フロー追跡部(PFT)ノード及び二次フロー追跡部(SFT)ノードと称される。少な
くともいくつかの実施形態において、一次フロー追跡部は、フローについてのコンシステ
ントハッシュリング上の第1のロードバランサノード110であり、二次フロー追跡部は
、一次フロー追跡部ノードとは異なる、コンシステントハッシュリング上の次のまたはそ
れに続くロードバランサノード110である。この配列において、一次フロー追跡部ノー
ドに障害が生じた場合には、二次フロー追跡部ノードが新たな一次フロー追跡部になり、
他のロードバランサノード110(例えば、コンシステントハッシュリング上の次のノー
ド110)が二次フロー追跡部の役割を負う。少なくともいくつかの実施形態において、
ロードバランサノード110は、所定のパケットフローに対する一次フロー追跡部及び二
次フロー追跡部の両方としての機能を果たすことは許されないことに留意されたい。コン
システントハッシュリングにおけるこのメンバーシップの変更及び他のメンバーシップの
変更については、本明細書において後述する。少なくともいくつかの実施形態において、
ロードバランサの実装についての構成情報(例えば、現在実装されているロードバランサ
ノード110及びサーバノード130の信頼できるリスト)は、分散型ロードバランシン
グシステムの構成サービス122の構成要素によって維持され、例えば、ファブリック1
20を介してロードバランサノード110に結合された1以上のサーバ装置上に実装され
てもよい。
少なくともいくつかの実施形態において、一次及び二次フロー追跡部ノードとして機能
することに加えて、ロードバランサノード110はまた、所定のフローに対する2つの他
の役割、すなわち、入口ノードの役割及び出口ノードの役割のうち1つを実行してもよい
。パケットフローに対する入口ノードは、エッジルータ104からのそれぞれのパケット
フローを受信して、サーバノード130上の選択されたサーバ134に対してファブリッ
ク120を介してそのパケットフローを(カプセル化されたパケットとして)転送するロ
ードバランサノード110である。入口ノードは、実際のクライアントデータ(TCPデ
ータパケット)をそれぞれの宛先サーバノード130に対して移動する唯一のロードバラ
ンサノード110である。入口ノードがクライアントトラフィックをどのロードバランサ
モジュール132に対して転送すべきかを知るように、その入口ノードは宛先サーバノー
ド130上のそれぞれのロードバランサモジュール132に対するTCPフローのマッピ
ングを維持する。出口ノードは、ファブリック120を介してサーバノード130から受
信したパケットフローについての応答トラフィックを、境界ネットワークを介してそれぞ
れのクライアント160に転送することに対して責任を負うロードバランサノード110
である。ロードバランサモジュール132は、サーバ134から得られた応答パケットを
ロードバランサプロトコル(例えば、UDP)に従ってカプセル化して、そのカプセル化
された応答パケットをフローに対応するそれぞれの出口ノードにファブリック120を介
して送信する。出口ノードは、ステートレスであり、単にパケットをデカプセル化し、境
界ネットワーク上の応答パケット(例えば、TCPパケット)を境界ルータ102に送信
して、それぞれのクライアント160に外部ネットワーク150を介して配信する。
上記したように、少なくともいくつかの実施形態において、各ロードバランサノード1
10は、異なるパケットフローに対して入口ノード、出口ノード、及び/またはフロー追
跡部ノード(一次または二次フロー追跡部のいずれかとして)の役割を実行する。ロード
バランサノードレイヤにおける単一のロードバランサノード110は、ノードが処理して
いるパケットフローが何であるかに依存して、役割のいずれか1つを実行する。例えば、
少なくともいくつかの実施形態において、ロードバランサノード110は、1つのパケッ
トフローに対しては入口ノードとして、他のパケットフローに対しては一次もしくは二次
フロー追跡部として、さらに他のパケットフローに対しては出口ノードとして実行しても
よい。さらに、少なくともいくつかの実施形態において、ロードバランサノード110は
、同一のパケットフローに対して例えば、所定のパケットフローに対して入口ノードとし
て且つ一次(または二次)フロー追跡部ノードとして多重の役割を実行する。しかしなが
ら、少なくともいくつかの実施形態において、冗長性及び回復の目的のために、ロードバ
ランサノード110は、同一のパケットフローに対して一次及び二次フロー追跡部ノード
の両方としての役割を果たすことは許されない。
各ロードバランサノード110が入口サーバ、出口サーバ、及びフロー追跡部の3つの
役割のいずれかを果たす実施形態について、上記説明した。しかしながら、いくつかの実
施形態においては、演算装置の異なるグループは、ロードバランシングシステムにおいて
異なる役割を割り当てられてもよい。例えば、いくつかの実施形態においては、入口ノー
ド、出口ノード、及びフロー追跡部ノードの各々が独立した演算装置に実装された異なる
組み合わせが存在してもよい。いくつかの実施形態における他の実施例として、演算装置
の1つの組み合わせは入口ノード及びフロー追跡部ノードの両方としての役割を果たし、
その一方、演算装置の他の組み合わせは出口ノードのみとしての役割を果たす。
ロードバランサモジュール
上記したように、各サーバノード130は、ロードバランサシステムの構成要素である
ローカルロードバランサモジュール132を含む。モジュール132は、サーバノード1
30上でソフトウェア、ハードウェア、またはこれらの組み合わせの中に実装されてもよ
い。少なくともいくつかの実施形態において、サーバノード130上のロードバランサモ
ジュール132は、3つの主な役割、すなわち、発信パケットのカプセル化及び着信パケ
ットのデカプセル化、ノード130上のサーバ134に対するローカルロードバランシン
グの決定、及び接続公開を実行してもよい。これら3つの役割について以下に簡単に説明
し、さらに詳細について本明細書において後述する。
分散型ロードバランシングシステムの少なくともいくつかの実施形態において、TCP
接続を終了させてはならず、且つ、パケットをスプーフしてはならない。ロードバランサ
ノードレイヤによって送信されたすべてのパケットの送信元IPアドレス及び宛先IPア
ドレスは、パケットフローに含まれているエンドポイント(すなわち、クライアント16
0及びサーバ134)の実際のIPアドレスである。スプーフィングの代わりに、これら
の実施形態は、ファブリック120上のロードバランサノード110及びサーバノード1
30の間で送信されるすべてのパケットを、例えば、UDPパケットとしてカプセル化す
る。フローに対して入口ノードとして機能するロードバランサノード110からサーバノ
ード130に到着するパケットフロー内のインバウンドパケットは、ロードバランサノー
ド110によってカプセル化されるので、そのパケットはデカプセル化され、且つ、ノー
ド130上のサーバ134に対するローカルホストTCPフローに対してリダイレクトさ
れる必要がある。ノード130上のロードバランサモジュール132は、このデカプセル
化を実行する。同様に、サーバ134からのパケットフローにおける発信パケットは、ロ
ードバランサモジュール132によってカプセル化され、ファブリック120を介して、
パケットフローにおける出口ノードとして機能するロードバランサノード110に送信さ
れる。
少なくともいくつかの実施形態において、サーバノード130上のロードバランサモジ
ュール132もまた、それぞれのサーバノード130上のサーバ134に対するロードバ
ランシングに関連するローカルな決定を下す。特に、ノード130上のロードバランサモ
ジュール132は、新たなTCP接続のための要求の受信に応答して他のTCPフローを
それぞれのサーバ134が受諾するかどうかを決定する。上記したように、ロードバラン
サノード110はロードバランサモジュール132に送信されるすべてのパケットをカプ
セル化するので、ロードバランサモジュール132は実際にはクライアント160からの
TCP同期(SYN)パケットを受信しない。その代わりに、ロードバランサモジュール
132は、ロードバランサモジュール132が受諾または拒絶のいずれかが可能なフロー
追跡部116からのカプセル化プロトコル(例えば、UDP)に従って、接続要求メッセ
ージを受信する。ロードバランサモジュール132が接続要求メッセージを受諾した場合
には、ロードバランサモジュール132はローカルホスト宛てのSYNパケットを生成す
る。ローカルホストが接続を受諾した場合には、これはそれぞれのクライアント接続を取
り扱う実際のTCPスタックになる。
少なくともいくつかの実施形態において、接続要求メッセージを受諾すべきかどうかに
ついて決定を下すために、ロードバランサモジュール132は、サーバノード130上の
現在の資源使用量に関する1以上のメトリクスを観察し、新たな接続を取り扱うのに使用
できる十分な資源が存在する場合には、ロードバランサモジュール132はその接続を受
諾する。少なくともいくつかの実施形態において、ロードバランサモジュール132によ
って判断された資源のメトリクスは、1以上のCPUの使用、直前の帯域幅の使用量、及
び確立された接続数を含んでもよいが、これらには限定されない。いくつかの実施形態に
おいては、これらのメトリクスの代わりにまたはこれらのメトリクスに加えて、他のメト
リクスが検討できる。例えば、いくつかの実施形態において、ロードバランサモジュール
は、サーバの待ち時間(すなわち、サーバ接続の未処理分の中で使われている時間要求の
量)をメトリックとして判断し、サーバの待ち時間が閾値を超えている場合には、接続要
求を拒絶する。これらのメトリクス及びまたは他のメトリクスを使用することで、ロード
バランサモジュール132は、それぞれのサーバ134に対して、そのサーバ134が新
たなパケットフローを受諾すべきかまたは拒絶すべきかどうか決定できる。少なくともい
くつかの実施形態において、資源の利用率(例えば、N%の利用率)は、単独にまたは組
み合わせて、且つ、閾値(例えば、90%の利用率)と比較されたメトリクスから決定さ
れてもよい。決定された資源の利用率が、閾値以上である場合、あるいは、これから追加
される接続が閾値を超える利用率に移行するおそれがある場合には、接続要求は拒絶され
る。
少なくともいくつかの実施形態において、ロードバランサモジュール132は、接続要
求メッセージが拒絶されるかどうかを判定するために、確率論的方法を実施してもよい。
上記したように、資源の利用率が閾値以上である場合にすべての接続要求を拒絶する代わ
りに、この方法は、2以上の異なる利用のレベルにおいて異なる確率で接続要求を拒絶し
てもよい。例えば、資源の利用が80%である場合には、ロードバランサモジュール13
2は20%の確率で接続要求を拒絶し、資源の利用が90%である場合には、ロードバラ
ンサモジュール132は25%の確率で接続要求を拒絶し、資源の利用が95%である場
合には、ロードバランサモジュール132は50%の確率で接続要求を拒絶し、98%以
上である場合には、ロードバランサモジュール132はすべての接続要求を拒絶する。
少なくともいくつかの実施形態において、各接続要求メッセージは、ロードバランサモ
ジュール132によって接続要求メッセージがこれまで何回拒絶されたかの指示を含んで
もよい。ロードバランサモジュール130によって受信された接続要求メッセージが、閾
値の回数を超えて拒絶されたことを示す場合には、ロードバランサモジュール130は、
サーバノード130の性能メトリクスがたとえ接続要求を拒絶すべきであることを示す場
合であっても、接続を受諾してもよい。
場合によっては、接続要求メッセージを送信されたロードバランサモジュール132の
すべてが接続要求を拒絶する可能性もある。少なくともいくつかの実施形態において、接
続要求メッセージが無期限にロードバランサモジュール132からロードバランサモジュ
ール132に戻されることを回避するために、各接続要求メッセージに生存時間が与えら
れてもよい。この生存時間が切れたときは、フロー追跡部ノードは、要求を終結し、現在
は要求に対応できないことをそれぞれのクライアント160に通知することができる。
少なくともいくつかの実施形態において、サーバノード130上のロードバランサモジ
ュール132もまた、ロードバランサノード110に対して接続公開を実行する。少なく
ともいくつかの実施形態において、接続公開を実行するために、定期的(例えば、1秒に
1回)または不定期に、各ロードバランサモジュール132は、サーバノード130上の
ルーティングテーブル(例えば、netstatルーティングテーブル)を観察し、アク
ティブな接続(TCPフロー)のリストを公開してロードバランサノード110に戻す。
所定のパケットフローの存在について情報を必要とするロードバランサノード110は、
それぞれのパケットフローに対して入口ノードとして且つ一次及び二次フロー追跡部とし
ての役割を果たすロードバランサノード110である。いくつかの実施形態においては、
ロードバランサモジュール132は、コンシステントハッシュ法の技法を用いて、サーバ
ノード130上のアクティブなTCPフローについて情報を必要とするロードバランサノ
ード110のリストをフィルタリングする。例えば、ロードバランサモジュール132は
、コンシステントハッシュリングに従って所定のパケットフローに対して一次及び二次フ
ロー追跡部としての役割を果たすのがどのロードバランサノード110であるかを判定す
ることができる。いくつかの実施形態において、ロードバランサモジュール132は、各
パケットフローについてロードバランサモジュール132にデータパケットを最後に送信
したのがどのロードバランサノード110であるかを追跡し、この情報を用いてパケット
フローに対して入口ノードとして対応しているのがどのロードバランサノード110であ
るかを追跡するが、それは入口ノードのみがクライアントデータをロードバランサモジュ
ール132に転送するからである。いくつかの実施形態において、ロードバランサモジュ
ール132は、次に、パケットフローについて情報を必要とすることを決定したロードバ
ランサノード110の各々に関するメッセージを公式化し、そのメッセージをロードバラ
ンサノード110に送信し、それぞれのサーバノード130がクライアント160に対す
る接続をまだ維持していることをノード110に通知する。ロードバランサモジュール1
32によるロードバランサノード110へのこの接続公開は、ロードバランサノード11
0におけるリースの延長と見なされてもよい。ロードバランサノード110が、一定の期
間(例えば、10秒)内の特定のパケットフローを示す接続公開メッセージを受信しなか
った場合には、ロードバランサノード110は、解放されてそれぞれのパケットフローの
ことを忘れる。
ロードバランサノードに対するマルチパス・ルーティング
図4は、少なくともいくつかの実施形態において、分散型ロードバランサにおけるルー
ティング及びパケットフローの態様を示す。少なくともいくつかの実施形態において、各
入口ノード(入口ノードは、図4においては入口サーバ112として示さる)は、1以上
の公開エンドポイント(例えば、IPアドレス及びポート)にルーティングできる自分の
能力を、例えば、境界ゲートウェイ・プロトコル(BGP)を経由して、分散型ロードバ
ランサに関するエッジルータ104に広告する。少なくともいくつかの実施形態において
は、各入口ノードがBGPセッション経由でエッジルータ104に自身を広告するという
よりむしろ、図5に示されるように、1以上の他の入口ノード、例えば、2つの隣接する
ノードが、エッジルータ104とBGPセッションを確立して当該入口ノードを広告する
従来のロードバランサは、通常、単一の公開エンドポイントの役割を果たすことのみが
できる。反対に、分散型ロードバランサの実施形態によって、多数のロードバランサノー
ド110が単一の公開エンドポイントの役割を果たすことを可能にする。ルータの能力に
依存するならば、このことにより、すべての入口サーバ112に対してルーティングされ
た単一のパブリックIPアドレスが、エッジルータ104を介して全体の帯域幅(例えば
、160Gbps)を取り扱うことができる構成を可能にする。少なくともいくつかの実
施形態において、このことを遂行するために、エッジルータ104は、レイヤ4のフロー
単位ハッシュ化マルチパス・ルーティング技法、例えば、等価マルチパス(ECMP)ル
ーティング技法を利用して、各々が同一のパブリックIPアドレスを広告する多数の入口
サーバ112の全体に亘ってトラフィックを分散する。エッジルータ104のフローハッ
シュの部分として、フローに対するレイヤ4の送信元ポート及び宛先ポートを使用して、
入口サーバ112のすべてに対して着信パケットを分散することにより、一般的には、入
口サーバ112として機能している同一のロードバランサノード110にルーティングさ
れた各接続のためにパケットを保持して、パケットが順序から外れるのを回避する。しか
しながら、いくつかの実施形態においては、エッジルータ104は、他の技法を使用して
入口サーバ112の全体に亘ってトラフィックを分散することに留意されたい。
図4もまた、ネットワーク100上に実装される2以上の分散型ロードバランサを示す
。2以上の分散型ロードバランサは、各々が複数のサーバ130に対応するとともに、各
々が異なるパブリックIPアドレスを広告する独立したロードバランサとして各々が行動
し、あるいは、図4に示されるように、2以上の分散型ロードバランサが、各々同一のI
Pアドレスを広告し、ハッシュ法の技法(例えば、レイヤ4のフロー単位ハッシュ化マル
チパス・ルーティング技法)が境界ルータ102において使用されて、パケットフローを
エッジルータ104に区分し、そして今度は、エッジルータ104がパケットフローを対
応するそれぞれの入口サーバ112に分散する。
図5は、少なくともいくつかの実施形態において、入口ノードをエッジルータに広告す
るために境界ゲートウェイ・プロトコル(BGP)を使用することを示す。この実施例に
おいて、ロードバランサ実装の中に、入口ノード110Aないし110Dとしての役割を
果たす4つのロードバランサノードがある。エッジルータ104は、クライアント(図示
せず)からの着信パケットをロードバランサノード110にルーティングする。少なくと
もいくつかの実施形態において、エッジルータ104は、レイヤ4のフロー単位ハッシュ
化マルチパス・ルーティング技法、例えば、等価マルチパス(ECMP)ルーティング技
法に従って、ルーティングの決定を下す。
少なくともいくつかの実施形態において、エッジルータ104は、入口ノード110に
よって開始されたセッションを広告する境界ゲートウェイ・プロトコル(BGP)技術を
介して、ロードバランサ実装の中でクライアントトラフィックを受信するために現在使用
できる入口ノード110について学習する。各入口ノード110は、エッジルータ104
に対して自身を広告するためにBGPを使用することができる。しかしながら、BGPは
、一般に、収束するのに比較的長い時間(3秒以上)がかかる。各入口ノード110がB
GPを介して自身を広告する際にこの技法を使用すると、入口ノード110がダウンに至
る場合には、エッジルータ104上でのBGPセッションがネットワーキングの期間の中
では相当な時間(3秒以上)を要して時間切れになるので、エッジルータ104は障害閉
鎖について学習する結果になり、現在のTCPフローを入口ノード110に再びルーティ
ングすることになる。
BGPに伴う収束の問題を回避するため、且つ、ノード110を障害からより迅速に回
復させるために、少なくともいくつかの実施形態においては、入口ノード110がBGP
セッションを介してエッジルータ104に自身を広告する代わりに、ロードバランサ実装
の中で少なくとも1つの他の入口ノード110が、BGPを介してエッジルータ104に
対して入口ノード110を広告するための責任を負う。例えば、図5に示すようないくつ
かの実施形態において、所定の入口ノード110の左右の隣接する入口ノード110、例
えば、ノード110の順序リストの左右の隣接物、例えば、ノード110によって形成さ
れたコンシステントハッシュリングが、当該所定の入口ノード110をエッジルータ10
4に対して広告してもよい。例えば、図5において、入口ノード110Aは入口ノード1
10B及び110Dを広告し、入口ノード110Bは入口ノード110A及び110Cを
広告し、入口ノード110Cは入口ノード110B及び110Dを広告し、そして入口ノ
ード110Dは入口ノード110C及び110Aを広告する。入口ノード110は、本明
細書において後述するように、お互いの健康をチェックし且つ喧伝する。上記したように
ヘルスチェック方法を使用すれば、不健康なノードを検出することができ、且つ、その情
報を1秒未満、例えば、100ミリ秒(ms)でノード110の間に伝達することができ
る。ある入口ノード110が健康でないと決定されると、その不健康な入口ノードを広告
する入口ノード110は、直ちにその不健康なノード110の広告を停止する。少なくと
もいくつかの実施形態において、入口ノード110は、BGPセッションについてのTC
P Closeメッセージまたは同様のメッセージをエッジルータ104に送信すること
によって、エッジルータ104との間のBGPセッションを終了する。このように、ノー
ド110の障害を検出するために、障害のある入口ノード110によって確立されたBG
Pセッションが時間切れになるのを待つのではなく、障害のある入口ノード110の代理
として広告する他の入口ノード110が、当該ノード110が不健康であることを検出し
たことで、エッジルータ104との間で当該入口ノード110を広告するBGPセッショ
ンを終了するときに、エッジルータ104は障害のあるノード110を発見する。ロード
バランサノードの障害を取り扱うことについては、図18A及び18Bに関連して、本明
細書においてさらに説明する。
図6は、分散型ロードバランシングシステムの少なくともいくつかの実施形態において
、マルチパス・ルーティング方法のフローチャートである。900に示されるように、ロ
ードバランサ実装の中の入口ノード110は、それらに隣接するノード110をエッジル
ータ104に広告する。少なくともいくつかの実施形態において、入口ノード110は、
コンシステントハッシュリングなどのノード110の順序リストに従って、それらに隣接
するノード110を決定する。少なくともいくつかの実施形態において、入口ノード11
0は、各々の広告されたノード110に対応してエッジルータ104に対して確立された
1つのBGPセッションと共に、BGPセッションを使用して、それらに隣接するノード
110をエッジルータ104に対して広告する。
902に示されるように、エッジルータ104は、フロー単位ハッシュ化マルチパス・
ルーティング技法、例えば、等価マルチパス(ECMP)ルーティング技法に従って、ク
ライアント160から受信されたトラフィックをアクティブな(広告された)入口ノード
110に分散する。少なくともいくつかの実施形態において、エッジルータ104は、パ
ブリックIPアドレスをクライアント160に公表し、入口ノード110は、同一のパブ
リックIPアドレスをエッジルータ104にすべて広告する。エッジルータは、レイヤ4
の送信元ポート及び宛先ポートをエッジルータ104のフローハッシュの部分として使用
して、着信パケットを入口ノード110の中に分散する。このことにより、通常、同一の
入口ノード110に対してルーティングされた各接続に関するパケットを保持することに
なる。
902に示されるように、入口ノードは、データフローを目標のサーバノード130に
転送する。少なくともいくつかの実施形態において、入口ノード110は、そのデータフ
ローについて一次及び二次フロー追跡部ノードと対話して、そのデータフローを目標のサ
ーバノード130にマッピングする。したがって、各々の入口ノード110は、受信され
たパケットを適切に目標のサーバノード130に対して転送するために使用されるノード
110を介して、アクティブなデータフローのマッピングを維持する。
906から910までの要素は、入口ノード110の障害を検出すること及びそこから
回復することに関する。906に示されるように、入口ノード110は、例えば本明細書
に記載されているヘルスチェック技法に従って、入口ノード110がダウンしたことを検
出する。ノード110のダウンが検出されると、その隣接ノード110はエッジルータ1
04に対する広告を停止する。少なくともいくつかの実施形態において、このことは、そ
れぞれのBGPセッションにおいてエッジルータ104に対してTCP Closeを送
信することを含む。
908に示されるように、エッジルータ104は、BGPセッションの終了によって入
口ノード110がダウンしたことを検出すると、フロー単位ハッシュ化マルチパス・ルー
ティング技法に従って、クライアント160からの着信トラフィックを残りの入口ノード
110に対して再分散する。したがって、少なくともいくつかのデータフローは、異なる
入口ノード110に対してルーティングされる。
910に示されるように、入口ノード110は、必要に応じてマッピングを回復し、且
つそのデータフローを適切な目標のサーバノードに転送する。入口ノード110上でノー
ド110の障害から回復するための方法については、本明細書の他のところで説明する。
1つの実施例として、入口ノード110は、現在のマッピングの対象ではないパケットを
受信したときは、コンシステントハッシュリングに従ってコンシステントハッシュ機能を
用いて、データフローに対応するフロー追跡部ノードを決定して、当該フロー追跡部ノー
ドからマッピングを回復する。
非対称のパケットフロー
少なくともいくつかの実施形態において、インバウンドデータに対するアウトバウンド
トラフィックの比率が1より大きい場合に、入口ノードの帯域幅とCPUの使用を効率的
に利用するために、分散型ロードバランシングシステムは、図7に示されるように、サー
バノード130からのアウトバウンドパケットを多数の出口ノードに転送する。少なくと
もいくつかの実施形態において、それぞれのサーバノード130上のロードバランサモジ
ュール132は、各接続に対して、クライアントのエンドポイント/公開エンドポイント
タプルをハッシュ化し、且つ、コンシステントハッシュアルゴリズムを使用して、それぞ
れのアウトバウンドパケットフローに対して出口サーバ114としての機能を果たすロー
ドバランサノード110を選択する。しかしながら、いくつかの実施形態においては、接
続に対する出口サーバ114を選択するために他の方法及び/またはデータが使用される
。選択された出口サーバ114は、通常、接続に対する入口サーバ112としての機能を
果たすロードバランサノード110とは異なるロードバランサノード110であるが、必
ずしも必須でない。少なくともいくつかの実施形態においては、そのようなロードバラン
サノード110/出口サーバ114の障害が存在する場合を除いて、特定の接続に対する
アウトバウンドパケットのすべては、パケットの乱れを避けるために、同一の出口サーバ
114に対して転送される。
少なくともいくつかの実施形態において、出口サーバ114を選択するためにサーバノ
ード130によって使用される方法及びデータは、エッジルータ104によって実行され
る入口サーバ112を選択するために使用される方法及びデータとは異なる。異なる方法
及びデータを使用すると、一般的には、その接続に対する入口ノードとして選択されたロ
ードバランサノード110ではなく、ある所定の接続に対する出口ノードとして選択され
ている異なるロードバランサノード110を生じる結果となり、入口ノードとしての機能
を果たす単一のロードバランサノード110を通る接続についての発信トラフィックを取
り扱うべき出口ノードとして選択されている多数のロードバランサノード110を生じる
結果にもなる。
少なくともいくつかの実施形態において、図7は、非対称のパケットフローをグラフィ
カルに示す。少なくとも1つの接続が、外部ネットワーク150上のクライアント160
からサーバノード130A、130B、130C、及び130Dの各々まで、入口サーバ
112を介して確立されている。少なくともいくつかの実施形態において、接続に対応す
る出口ノードを選択するために、各接続について、それぞれのサーバノード130上のロ
ードバランサモジュール132は、クライアントのエンドポイント/公開エンドポイント
タプルをハッシュ化し、且つ、コンシステントハッシュアルゴリズムを使用してそれぞれ
のアウトバウンドパケットフローに対して出口サーバ114としての機能を果たすロード
バランサノード110を選択する。例えば、サーバノード130Aは接続に対する出口サ
ーバ114Aを選択しており、サーバノード130Bは1つの接続に対する出口サーバ1
14A及び他の接続に対する出口サーバ114Bを選択している。しかしながら、いくつ
かの実施形態においては、接続に対する出口ノードを選択するために、他の方法及び/ま
たはデータが使用される。
クライアント接続を欠落せずにロードバランサノード障害から回復する
クライアントトラフィックを受信すべきサーバノード130をどれにするか決定するため
に、ロードバランサノード110がコンシステントハッシュ法を使用することが可能であ
る一方で、いくつかの接続の長い寿命のために、新たなサーバノード130がコンシステ
ントハッシュのメンバーシップに加わる場合や、その後の入口のロードバランサノード1
10障害が存在する場合には、この方法は存在しているフローを維持することができない
。このシナリオにおいて、障害が発生したノード110からフローを引き継ぐロードバラ
ンサノード110は、異なるメンバーシップを持つことになるサーバ130に対するコン
システントハッシュリングとして選択された元のマッピングを決定することができない。
このため、少なくともいくつかの実施形態においては、ロードバランサノード110によ
って分散型ハッシュテーブル(DHT)技術が使用されて、接続に対するサーバノード1
30を選択し、且つ、その選択されたサーバノード130に対してパケットをルーティン
グする。DHTに従って、特定の接続を受信するために一旦サーバノード130が選択さ
れると、そのサーバノード130が健康のままでいて、且つ、(例えば、接続公開によっ
て)DHTへのそのようなアクティブな接続の状態を定期的に送信することによって、サ
ーバノード130上のロードバランサモジュール132がリースの延長を継続すると仮定
した場合、DHTは、その接続が完了するまでそのマッピングを保持することになる。入
口ノード110の障害が、エッジルータ104から残りのロードバランサノード110に
対するパケットの分散に衝撃を与えると、そのロードバランサノード110は異なる組み
合わせのクライアント接続からトラフィックを受信する結果になる。しかしながら、DH
Tはすべてのアクティブな接続を追跡するので、ロードバランサノード110はDHTに
問い合わせを行って任意のアクティブなマッピングに関するリースを取得することができ
る。その結果、すべてのロードバランサノード110は、正しいサーバノード130に対
してトラフィックを渡すので、入口ロードバランサノード110に障害が発生する事態が
あっても、アクティブなクライアント接続の障害を回避する。
分散型ロードバランシングシステムにおけるパケットフロー
図8は、少なくともいくつかの実施形態において、分散型ロードバランシングシステム
におけるパケットフローを示す。図8における矢印付きの実線はTCPパケットを表わし
、一方、矢印付きの点線はUDPパケットを表わすことに留意されたい。図8において、
入口サーバ112は、エッジルータ104を介して、1以上のクライアント160からの
TCPパケットを受信する。TCPパケットを受信すると、入口サーバ112は、サーバ
ノード130へのTCPパケットフローに対応するマッピングを自身が持っているかどう
かを判定する。入口サーバ112が、TCPパケットフローに対応するマッピングを有す
る場合には、サーバ112は、そのTCPパケットを(例えば、UDPに従って)カプセ
ル化して、そのカプセル化されたパケットを目標のサーバノード130に送信する。入口
サーバ112が、TCPパケットフローに対応するマッピングを持たない場合には、入口
サーバ112は、TCPパケットから抽出されたTCPパケットフローに関する情報を含
むUDPメッセージを一次フロー追跡部116Aに送信して、サーバノード130に対す
る接続を確立し、及び/または、TCPパケットについてのマッピングを取得する。図9
A、9B、及び図10Aないし10Gは、クライアント160とサーバノード130との
間における接続を確立する方法を示す。サーバノード130上のロードバランサモジュー
ル132は、サーバノード130上のTCP接続に対する出口サーバ114としての機能
を果たすロードバランサノード110をランダムに選択し、且つ、出口サーバ114を介
して、UDPカプセル化されたTCP応答パケットをクライアント160に送信する。
図9A及び9Bは、少なくともいくつかの実施形態において、分散型ロードバランシン
グシステムにおける接続が確立した場合のパケットフローのフローチャートを提供する。
図9Aの200に示されるように、入口サーバ112は、エッジルータ104を介して、
クライアント160からTCPパケットを受信する。202において、入口サーバ112
が、サーバノード130へのTCPフローに対応するマッピングを有する場合には、20
4に示されるように、入口サーバ112は、TCPパケットをカプセル化して、それぞれ
のサーバノード130に送信する。入口サーバ112は、1、2または3以上のクライア
ント160からの1、2または3以上のTCPフローを連続的に受信し且つ処理すること
に留意されたい。
202において、入口サーバ112が、TCPパケットフローに対応するマッピングを
持たない場合には、そのパケットは、クライアント160からのTCP同期(SYN)パ
ケットである。206に示されるように、SYNパケットを受信すると、入口サーバ11
2は、そのSYNパケットからデータを抽出して、そのデータを、例えばUDPメッセー
ジの中で、一次フロー追跡部116Aに転送する。少なくともいくつかの実施形態におい
て、入口サーバ112は、コンシステントハッシュ機能に従って、TCPフローに対する
一次フロー追跡部116A及び/または二次フロー追跡部116Bを決定できる。208
において、一次フロー追跡部116Aは、そのデータを例えばハッシュテーブルの中に記
憶し、TCP接続のサーバノード130側に対する最初のTCPシーケンス番号を生成し
、そのデータ及びTCPシーケンス番号を二次フロー追跡部116Bに転送する。210
において、二次フロー追跡部116Bもまた、そのデータを記憶するとともに、SYN/
ACKパケットを作成し且つクライアント160に送信するが、そのSYN/ACKパケ
ットには少なくともTCPシーケンス番号が含まれている。
212に示されるように、入口サーバ112は、エッジルータ104を介して、クライ
アント160からのTCP確認(ACK)を受信する。入口ノード112は、その時点に
おいて、サーバノード130に対するTCPフローに対応するマッピングを持たないので
、214において、入口サーバ112は、そのACKパケットから抽出されたデータを含
むメッセージを一次フロー追跡部116Aに送信する。216に示されるように、一次フ
ロー追跡部116Aは、そのメッセージを受信すると、記憶されているデータに従ってT
CPフローを確認し、ACKパケットからの承認されたシーケンス番号(+1)がSYN
/ACKの中で送信された値と一致することを確認する。次に、一次フロー追跡部116
Aは、TCPフローを受信するサーバノード130を選択し、データ、TCPシーケンス
番号、及び選択されたサーバノード130上のローカルロードバランサモジュール132
のIPアドレスを含むメッセージを二次フロー追跡部116Bに送信する。218に示さ
れるように、二次フロー追跡部116Bもまた、データ及びTCPシーケンス番号を確認
し、SYNメッセージを作成し、その作成されたSYNメッセージを、選択されたサーバ
ノード130上のローカルロードバランサモジュール132に送信する。その方法は、図
9Bの要素220において続く。
図9Bの220に示されるように、ロードバランサモジュール132は、作成されたS
YNメッセージに応答して、サーバノード130の1以上のメトリクスを調べて、サーバ
ノード130が接続を受諾することができるかどうかを判定する。222において、ロー
ドバランサモジュール132は、当該サーバノード130が現在においては接続を受諾す
ることができないと判定した場合には、224において、ロードバランサモジュール13
2は二次フロー追跡部116Bに伝達する。二次フロー追跡部116Bは、以前に記憶し
たフローに関する情報を消去する。226において、二次フロー追跡部116Bは、一次
フロー追跡部116Aに伝達する。図9Aの216に示されるように、一次フロー追跡部
116Aは、その後、新たな目標のサーバノード130を選択して、二次フロー追跡部1
16Bに伝達する。
222において、ロードバランサモジュール132は、サーバノード130が接続を受
諾できると判定した場合には、図9Bの228に示されるように、ロードバランサモジュ
ール132は、作成されたSYNからTCP SYNパケットを構成して、サーバノード
130上のサーバ134にそのTCP SYNパケットを送信する。TCP SYNパケ
ットの送信元IPアドレスは、サーバ134がクライアント160に対する直接のTCP
接続を受信したことを確信するように、クライアント160の実際のIPアドレスが追加
される。ロードバランサモジュール132は、TCPフローについて関連する細部を例え
ばローカルハッシュテーブルの中に記憶する。230に示されるように、サーバ134は
、ロードバランサモジュール132が中断するSYN/ACKパケットに応答する。23
2に示されるように、ロードバランサモジュール132は次に、接続情報を含むメッセー
ジを二次フロー追跡部116Bに送信して、接続が受諾されたことを知らせる。二次フロ
ー追跡部116Bは、このメッセージを受信すると、234において、サーバ134に対
するマッピングを記録し、同様のメッセージを一次フロー追跡部116Aに送信し、一次
フロー追跡部116Aもまた、そのマッピング情報を記録する。236に示されるように
、一次フロー追跡部116Aは次に、入口サーバ112に対してマッピングメッセージを
転送する。入口サーバ112は、この後からは、クライアント160からサーバ130へ
のTCPフローに対応するマッピングを有することになる。
238において、入口サーバ112は、データフローのために任意にバッファリングさ
れたデータパケットをカプセル化して、サーバノード130上のローカルロードバランサ
モジュール132に対して転送する。入口サーバ112によって受信されたクライアント
160からのデータフローのための追加の着信パケットは、カプセル化されて、ロードバ
ランサモジュール132に対して直接に転送され、ロードバランサモジュール132は、
そのパケットをデカプセル化して、サーバ134にデータパケットを送信する。
240において、ロードバランサモジュール132は、データフローに対応する出口サ
ーバ114をランダムに選択する。サーバ134からのアウトバウンドTCPパケットは
、ロードバランサモジュール132によって中断され、UDPに従ってカプセル化され、
任意に選択された出口サーバ114に転送される。出口サーバ114は、その発信パケッ
トをデカプセル化して、そのTCPパケットをクライアント160に送信する。
上記したように、202において、入口サーバ112が、受信されたパケットのTCP
フローに対応するマッピングを持たない場合には、そのパケットは、クライアント160
からのTCP同期(SYN)パケットである。しかしながら、そのパケットは、TCP
SYNパケットではない。例えば、ロードバランサノード110の追加または障害のせい
で、ロードバランサノード110のメンバーシップが変化した場合には、エッジルータ1
04は、マッピングを持たない入口サーバ112に対して、1以上のTCPフローに対応
するパケットのルーティングを開始する。少なくともいくつかの実施形態において、対応
するマッピングを持たない入口サーバ112がこのようなパケットを受信すると、その入
口サーバ112は、コンシステントハッシュ機能を用いて、コンシステントハッシュリン
グに従ってTCPフローに対応する一次フロー追跡部116A及び/または二次フロー追
跡部116Bを決定し、一次フロー追跡部116Aまたは二次フロー追跡部116Bのい
ずれかに伝達してマッピングを要求する。入口サーバ112は、フロー追跡部116から
TCPフローに対応するマッピングを受信すると、そのマッピングを記憶して、TCPフ
ローに対応するTCPパケットのカプセル化及び正しい宛先サーバノード130に対する
転送を開始することができる。
ロードバランサノードの細部
少なくともいくつかの実施形態において、ロードバランサノード110の各々は3つ
の役割を持つ。
● 入口−クライアント接続においてクライアント160からすべての着信パケットを
受信すること、マッピングが分かっている場合にサーバノード130にパケットをルーテ
ィングすること、またはマッピングが分かっていない場合にフロー追跡部に伝達すること
。入力ノードからの発信パケットは、入口ノードによって(例えば、UDPに従って)カ
プセル化される。
● フロー追跡処理−接続状態(例えば、どのサーバノード130/サーバ134が各
クライアント接続を提供するために割り当てられているか)の記録をつけること。フロー
追跡部もまた、クライアント160とサーバ134との間の接続を確立することに参加す
る。
● 出口−サーバ134から受信されたアウトバウンドパケットをデカプセル化するこ
と及びクライアント160に転送すること。
少なくともいくつかの実施形態において、入口の役割の中で、ロードバランサノード1
10は、クライアントからサーバへのマッピングが分かっている場合には、サーバ134
に対してパケットを転送する役割を担い、または、マッピングが分かっていない場合には
、フロー追跡部に対して要求を転送する役割を担う。特定のクライアント接続/データフ
ローについて入口ノードとしての機能を果たしているロードバランサノード110は、ク
ライアント接続に対して、一次フロー追跡部または二次フロー追跡部のいずれとしての機
能も果たすが、両方としての機能を果たすことはない。
少なくともいくつかの実施形態において、フロー追跡部の役割の中で、ロードバランサ
ノード110は、確立された接続に対応するクライアントからサーバへのマッピングを維
持する役割を担うだけでなく、引き続き確立されている接続の状態を維持する役割をも担
う。2つのフロー追跡部は、各々が個別のクライアント接続にかかわり、一次フロー追跡
部及び二次フロー追跡部と称される。少なくともいくつかの実施形態において、クライア
ント接続に関連するフロー追跡部は、コンシステントハッシュアルゴリズムを用いて決定
される。フロー追跡部もまた、新たなクライアント接続の各々に対応するサーバノード1
30を擬似ランダムに選択することを含むロードバランシングの機能を実行するが、これ
に限定されるものではない。選択されたサーバノード130上のローカルロードバランサ
モジュール132は、サーバ134が接続を取り扱うことができないと判定した場合には
、接続要求を拒絶する。このことが起こった場合には、フロー追跡部は、他のサーバノー
ド130を選択して、他のサーバノード130に対して接続要求を送信する。少なくとも
いくつかの実施形態において、所定の接続に対する一次フロー追跡部の役割及び二次フロ
ー追跡部の役割は、異なるロードバランサノード110によって実行される。
少なくともいくつかの実施形態において、出口の役割の中で、ロードバランサノード1
10は、ステートレスであり、サーバノード130から受信された着信パケットをデカプ
セル化し、いくつかの確認を実行し、それぞれのクライアント160に対してアウトバウ
ンドTCPパケットを転送する。少なくともいくつかの実施形態において、サーバノード
130上のローカルロードバランサモジュール132は、所定の接続に対応するロードバ
ランサノード110を任意に選択する。
ロードバランサノードのコンシステントハッシュリング接続形態
少なくともいくつかの実施形態において、ロードバランサノード110は、入力キー空
間(クライアントエンドポイント、公開エンドポイント)のコンシステントハッシュ法に
基づいてリング接続形態を形成する。その入力キー空間は、使用できるフロー追跡部ノー
ドの間で分割され、すべてのフロー追跡部ノードは、そのキー空間に対応する問い合わせ
に答える義務を負う。少なくともいくつかの実施形態において、データは、コンシステン
トハッシュリングにおける後続(例えば、コンシステントハッシュリングにおいて、二次
フロー追跡部ノードは、一次フロー追跡部ノードの後続ノードまたは次のノード)に基づ
いて、一次及び二次フロー追跡部ノードに対して複製される。フロー追跡部ノードがなん
らかの理由でダウンに至る場合には、コンシステントハッシュリングにおける次のロード
バランサノードは、障害が発生したノードのキー空間を要求する。新たなフロー追跡部ノ
ードが加わった場合には、他のロードバランサノードがロードバランサ実装の中で、した
がってコンシステントハッシュリングの中で、構成変更について学習するように、そのノ
ードは自分のエンドポイントを(例えば、図1に示されるような構成サービス122によ
り)記録する。フロー追跡部の追加及び障害を取り扱うことについては、図11Aないし
11Dを参照して、さらに詳細に説明する。
入口ノード対フロー追跡部ノードの通信
少なくともいくつかの実施形態において、入口ノードとしての機能を果たしているロー
ドバランサノード110は、フロー追跡部ノードとしての機能を果たしているロードバラ
ンサノード110について構成サービス122から学習する。入口ノードは、ロードバラ
ンサ実装の中で、したがってコンシステントハッシュリングの中で、メンバーシップの変
化について、構成サービス122を監視する。入口ノードは、その入口ノードが対応する
マッピングを持たないクライアント160からパケットを受信したときは、その入口ノー
ドは、コンシステントハッシュ機能を用いて、パケットにサービスすべきフロー追跡部ノ
ードをどれにするかを決定する。少なくともいくつかの実施形態において、ハッシュ機能
への入力は、パケットからの対(クライアントエンドポイント、公開エンドポイント)で
ある。少なくともいくつかの実施形態において、入口ノード及びフロー追跡部ノードは、
UDPメッセージを用いて通信する。
一次フロー追跡部ノードが新たなパケットフローについて入口ノードからメッセージを
受信した場合には、その一次フロー追跡部ノードは、TCPシーケンス番号をランダムに
決定して、他のメッセージを二次フロー追跡部ノードに転送する。二次フロー追跡部ノー
ドは、クライアントに対応するTCP SYN/ACKメッセージを生成する。両方のフ
ロー追跡部は、クライアント接続のエンドポイント対及びTCPシーケンス番号を記憶し
、メモリの圧迫または有効期限切れが原因で状態が除去されるまでは、この情報を保持す
る。
一次フロー追跡部ノードが、TCP ACKパケットを受信した入口ノードからメッセ
ージを受信した場合には、その一次フロー追跡部ノードは、承認されたTCPシーケンス
番号が、SYN/ACKパケットの中で送信されて記憶された値と一致することを検証し
、要求にサービスすべきサーバノード130を選択し、二次フロー追跡部ノードに対して
メッセージを転送する。二次フロー追跡部ノードは、その選択されたサーバノード130
上のロードバランサモジュール132に対してメッセージを送信して、サーバノード13
0上のTCPスタックによって実際のTCP接続を開始し、次にサーバノード130から
の承認応答を待つ。
二次フロー追跡部ノードが、サーバノード130上のロードバランサモジュール132
から接続承認を受信した場合には、一次フロー追跡部を通って入口ノードに至り、両方の
ノードにおいて関連するサーバノード130に関する情報を記憶する折り返しメッセージ
フローが起動される。このポイントの転送から、入口ノードにおいて受信された追加のT
CPパケットは、サーバノード130上のロードバランサモジュール132に直接に転送
される。
ロードバランサモジュール対ロードバランサノードの通信
少なくともいくつかの実施形態において、すべてのロードバランサモジュール132は
、自分のエンドポイントを構成サービス122によって記録し、ロードバランサノードの
レイヤにおいて、メンバーシップの変化について連続的に構成サービス122を監視する
。少なくともいくつかの実施形態において、ロードバランサモジュール132の機能につ
いて、以下説明する。
● 接続公開−定期的に(例えば、1秒ごとに)または不定期に、それぞれのサー バ
ノード130上のアクティブな接続の組み合わせ(クライアントエンドポイント、パブリ
ックエンドポイント)を、これらの接続に対応するロードバランサモジュール132に対
して最後にパケットを送信した入口ノードに対してだけでなく、これらの接続について責
任を負う一次及び二次フロー追跡部ノードの両方に対しても公開する。接続公開の機能は
、責任を負うロードバランサノード110における接続状態についてのリースを更新する

● ロードバランサレイヤにおけるメンバーシップの変化の監視。メンバーシップが変
化した場合には、ロードバランサモジュール132は、この変更情報を用いて、その接続
に対してこれから責任を負うロードバランサノードに対して直ちにアクティブな接続を送
信する。
分散型ロードバランシングシステムにおけるパケットフローの細部
分散型ロードバランシングシステムは、多数のロードバランサノード110を有する。
少なくともいくつかの実施形態において、分散型ロードバランシングシステムにおける各
ロードバランサノード110は、サーバ134に対するクライアント160の接続に関し
て、フロー追跡部ノードの役割、出口ノードの役割、及び入口ノードの役割を果たす。分
散型ロードバランシングシステムはまた、各サーバノード130上にロードバランサモジ
ュール132を含む。
少なくともいくつかの実施形態において、図10Aないし10Gは、分散型ロードバラ
ンシングシステム内のパケットフローを示している。図10Aないし10Gにおいて、ロ
ードバランサノード110の間で交換されたパケット、及び、ロードバランサノード11
0とサーバノード130との間で交換されたパケットは、UDPメッセージまたはUDP
カプセル化されたクライアントTCPパケットのいずれかである。少なくともいくつかの
実施形態において、クライアントTCPパケットのみが境界ルータ102との間で移動し
て、ロードバランサノード110の北側のネットワーク100上にカプセル化された形式
で存在する(図1を参照)。図10Aないし10Gにおいて、矢印付きの実線はTCPパ
ケットを表わし、一方、矢印付きの点線はUDPパケットを表わしていることに留意され
たい。
少なくともいくつかの実施形態において、分散型ロードバランシングシステムは、単一
ロードバランサノード110の障害が発生したときは、確立されている接続を維持しよう
とする。少なくともいくつかの実施形態において、このことは、一次フロー追跡部ノード
及び二次フロー追跡部ノードにおける接続を細部にわたって複製ことによって達成される
が、それは、これらのノードのいずれかに障害が発生した場合に、接続のクライアントか
らサーバへのマッピングは、残っているフロー追跡部ノードによって回復されるからであ
る。少なくともいくつかの実施形態において、いくつかのパケットの消失は、ノードの障
害が発生した場合に起こるが、クライアント/サーバTCPパケット再送が消失パケット
を復元する。
クライアントからのTCP接続の各々はTCPフローと称され、そのTCPフローは、
クライアントIPアドレス、クライアントポート、サーバ(パブリック)IPアドレス、
及びサーバポートからなる4タプルによって一意に識別される。この識別子は、クライア
ント及びパブリックエンドポイント対を示すCPまたはCcPpと略称される。任意の所
定のTCPフロー(またはCP対)に関係するパケットは、上流のエッジルータ104か
らのハッシュ化等価マルチパス(ECMP)フロー分散のために、入口サーバ112とし
て動作する任意のロードバランサノード110上に現れることができる。しかしながら、
TCPフローに対応するパケットは、通常、転送されるTCPフローを引き起こすリンク
またはロードバランサノード110の障害が存在しない限り、同じロードバランサノード
110に到達し続ける。上流のルータ104からのTCPフローに対応するパケットを受
信するロードバランサノード110は、そのTCPフローに対応する入口ノードと称され
る。
少なくともいくつかの実施形態において、コンシステントハッシュ法が使用されるは、
TCPフローに対して入口ノードとしての機能を果たすロードバランサノード110にパ
ケットが到達した場合に、当該入口ノードがTCPフローに対応する状態(すなわち、フ
ロー追跡部ノード)を収容するのがどのロードバランサノード110であるかを決定する
ことができるからである。CP対は、入口ノードによってコンシステントハッシュリング
の中にハッシュ化されて、TCPフローに関する状態を維持することに責任を持っている
のがどのロードバランサノード110であるかを決定する。このノードは、TCPフロー
に対して一次フロー追跡部ノードとしての機能を果たす。コンシステントハッシュリング
における後続ノードは、TCPフローに対して二次フロー追跡部としての機能を果たす。
少なくともいくつかの実施形態において、すべてのロードバランサノード110は、入
口ノード、一次フロー追跡部ノード、及び二次フロー追跡部ノードとしての機能を果たす
。TCPフローに対するコンシステントハッシュの結果に依存して、そのTCPフローに
対して入口ノードとしての機能を果たしているロードバランサノード110は、そのTC
Pフローに対して一次または二次フロー追跡部ノードとしての機能も果たす。しかしなが
ら、少なくともいくつかの実施形態において、異なる物理的なロードバランサノード11
0は、そのTCPフローに対して一次及び二次フロー追跡部ノードの役割を実行する。
接続の確立
図10Aを参照すると、クライアント160からの新たな接続は、クライアントTCP
同期(SYN)パケットによって起動される。ロードバランサノード110は、そのSY
Nパケットを受信したとき、実際には、サーバノード130との間で接続を確立しないだ
けでなく、その接続を受信すべきサーバノード130を直ちに選択することもない。その
代わり、ロードバランサノード110は、クライアントのSYNパケットからの関連デー
タを記憶して、まだ選択されていないサーバノード130の代わりにSYN/ACKパケ
ットを生成する。図10Cを参照すると、一旦クライアント160がTCPのスリーウェ
イハンドシェイクにおいて最初のACKに応答すると、ロードバランサノード110は、
サーバノード130を選択して、当該サーバノード130に対する等価なSYNパケット
を生成し、そのサーバノード130との実際のTCP接続を確立しようとする。
再び図10Aを参照すると、TCPフローに対して入口サーバ112としての機能を果
たしているロードバランサノード110においてクライアントSYNパケットを受信する
と、入口サーバ112は、SYNパケットからデータフィールドを抽出して、そのデータ
をTCPフローに対する一次フロー追跡部116Aに転送する。一次フロー追跡部116
Aは、そのデータを例えばハッシュテーブルに記憶し、(TCP接続のサーバ側の)最初
のTCPシーケンス番号を生成し、同じデータを二次フロー追跡部116Bに転送する。
二次フロー追跡部116Bは、そのTCPシーケンス番号を含むクライアント160に対
するSYN/ACKパケットを作成する。
図10Aにおいて、入口サーバ112、一次フロー追跡部116A、及び二次フロー追
跡部116Bの役割は、異なるロードバランサノード110によって各々実行される。し
かしながら、いくつか場合においては、TCPフローに対して入口サーバ112としての
機能を果たしているロードバランサノード110は、TCPフローに対して一次フロー追
跡部116Aまたは二次フロー追跡部116Bとしての機能を果たしている同じノード1
10である(ただし、両方はない)。パケットフローに対応する入口サーバ112が、そ
のフローに対応するフロー追跡部116として同じノード110上にあるという理由は、
エッジルータ104が、フロー単位ハッシュ化マルチパス・ルーティング技法(例えば、
ECMPルーティング技法)に従って、フローに対応する入口サーバ112を擬似ランダ
ムに選択するからである。その一方、パケットフローに対応するフロー追跡部116は、
パケットフローのアドレス情報に適用されるコンシステントハッシュ機能に従って、コン
システントハッシュリング上で決定される。パケットフローに対応する入口サーバ112
が、そのパケットフローに対応するフロー追跡部116として同じノード110上に存在
する場合には、SYNパケットからのデータが入口サーバ112を実装するノード110
から他のフロー追跡部116ノード110に転送されるだけである。例えば、図10Bに
おいて、一次フロー追跡部116Aは、TCPフローに対する入口サーバ112として同
じロードバランサノード110A上に存在するが、一方、二次フロー追跡部116Bは、
異なるロードバランサノード110B上に存在するので、SYNパケットからのデータは
、(フロー追跡部116Aによって)ノード110Aからロードバランサノード110B
上の二次フロー追跡部116Bに転送される。
図10Cを参照すると、非SYNパケットが入口サーバ112に到達した場合には、そ
の入口サーバ112は、どのサーバノード130にそのパケットを転送するかを知ってい
るかまたは知らないかのいずれかである。TCPフローに対する入口サーバ112に到達
する最初の非SYNパケットは、TCPのスリーウェイハンドシェイクにおける最初のT
CP承認(ACK)パケット(または、ことによると後続のデータパケット)のはずであ
る。そこでは、TCP承認番号のフィールドは、図10AにおけるSYN/ACKパケッ
トの中で送信されたサーバシーケンス番号(+1)と一致する。入口サーバ112が、対
応するサーバマッピングを持たない非SYNパケットを受信した場合には、入口サーバ1
12は、TCPフローに対応する一次フロー追跡部116Aに対してメッセージを転送す
る。そのメッセージは、シーケンス番号などのACKパケットからの情報を含み、または
ACKパケット自身を含む。少なくともある場合においては、一次フロー追跡部116A
は、TCPフローについて記憶されたデータを覚えており、承認シーケンス番号(+1)
とSYN/ACKパケットの中でクライアント160に対して送信された値とが一致する
ことを確認する。一次フロー追跡部は、その後、TCPフローに対応するサーバノード1
30を選択し、TCPフローについて以前に記憶されたデータを含む他のメッセージ、サ
ーバシーケンス番号、及び選択されたサーバノード130上のロードバランサモジュール
132についてのIPアドレスを、二次フロー追跡部116Bに対して転送する。二次フ
ロー追跡部116Bは、サーバシーケンス番号を確認し、その情報を記録し、生成された
SYNメッセージを選択されたサーバノード130上のロードバランサモジュール132
に対して送信する。TCPフローのCPエンドポイント対は、この時からロードバランサ
モジュール132/サーバノード130にマッピングされる。サーバノード130上のロ
ードバランサモジュール132は、二次フロー追跡部116Bから生成されたSYNメッ
セージを受信した場合には、サーバノード130上のサーバ134に対する正当なTCP
SYNパケットを作成する責任がある。SYNパケットの生成において、送信元IPア
ドレスがクライアント160の実際のIPアドレスに追加されるのは、サーバ134がク
ライアント160から直接的なTCP接続要求を受信したことを信用するからである。ロ
ードバランサモジュール132は、TCPフローについて関連する細部を例えばローカル
なハッシュテーブルに記憶し、TCP SYNパケットをサーバ134に送信する(例え
ば、SYNパケットをサーバ134のLinuxカーネルの中に挿入する)。
図10Cにおいて、入口サーバ112、一次フロー追跡部116A、及び二次フロー追
跡部116Bの役割は、異なるロードバランサノード110によって各々実行される。し
かしながら、いくつか場合においては、TCPフローに対して入口サーバ112としての
機能を果たしているロードバランサノード110は、TCPフローに対して一次フロー追
跡部116Aまたは二次フロー追跡部116Bとしての機能を果たしている同じノード1
10である(ただし、両方ではない)。例えば、図10Dにおいて、二次フロー追跡部1
16Bは、TCPフローに対して入口サーバ112として同じロードバランサノード11
0A上に存在し、一方、一次フロー追跡部116Aは、異なるロードバランサノード11
0B上に存在する。
図10Eを参照すると、サーバ134(例えば、Linuxカーネル)は、ロードバラ
ンサモジュール132も中断するSYN/ACKパケットに応答する。SYN/ACKパ
ケットは、二次フロー追跡部116Bからの生成されたSYN/ACKにおいて、クライ
アント160に最初に配信されたTCPシーケンス番号とは異なるTCPシーケンス番号
を含む(図10A参照)。ロードバランサモジュール132は、着信パケット及び発信パ
ケットにシーケンス番号デルタを適用する責任がある。サーバ134からのSYN/AC
Kパケットもまた、ロードバランサモジュール132から二次フロー追跡部116Bに戻
るメッセージ(例えば、UDPメッセージ)を起動して、選択されたサーバノード130
/ロードバランサモジュール132/サーバ134に対する接続が成功したことを知らせ
る。二次フロー追跡部116Aは、このメッセージを受信すると、クライアント160と
サーバ134との間において、クライアント及びパブリックエンドポイント対(CP)マ
ッピングを約束されたものとして記録し、CPマッピングを同じように記録する一次フロ
ー追跡部116Aに対して同様のメッセージを送信する。一次フロー追跡部116Aは、
その後、CPマッピングメッセージを入口サーバ112に対して転送し、このことによっ
て、接続について任意にバッファリングされたデータパケットを、入口サーバ112はサ
ーバノード130上のローカルロードバランサモジュール132に対してカプセル化され
たデータパケットとして転送させる。
図10Fを参照すると、接続のためのCPマッピングが入口サーバに分かっているので
、入口サーバ112によって受信された接続に関する着信TCPパケットは、(例えば、
UDPに従って)カプセル化され、サーバノード130上のローカルロードバランサモジ
ュール132に対して、カプセル化されたデータパケットとして直接に転送される。ロー
ドバランサモジュール132は、データパケットをデカプセル化して、サーバノード13
0上のサーバ134に対し、例えば、カーネルのTCPスタック上にTCPパケットを挿
入することによって、TCPパケットを送信する。サーバ134からのアウトバウンドパ
ケットは、サーバノード130上のロードバランサモジュール132によって中断され、
(例えば、UDPに従って)カプセル化され、ロードバランサモジュール132がこの接
続に対応する出口サーバ114としてランダムに選択する任意のロードバランサノード1
10に対して転送される。出口サーバ114は、パケットをデカプセル化して、そのデカ
プセル化されたパケットをクライアント116に対して送信する。選択されたロードバラ
ンサノード110の出口機能はステートレスであるので、出口サーバとしての機能を果た
しているロードバランサノード110に障害が発生した場合には、異なるロードバランサ
ノード110が接続に対する出口サーバ114として選択されることができる。しかしな
がら、接続の期間中においては、アウトバウンドパケットの再配列を抑制または排除する
ために、通常は、同じロードバランサノード110が出口サーバ114として使用される
図10Gを参照すると、少なくともいくつかの実施形態において、一次フロー追跡部1
16Aによって選択されたサーバノード130A(図10C参照)上のロードバランサモ
ジュール132Aは、自分が過負荷であると判定した場合には、二次フロー追跡部116
Bから受信された作成されたSYNメッセージ(図10C参照)を拒絶する選択権を有す
る。少なくともいくつかの実施形態において、作成されたSYNメッセージは、生存時間
(TTL)の値または最大拒絶数をあらかじめ考慮するカウンタを含んでいる。少なくと
もいくつかの実施形態において、このTTLの値がゼロに達した場合には、ロードバラン
サモジュール132Aは、接続を受諾するかまたは負荷を減らすために接続を中断する。
ロードバランサモジュール132Aが接続を拒絶すると決定した場合には、TTLの値を
減らして、拒絶メッセージを二次フロー追跡部116Bに送信する。二次フロー追跡部1
16Bは、CPマッピングをリセットし、同じことを行うために開放メッセージを一次フ
ロー追跡部116Aに送信する。一次フロー追跡部116Aは、他のサーバノード130
B上の新たなロードバランサモジュール132Bを選択し、新たな目標メッセージを二次
フロー追跡部116Bに返送し、二次フロー追跡部116Bは新たに作成されたSYNメ
ッセージを新たに選択されたロードバランサモジュール132Bに対して送信する。パケ
ット廃棄は、このシーケンスが完了することができない結果になることに留意されたい。
しかしながら、クライアント160からの再送は、一次フロー追跡部116Aにおいてロ
ードバランサモジュールの選択プロセスを再び起動し、一次フロー追跡部116Aは、作
成されたSYNパケットの前回の拒絶について学習しなかった場合に、必ずしも必要では
ないが、接続に対して同じロードバランサモジュール132を選択する。
少なくともいくつかの実施形態において、TTLカウンタは、サーバノード130に対
して連続的に接続要求が送信されることを回避するために使用され、このことは、例えば
、すべてのサーバノード130がビジーである場合に発生する。少なくともいくつかの実
施形態において、ロードバランサモジュール132がそれぞれのサーバノード130の代
理として、接続要求を拒絶するたびに、当該ロードバランサモジュール132はTTLカ
ウンタを減らす。フロー追跡部ノード116は、TTLカウンタを監視して、TTLカウ
ンタがゼロでない(または、ある特定の閾値を超えない)限り、他のサーバノード130
を選択して、再度試みる。TTLカウンタがゼロに達した(または、当該特定の閾値に達
した)場合には接続要求は取り下げられ、その接続のために選択されたサーバノード13
0の1つに対して接続要求を送信するためのフロー追跡部ノード116によってなされる
試みはもはやできない。少なくともいくつかの実施形態において、エラーメッセージがそ
れぞれのクライアント160に送信される。
少なくともいくつかの実施形態において、分散型ロードバランサシステムは、多くのパ
ブリックIPアドレスをサポートする。したがって、クライアント160は、同じクライ
アントのポート番号から2つの異なるパブリックIPアドレスまでの2つのTCP接続を
開始することが可能である。これらのTCP接続は、クライアント160の観点からは区
別されるが、内部的には、分散型ロードバランサシステムは同じサーバノード130に対
して接続をマッピングするので、このことで衝突を生じる結果となる。少なくともいくつ
かの実施形態において、衝突の可能性を検出し且つ取り扱うためには、ロードバランサモ
ジュール132は、図10C及び10Dに示されるように、生成されたSYNパケットを
二次フロー追跡部116Bから受信すると、アドレス情報をそのアクティブな接続と比較
して、この接続が衝突を引き起こす可能性がある場合には、図10Gに示されるように、
その接続要求を拒絶する。
ロードバランサノードの障害及び追加の取り扱い
従来の多くのロードバランサにおいて、ロードバランサの障害が発生すると、いくつか
のまたはすべての存在している接続は失われる。少なくともいくつかの実施形態では、単
一のロードバランサノード110の障害発生において、分散型ロードバランシングシステ
ムが少なくともいくつかの確立された接続を維持するのは、クライアント及びサーバが、
接続が正常に完了するまで、接続によってパケットの交換を継続できるからである。さら
に、分散型ロードバランシングシステムは、障害の時点において確立されているプロセス
の中に存在していた接続に対するサービスを継続する。
分散型ロードバランシングシステムの少なくともいくつかの実施形態において、単一の
ロードバランサノード110に障害が発生した場合に備えて、存在中のクライアント接続
を回復する障害回復プロトコルが実装されている。しかしながら、多数のロードバランサ
ノード110に障害が発生すると、クライアント接続の消失を招く結果となる。少なくと
もいくつかの実施形態において、クライアント160とサーバ134との間のTCP再送
は、後続のロードバランサノード110の障害を回復する手段として使用される。
潜在的なロードバランサノード110の障害に加えて、新たなロードバランサノード1
10が分散型ロードバランサシステムに追加される。これらの新たなノード110は、ロ
ードバランサレイヤに、したがって、コンシステントハッシュリングに追加され、存在中
のクライアント接続に関するロードバランサノード110の役割は、必要に応じて、当該
変更に従って調整される。
フロー追跡部ノードの障害及び追加の取り扱い
少なくともいくつかの実施形態において、各々の接続が確立されている場合には(例え
ば、図10Aないし10G参照)、その接続状態情報は、一次及び二次フロー追跡部と称
される、2つのロードバランサノード110を通る。一次及び二次フロー追跡部は、例え
ば、ハッシュ機能入力として(クライアントIP:ポート、パブリックIP:ポート)タ
プルを使用するコンシステントハッシュアルゴリズムを使用して決定される。単一のロー
ドバランサノード110に障害が発生した場合に、少なくとも1つの生き残っているロー
ドバランサノード110は、コンシステントハッシュ機能によるマッピングを継続し、接
続に対して選択されたサーバノード130に対してパケットを導くための接続に関する必
要な状態情報を有する。さらに、コンシステントハッシュリングにロードバランサノード
110が追加された場合には、接続に関する状態情報は、適切なフロー追跡部に対して更
新される。
図11Aないし11Dは、少なくともいくつかの実施形態において、ロードバランサノ
ードコンシステントハッシュリングにおいてメンバー構成に影響する事象の取り扱いを示
す。これらの事象は、新たな一次フロー追跡部ノードの追加、新たな二次フロー追跡部ノ
ードの追加、一次フロー追跡部ノードの障害、及び二次フロー追跡部ノードの障害を含ん
でいるが、これらに限定されない。
図11Aは、コンシステントハッシュリングへの新たな一次フロー追跡部ノードの追加
の取り扱いを示す。図11Aの上位の並びは、1以上のクライアント接続に対する一次フ
ロー追跡部としてのフロー追跡部116A、及び同じ接続に対する二次フロー追跡部とし
てのフロー追跡部ノード116Bを示す。図11Aの下位の並びにおいて、新たなフロー
追跡部ノード116Cが追加されており、クライアント接続に対する一次フロー追跡部に
なっている。コンシステントハッシュリングにおいて、以前は一次フロー追跡部であった
フロー追跡部ノード116Aは、二次フロー追跡部になり、一方、以前は二次フロー追跡
部であったフロー追跡部ノード116Bは、次のフロー追跡部になっている。フロー追跡
部116A及び116Bによって維持されていたクライアント接続に対する状態情報は、
新たな一次フロー追跡部116Cに提供される。さらに、フロー追跡部116Bは、二次
フロー追跡部の役割において、自分が以前追跡していた接続を「忘れる」。
図11Bは、コンシステントハッシュリングへの新たな二次フロー追跡部ノードの追加
の取り扱いを示す。図11Bの上位の並びは、1以上のクライアント接続に対する一次フ
ロー追跡部としてのフロー追跡部116A、及び同じ接続に対する二次フロー追跡部とし
てのフロー追跡部ノード116Bを示す。図11Bの下位の並びにおいて、新たなフロー
追跡部ノード116Cが追加されており、クライアント接続に対する二次フロー追跡部に
なっている。コンシステントハッシュリングにおいて、フロー追跡部ノード116Aは、
接続に対する一次フロー追跡部として残り、一方、以前は二次フロー追跡部であったフロ
ー追跡部ノード116Bは、次のフロー追跡部になる。フロー追跡部116A及び116
Bによって維持されていたクライアント接続に対する状態情報は、新たな二次フロー追跡
部116Cに提供される。さらに、フロー追跡部116Bは、二次フロー追跡部の役割に
おいて、自分が以前追跡していた接続を「忘れる」。
図11Cは、コンシステントハッシュリングにおいて、一次フロー追跡部ノードの障害
の取り扱いを示す。図11Cの上位の並びは、コンシステントハッシュリングにおいて、
1以上のクライアント接続に対する一次フロー追跡部としてのフロー追跡部116A、同
じ接続に対する二次フロー追跡部としてのフロー追跡部ノード116B、及び次のフロー
追跡部としてのフロー追跡部ノード116Cを示す。図11Cの下位の並びにおいて、一
次フロー追跡部ノード116Aには障害は発生している。フロー追跡部ノード116Bは
、接続に対して一次フロー追跡部になり、一方、フロー追跡部ノード116Cは、接続に
対して二次フロー追跡部になる。フロー追跡部116Bによって維持されていたクライア
ント接続に対する状態情報は、新たな二次フロー追跡部116Cに提供される。
図11Dは、コンシステントハッシュリングにおいて、二次フロー追跡部ノードの障害
の取り扱いを示す。図11Dの上位の並びは、コンシステントハッシュリングにおいて、
1以上のクライアント接続に対する一次フロー追跡部としてのフロー追跡部116A、同
じ接続に対する二次フロー追跡部としてのフロー追跡部ノード116B、及び次のフロー
追跡部としてのフロー追跡部ノード116Cを示す。図11Dの下位の並びにおいて、二
次フロー追跡部ノード116Bには障害は発生している。フロー追跡部ノード116Aは
、接続に対する一次フロー追跡部として残り、一方、フロー追跡部ノード116Cは、接
続に対して二次フロー追跡部になる。フロー追跡部116Bによって維持されていたクラ
イアント接続に対する状態情報は、新たな二次フロー追跡部116Cに提供される。
少なくともいくつかの実施形態において、サーバノード130上のロードバランサモジ
ュール132は、ロードバランサノード110に対して接続公開を実行する。少なくとも
いくつかの実施形態において、接続公開は、サーバノード130からフロー追跡部ノード
及び入口ノードとしての機能を果たしているロードバランサノード110に対して、現在
の接続状態情報を定期的(例えば、1秒ごとに)または不定期に推し進める。当該接続公
開は、接続に対する一次及び二次フロー追跡部ノードの両方に対する接続マッピングを更
新または回復する役割を果たす。少なくともいくつかの実施形態において、ロードバラン
サモジュール132は、例えば、図11Aないし11Dに示されるようなフロー追跡部の
メンバーシップの変化を検出する。検出に応答して、ロードバランサモジュール132は
、一次及び二次フロー追跡部ノードにおける接続に対する状態情報を追加するために接続
公開を実行し、それによって、メンバーシップが変化した場合には、接続に対する変更を
行う。接続公開は、多数のロードバランサノードに障害が発生した場合に、少なくともい
くつかの確立された接続が回復できることに留意されたい。
障害に関するメッセージフロー
少なくともいくつかの実施形態において、一次及び二次フロー追跡部ノードの間のプロ
トコルには、訂正機能または同期機能が含まれる。例えば、図11Aを参照すると、新た
なフロー追跡部ノード116Cがコンシステントハッシュリングに加わった場合には、当
該新たなフロー追跡部ノード116Cは、いくつかの接続数(〜1/N)に関するコンシ
ステントハッシュのキー空間に対して権利を主張し、エッジルータ104からのこれらの
接続に関するトラフィックの受信を開始する。しかしながら、当該新たなフロー追跡部ノ
ード116Cは、接続のために記憶された状態をなにも持っていないので、フロー追跡部
ノード116Cは、各パケットに対してあたかもクライアント160から受信された最初
のパケットであるかのように操作する。一次フロー追跡部は、SYNパケットに応答して
サーバTCPシーケンス番号を生成する責任があり(例えば、図10A参照)、且つ、ク
ライアント160からの最初のACKパケットに応答してサーバノード130を選択する
責任があり(例えば、図1参照)、これら生成された値は、以前の一次フロー追跡部(図
11Aにおけるフロー追跡部ノード116A)によって選択された値と一致しない。しか
しながら、少なくともいくつかの実施形態におけるコンシステントハッシュアルゴリズム
は、以前の一次フロー追跡部(図11Aにおけるフロー追跡部ノード116A)に対して
二次フロー追跡部の役割を割り当て、このフロー追跡部は接続について以前に記憶された
状態をなおも保持する。したがって、少なくともいくつかの実施形態において、二次フロ
ー追跡部(図11Aにおけるフロー追跡部ノード116A)が、一次フロー追跡部116
Cから受信された情報の中に不一致を検出した場合には、二次フロー追跡部は、更新メッ
セージを一次フロー追跡部116Cに返送して、接続に対してフロー追跡部としての機能
を果たしている2つのロードバランサノード110を同期させることができる。同様の方
法は、コンシステントハッシュリングのメンバー構成において他の変化があった後にフロ
ー追跡部を同期させるために使用される。
ロードバランサモジュールの詳細
少なくともいくつかの実施形態において、ロードバランサモジュール132は、サーバ
ノード130の各々の上に存在する分散型ロードバランサシステムの構成要素である。ロ
ードバランサモジュール132の役割は、ロードバランサノード110から受信されたパ
ケットをデカプセル化すること及びそのデカプセル化されたパケットをサーバノード13
0上のサーバ134に対して送信すること、及び、サーバ134からの発信パケットをカ
プセル化すること、及びそのカプセル化されたパケットをロードバランサノード110に
対して送信することが含まれるが、これらに限定されない。
少なくともいくつかの実施形態において、入口サーバ112としての機能を果たしてい
るロードバランサノード110からサーバノード130上のロードバランサモジュール1
32に対する着信パケットは、実際のクライアントデータパケットをカプセル化するステ
ートレスプロトコル(例えば、UDP)のパケットである。カプセル化されたクライアン
トデータパケットの各々は、送信元アドレスとしてのそれぞれのクライアント160の最
初のクライアントIPポート及び宛先アドレスとしてのサーバ134のパブリックIPポ
ートを有する。ロードバランサモジュール132は、クライアントデータパケットのカプ
セル化を外して、例えば、ローカルホストのTCPフローに対してパケットを転送するこ
とによって、そのパケットをサーバノード130上のそれぞれのサーバ134に対して送
信する。
少なくともいくつかの実施形態において、サーバ134から出口サーバ114としての
機能を果たしているロードバランサノード110に対する発信パケットは、発信IPパケ
ットをカプセル化するステートレスプロトコル(例えば、UDP)のパケットである。ロ
ードバランサモジュール132は、発信IPパケットをカプセル化して、そのカプセル化
されたパケットを出口サーバ114に対してファブリック120を介して送信する。カプ
セル化された発信IPパケットの各々は、送信元アドレスとしてのサーバ134のパブリ
ックIPポート及び宛先アドレスとしてのそれぞれのクライアント160のクライアント
IPポートを有する。
ロードバランサモジュールの機能
少なくともいくつかの実施形態において、サーバノード130上のロードバランサモジ
ュール132の機能は、以下の1以上を含む、これらに限定されない。
● ロードバランサノード110、例えば、クライアント160に対する接続を取り扱
っている入口サーバ112からのUDPトンネルを終端すること。これは、入口サーバ1
12から受信した着信クライアントデータパケットのUDPカプセルを外すことを含む。
● 接続に関する発信トラフィックを受信する出口サーバ114を選択すること。
● それぞれのサーバ134に対する接続上の発信IPパケットを中断すること、接続
に関する出力IPパケットをカプセル化すること、及び当該カプセル化されたパケットを
出口サーバ114に送信すること。
● 着信及び発信パケット内のシーケンス番号を分解するのは、フロー追跡部ノード1
16がクライアント160に対してSYN/ACKを送信した際に、シーケンス番号をフ
ロー追跡部ノード116によって生成されたシーケンス番号に揃えるからである。
● それぞれのサーバ134に対する接続を受諾するかまたは拒絶するかどうかについ
て、例えば、それぞれのサーバ134の現在の負荷を示す1以上のメトリクスに基づいて
決定すること。
● クライアントIPポートアドレスに対するアクティブな接続が存在する場合に、衝
突を回避するために、それぞれのサーバ134に対する同じクライアントIPポートアド
レスからの接続を検出すること及び拒絶すること。
● 接続追跡及び接続公開。
ロードバランサモジュールの構成情報
少なくともいくつかの実施形態において、ロードバランサモジュール132の各々は、
自分の構成に関する1つ以上の情報の組み合わせ、すなわち、ロードバランサノード11
0のエンドポイントの組み合わせ、対応すべき有効なパブリックIPアドレスの組み合わ
せ、及び、それぞれのサーバ134が着信接続を受諾するポート番号を取得してローカル
に記憶する。ただし、これらの情報に限定するものではない。少なくともいくつかの実施
形態において、この情報は、図1に示されるように、分散型ロードバランサシステムの構
成サービス122の構成要素から取得され、またはアクセス処理若しくは問い合わせ処理
によって更新される。いくつかの実施形態においては、情報を取得する他の方法が使用さ
れる。
ロードバランサモジュールのパケット取り扱い
少なくともいくつかの実施形態におけるインバウンドトラフィック及びアウトバウンド
トラフィックに対するロードバランサモジュール132の操作について、以下説明する。
少なくともいくつかの実施形態において、ロードバランサモジュール132によってイン
バウンドデータトラフィックが受信された場合には、そのデータパケットは、UDPパケ
ットからデカプセル化されて、そのデカプセル化されたTCPパケット内の宛先アドレス
は、構成された有効なパブリックIPアドレスの組み合わせに対して最初に確認される。
一致しない場合には、パケットは廃棄されるかまたは無視される。少なくともいくつかの
実施形態において、ロードバランサモジュール132は、シーケンス番号がクライアント
160に対してSYN/ACKパケットを送信したフロー追跡部ノード116によって生
成されてランダムに選択されたシーケンス番号と一致するように、TCPヘッダにおいて
定数デルタによってシーケンス番号を調整する。ロードバランサモジュール132は、「
クライアント対パブリック」エンドポイントから「クライアント対サーバ」エンドポイン
トまでのマッピングを内部状態として記録する。
少なくともいくつかの実施形態において、ロードバランサモジュール132は、サーバ
134からのアウトバウンドTCPパケットに関して、その内部状態を最初にチェックし
て、そのパケットはロードバランサモジュール管理しているアクティブな接続に対するも
のかどうかを判定する。アウトバウンドTCPパケットがアクティブな接続でない場合に
は、ロードバランサモジュール132は、パケットをすぐに通過させる。アウトバウンド
TCPパケットがアクティブな接続である場合には、ロードバランサモジュール132は
、発信TCPパケットを、例えば、UDPに従って、カプセル化して、この接続に対して
出口サーバ114として選択されたロードバランサノード110に対して、そのカプセル
化されたパケットを転送する。少なくともいくつかの実施形態において、ロードバランサ
モジュール134は、クライアント160に対してSYN/ACKパケットを送信したフ
ロー追跡部ノード116によって生成されたシーケンス番号に揃えるように、ロードバラ
ンサモジュール134は、発信TCPパケットにおいて定数デルタによってTCPシーケ
ンス番号を調整する。
接続追跡
少なくともいくつかの実施形態において、各サーバノード130上のロードバランサモ
ジュール132は、それぞれのサーバ134に対するアクティブなクライアント接続のす
べてに関する接続の詳細を含んでいるハッシュテーブルを管理する。少なくともいくつか
の実施形態において、ハッシュテーブルに対するキーは、(クライアントIPポート、パ
ブリックIPポート)タプルである。少なくともいくつかの実施形態において、各クライ
アント接続に関する接続状態は、以下に示す1以上のものを含むが、これらに限定されな
い。
● クライアントIPポート
● パブリックIPポート
● フロー追跡部ノード116によって提供された初期サーバTCPシーケンス番号
● サーバTCPシーケンス番号のデルタ
● 最初の一次フロー追跡部IPアドレス
● 最初の二次フロー追跡部IPアドレス
● 最後に検出された入口サーバ112のIPアドレス
● このエントリに対する有効期限
● 最も過去に使用された(LRU)/衝突インデックス
少なくともいくつかの実施形態において、各ロードバランサモジュール132は、すべ
てのアクティブなクライアント接続に関して、一次及び二次フロー追跡部ノードに対する
接続公開メッセージを定期的に生成する。少なくともいくつかの実施形態において、/p
roc/net/tcpの内容が、スキャンされ且つロードバランサモジュールのハッシュ
テーブルの中で、アクティブな接続と交差するのは、Linuxカーネルが接続の追跡を
停止するまで、アクティブな接続がフロー追跡部ノードに対する公開を継続するからであ
る。接続公開については、本明細書の中において後で詳細に説明する。
シーケンス番号の分解処理
上記したように、少なくともいくつかの実施形態において、ロードバランサノード11
0は、クライアント160のSYNパケットに応答して、SYN/ACKパケットをサー
バ134の代理として生成する。クライアント160がACKパケット(TCPのスリー
ウェイシェイクハンド)を送信した後のみしか、ロードバランサモジュール110は、サ
ーバノード130上のロードバランサモジュール132に対して任意のデータを送信する
ことはない。ロードバランサモジュール132がクライアント接続を確立することを最初
に指示された場合には、ロードバランサモジュール132は、ローカルにSYNパケット
を生成してサーバノード130上のサーバ134との間でTCP接続を開始し、サーバ1
34の対応SYN/ACKパケットを中断する。通常、サーバ134(例えば、サーバノ
ード130上のLinuxカーネル)は、ロードバランサノード110からのSYN/A
CKパケットにおいて受信されたクライアントのものとは全体的に異なるTCPシーケン
ス番号を選択する。したがって、少なくともいくつかの実施形態においては、ロードバラ
ンサモジュール132は、クライアント160とサーバ134との間のTCP接続におけ
るすべてのパケット内のシーケンス番号に対して訂正を行う。少なくともいくつかの実施
形態において、ロードバランサモジュール132は、ロードバランサノード110によっ
て生成されたシーケンス番号とサーバ134によって生成されたシーケンス番号との差分
を計算して、TCP接続に対するハッシュテーブルのエントリに差分をデルタ値として記
憶する。接続中にクライアント160から着信データパケットが到達した場合には、TC
Pヘッダは、サーバ134によって使用されるシーケンス番号と整合しない承認番号を有
することになるので、ロードバランサモジュール132は、(例えば、2つの補数を用い
て)TCPヘッダ内のシーケンス番号の値からデルタ値を減算する。ロードバランサモジ
ュールはまた、接続中にサーバ134からクライアント130に対するアウトバウンドパ
ケット内のシーケンス番号にデルタ値を加算する。
分散型ロードバランサシステムにおけるヘルスチェック
分散型ロードバランサシステムの少なくともいくつかの実施形態において、以下に示す
理由の少なくとも一つから、ロードバランサノード110は、ロードバランサの実装(す
なわち、健康なロードバランサノード110及びサーバノード130の)において健康な
メンバーの一貫した表示を要求する。
● ロードバランシング―ロードバランサノード110は、サーバノード130の障害
を検出し、クライアントトラフィックを受諾できる健康なサーバノード130の組み合わ
せに集中する必要がある。
● 分散化状態の管理−ロードバランサは、(例えば、コンシステントハッシュ法のメ
カニズムに従って)多数のロードバランサノード110に亘って共有され/複製される状
態を有する分散型システムである。クライアントトラフィックを適切に取り扱うために、
各ロードバランサノード110は、ロードバランサの実装において健康なメンバーノード
110の一貫した表示を必要とする。
このことを達成するために、分散型ロードバランサシステムの少なくともいくつかの実
施形態において、ロードバランサの実装においてノードを監視するヘルスチェックプロト
コルの実施形態を実現して、できるだけ速く不健康なノードを検出する。ヘルスチェック
プロトコルは、ロードバランサの実装においてノード間に健康情報を伝搬して、それらの
ノードが健康なノードの組み合わせに集中することを可能にする方法を提供する。さらに
、ヘルスチェックプロトコルは、ロードバランサの実装において、健康な/不健康なノー
ド及び状態の変化を報告するメカニズムを提供する。
少なくともいくつかの実施形態において、ヘルスチェックプロトコルは、以下に示す1
つ以上の仮定に基づく。しかし、これらに限定されるものではない。
● ロードバランサの実装において、すべてのノードが分かっている(すなわち、ヘル
スチェックプロトコルは、発見することを実行しない)。
● すべてのノードの障害はフェイルストップである。
● ノード間のすべてのメッセージは、ステートレスプロトコル(例えば、UDP)メ
ッセージであり、当該メッセージは、削除され、遅延され、複製され、または破損される
。メッセージ配信についての保障はない。
少なくともいくつかの実施形態では、ロードバランサの実装におけるノード(例えば、
ロードバランサノード110またはサーバノード130)は、以下に示す条件のもとでは
健康であると見なされる。
● ノードの内部の構成要素のすべてが準備状態(クライアントトラフィックを取り扱
うための準備)である。
● (少なくともクライアント・トラフィックフローに関するネットワーク・インター
フェイス制御部(NIC)についての)ノードの着信/発信ネットワークリンクが健康で
ある。
図12は、少なくともいくつかの実施形態において、ヘルスチェック間隔に従った各ロ
ードバランサノードによって実行されるヘルスチェック方法の上位のフローチャートであ
る。1000に示されるように、各ロードバランサの間隔、例えば、100ミリ秒ごとに
、各ロードバランサ(LB)ノード110は、少なくとも1つの他のLBノード110及
び少なくとも1つのサーバノード130のヘルスチェックをする。1002に示されるよ
うに、ロードバランサノード110は、ヘルスチェックに従って、ローカルに記憶された
自分の健康情報を更新する。1004に示されるように、ロードバランサノード110は
、その後、少なくとも1つの他のロードバランサノード110をランダムに選択して、選
択されたロードバランサノード110に対して自分の健康情報を送信する。少なくともい
くつかの実施形態において、ノード110はまた、1以上のサーバノード130、例えば
、ノード110によってヘルスチェックされた同じサーバノード130に対して、健康な
ロードバランサノード110のリストを送信する。図12の要素については、以下、詳細
に説明する。
ヘルスチェックプロトコルの少なくともいくつかの実施形態において、ロードバランサ
ノード110は自分自身の健康を他のロードバランサノード110に主張することはない
。これと反対に、1以上の他のロードバランサノード110は、当該ノード110にヘル
スチェックを行う。例えば、少なくともいくつかの実施形態において、各ロードバランサ
ノード110は、定期的または不定期にランダムに1以上の他のノード110を選択して
、ヘルスチェックを行う。他の実施例のように、少なくともいくつかの実施形態において
、1以上の他のロードバランサノード110、例えば、コンシステントハッシュリングな
どのノード110の順序付けリスト中の或る所定のロードバランサノード110に最も近
くに隣接する2つは、それぞれ定期的または不定期に当該所定のノード110のヘルスチ
ェックをする。少なくともいくつかの実施形態において、ノード110のヘルスチェック
は、図23に示されるように、ノード110上のNIC1114に対して送信される健康
pingの使用を含む。少なくともいくつかの実施形態において、第1のノード110が
ヘルスチェックを介して第2のノード110が健康であると判定した場合には、当該第1
のノード110は、当該ロードバランサノード110におけるローカルな健康情報に記憶
されている当該第2のノード110についての心拍カウンタを更新(例えば、インクリメ
ント)する。第1のノード110は、自分のローカルな健康情報を、ロードバランサ実装
における1以上の他のロードバランサノード110に対して定期的または不定期に送信し
、これによって、適宜自分自身のローカルな健康情報を(例えば、第2のノードについて
の心拍カウンタをインクリメントすることによって)更新し、自分の更新されたローカル
な健康情報を、1以上の他のノード110に対して送信する。第2のノード110につい
ての心拍情報は、その後、ロードバランサ実装における他のノード110に対して伝搬さ
れる。第2のノード110が健康である限り、第2のノード110から到達可能な他のす
べてのノード110はしたがって、常にインクリメントされている第2のノード110の
心拍カウンタを、例えば、1秒に1度または毎10秒に1度、監視する必要がある。第2
のノード110のヘルスチェックをするノード(複数可)110によって、第2のノード
110が不健康であることが検出された場合には、ヘルスチェックをしているノード11
0によって当該ノード110についての心拍は送信されず、ある時間の閾値の後、ロード
バランサ実装110内の他のノード110は、当該ノード110が不健康であるかまたは
故障中であると見なす。
少なくともいくつかの実施形態において、ロードバランサノード110は、自分自身の
内部状態の1以上の態様をチェックして、当該ノード110がなんらかの理由で不健康で
あることを検出した場合には、当該ノード110は、自分の健康をチェックする他のノー
ド110からの健康pingに対する応答を停止する。したがって、当該不健康なノード
110をチェックしているノード110は、当該ノード110が不健康であると見なし、
当該ノード110の代理として心拍インクリメントを伝搬することはない。
<ヘルスチェックプロトコルの詳細>
少なくともいくつかの実施形態において、ヘルスチェックプロトコルは、心拍カウンタ
技法及び喧伝プロトコル技術を活用する。ヘルスチェックプロトコルは、2つの主要な部
分を有すると見なされる、すなわち、ヘルスチェック及び喧伝/障害検出である。
ヘルスチェック−ロードバランサ実装内のすべてのロードバランサノード110は、実
装中の1以上の他のノード110を定期的または不定期にヘルスチェックする。1以上の
他のノードが判定される方法については、後述する。ヘルスチェックの基本的な考え方は
、ノード110が他のノード110の健康をチェックして、当該他のノード110が健康
であると判定した場合には、当該チェックをしているノード110は、当該他のノード1
10についての心拍カウンタをインクリメントし且つ伝搬することによって、当該他のノ
ード110が健康である旨を主張する。言い換えれば、ノード110は自分自身が健康で
あると他のノード110に対して主張しない代わりに、1以上の他のノード110はロー
ドバランサ実装内の各ノード110の健康をチェックして且つそれを主張する。
喧伝/障害検出−少なくともいくつかの実施形態において、ヘルスチェックプロトコル
は、喧伝プロトコルを活用して、ロードバランサ実装内のメンバーのロードバランサノー
ド110の中にロードバランサノード110の健康情報を伝搬する。喧伝プロトコルは、
迅速に収束して、分散型ロードバランシングシステムの目的のための十分な最終的な一貫
性の保証を提供する。少なくともいくつかの実施形態において、各ロードバランサノード
110は、喧伝プロトコルを使用することにより、ロードバランサ実装内の他のノード1
10の各々についての心拍カウンタを、例えば、心拍リストの中で維持する。各ロードバ
ランサノード110は、上記したように、定期的または不定期に少なくとも1つの他のロ
ードバランサノード110のヘルスチェックを実行し、チェックされたノード110が健
康であることをヘルスチェックによって判定したときは、ノード110についての心拍カ
ウンタをインクリメントする。少なくともいくつかの実施形態において、各ロードバラン
サノード110は、定期的または不定期にランダムに、ロードバランサ実装内の少なくと
も1つの他のノード110を選択して、当該他のノード110に対して自分の現在の心拍
リストを送信する。ロードバランサノード110は、他のノード110から心拍リストを
受信すると、2つのリスト(受信されたリスト及び自分自身のリスト)内の各ノードにつ
いての最大心拍カウンタを判定することによって、且つ、判定された最大心拍カウンタを
自分自身の心拍リストにおいて使用することによって、受信されたリスト内の心拍情報と
自分自身の心拍リストとを統合する。そして今度は、この心拍リストがランダムに選択さ
れた他のノード110に送信され、これによって適宜、自分自身の心拍リストを更新し、
と同じように続く。この技法を使用すれば、健康なノード110の各々についての心拍情
報は、最終的に(例えば、数秒間に)ロードバランサ実装内のすべての他のロードバラン
サノード110に伝搬される。所定のロードバランサノード110についてその心拍カウ
ンタの増加が続く限り、当該所定のロードバランサノードは、他のノード110によって
健康であると見なされる。ロードバランサノード110の心拍カウンタが、ヘルスチェッ
ク及び喧伝処理方法によって、特定の期間にインクリメントされない場合には、他のロー
ドバランサノード110は、不健康であると見なされたロードバランサノード110に集
中する。
ロードバランサノードのヘルスチェック
少なくともいくつかの実施形態において、他のロードバランサノード110によって実
行されるロードバランサノード110に対するヘルスチェックの方法について、以下説明
する。図23を参照すると、少なくともいくつかの実施形態において、或るロードバラン
サノード110は、以下の条件のうち1つ以上が当該ノード110について判定された場
合には、健康であると見なされる。
● ノード110のプロセッサスレッド(例えば、基本的なパケット処理コード110
8スレッド)が準備状態(内部)である。
● ノード110がエッジルータ104のIPアドレス及び/またはMACアドレス(
内部)を知っている。
● ノード110におけるすべてのスレッド及び/またはプロトコルハンドらがレディ
状態(内部)である。
● 北側(エッジルータ104/境界ネットワーク)からの着信リンク及び南側(サー
バ130/生産ネットワーク)からの出力リンクがアクティブ(外部)である。
● ノード110が、ロードバランサ実装内で使用されるネットワーク・インターフェ
イス制御部(NIC)を介して、パケットを受信し且つ送信できる。例えば、図23に示
されるように、例示的なロードバランサノード110の実施形態において、ノード110
は、北向きのNIC1114A及び南向きのNIC1114Bを介して、連続的にパケッ
トを良好に受信し且つ送信する。
これらの健康条件の1つ以上が、所定のノード110において保持されない場合には、
当該ノード110は健康でないと見なされる。いくつかの実施形態においては、ノード1
10が健康であると見なされるのは、上記条件のすべてが当該ノード110において保持
されている場合のみであることに留意されたい。
少なくともいくつかの実施形態において、上記健康条件に加えて、例えば、コントロー
ルプレーン通信のために使用される各ロードバランサノード110上のNIC1114C
として、図23において示される第3のNICも、当該NICに対してパケットを送信す
ること且つ当該NICからパケットを受信することによりヘルスチェックをしているノー
ド110によってチェックされ、第3のNICのチェックが失敗した場合には、チェック
されているノード110は不健康と見なされる。
図13は、少なくともいくつかの実施形態において、他のロードバランサノードからロ
ードバランサノードに対するヘルスチェックの例示的な方法を示す。この実施例において
、ロードバランサノード110Aは、ロードバランサノード110Bに対してヘルスチェ
ックを行っている。ノード110A及び110Bの各々は、北向きのNIC(図23にお
けるNIC1114A)及び南向きのNIC(図23におけるNIC1114B)を有す
る。1で、ノード110Aは、自分の北向きのNICからノード110Bの北向きのNI
Cに対して、エッジルータ104を介してパケット(例えば、pingパケット)を送信
する。ノード110Bは、リストにおいて与えられた上記条件が十分な場合には、自分の
北向きのNIC上でパケットを受信して、2で、自分の北向きのNICからファブリック
120を介して、ノード110Aの北向きのNICに対して応答を送信する。ノード11
0Aは、応答を自分の北向きのNIC上で受信した後、3で、自分の南向きのNICから
ノード110Bの南向きのNICに対して、ファブリック120を介してパケット(例え
ば、pingパケット)を送信する。ノード110Bは、リストにおいて与えられた上記
条件が十分な場合には、自分の南向きのNICにおいてパケットを受信して、4で、自分
の南向きのNICからノード110Aの南向きのNICに対して、エッジルータ104を
介して応答を送信する。ノード110Aは、自分の南向きのNIC上で応答を受信すると
、ノード110Bを健康であると見なし、ノード110Bのローカルな心拍カウンタをイ
ンクリメントし、これによって、上記した喧伝プロトコルに従って、他のノード110に
伝搬される。
いくつかの実施形態において、上記に代わる手段として、ロードバランサノード110
Bは、自分の北向きのNICで受信された第1のpingメッセージに対して、自分の南
向きのNICを介してノード110Aの南向きのNICに応答し、自分の南向きのNIC
で受信された第2のpingメッセージに対して、自分の北向きのNICを介してノード
110Aの北向きのNICに応答する。
さらに、いくつかの実施形態において、ノード110Aもまた、自分自身の第3のNI
Cからノード110Bの第3のNICをping処理することによって、且つ、ノード1
10Bが健康である場合にノード110Bの第3のNICから自分の第3のNIC上のp
ingメッセージに対する応答を受信することによって、コントロールプレーン通信(図
23におけるNIC1114Cとして示される)のために使用されるノード110Bの第
3のNICに対してヘルスチェックを行う。pingメッセージ及び応答は、1つ以上の
コントロールプレーン装置170、例えば、ネットワークスイッチを通過する。
上記説明したヘルスチェックメカニズムは、ノード110BのすべてのNICだけでな
く、(北、南、及びコントロールプレーンを通過する)すべての方向において、着信リン
ク、発信リンク、及びノード110Bのデータ経路のすべてを動かし、さらにpingパ
ケットが内部の待ち行列を渉るときのノード110Bの内部の健康、及び、クライアント
パケットとしての可能性があるときのノード110Bの送信を検証する。
<ロードバランサノードに対するヘルスチェック責任の割り当て>
少なくともいくつかの実施形態において、ロードバランサ実装内のすべてのロードバラ
ンサノード110は、例えば、構成機能によって及びまたは図1に示す構成サービス12
2の構成要素によって、ロードバランサ実装内の他のすべてのロードバランサノード11
0のリスト(例えば、ソートされたリスト)に対するアクセスを有する。少なくともいく
つかの実施形態において、各ロードバランサノード110は、リスト上の1以上の他のノ
ード110をランダムに選択して、ヘルスチェック間隔ごとにヘルスチェックを行い、健
康であると判定された場合にそれらの心拍カウンタをインクリメントする。リストは、ロ
ードバランサ実装内のすべてのロードバランサノード110が、ヘルスチェックメカニズ
ムを介して、現在、健康と見なされているかまたは不健康と見なされているかどうかとい
うことを含み、及び、健康なノード110だけでなく、現在、不健康なノード110がリ
ストからランダムに選択されて且つヘルスチェックされることに留意されたい。したがっ
て、現在、不健康なノード110は、当該ノード110に対してヘルスチェックする1以
上のノード110によって健康であることが判定され、それの心拍カウンタがインクリメ
ントされて、他のノード110に伝搬されると、当該不健康なノード110は健康な状態
に戻る。
あるいは、いくつかの実施形態においては、各ロードバランサノード110は、リスト
の中の1以上の他のノード110に対してヘルスチェックをすること、及び健康であると
判定された場合にはそれらの心拍カウンタをインクリメントすることに対する責任を負う
。例えば、いくつかの実施形態において、各ノード110は、2つの他のノード、例えば
、リストの中で、自分の「左」(または前)及び「右」(または、次)の最も近くの隣接
ノード110をヘルスチェックする責任を負う。リストは環状と見なされ、リストの「最
後」にあるノード110は、リストの「先頭」にあるノード110をヘルスチェックする
責任を負い、逆もまた然りであることに留意されたい。いくつかの実施形態においては、
2つの他のノード110は、他の方法で、例えば、リスト上の次の最も近くの2つの隣接
ノードとして選択される。いくつかの実施形態においては、各ノード110は、リスト上
で2より大きい他のノード110、例えば、3または4の他のノード110をヘルスチェ
ックする責任を負う。少なくともいくつかの実施形態において、或るノード110によっ
てチェックされている隣接ノード110が不健康であると判定された場合には、当該ノー
ド110は、当該不健康な隣接ノード110がチェックする責任を負っていたリスト上で
少なくとも1つのノードをヘルスチェックする責任を負う。少なくともいくつかの実施形
態において、自分の隣接ノード110(例えば、「左」及び「右」の隣接ノード)のヘル
スチェックに加えて、各ロードバランサノード110はまた、定期的または不定期的にラ
ンダムにリングの中のノード110を選択して、当該選択されたノード110のヘルスチ
ェックを実行し、それが健康である場合には、当該ランダムなノード110の心拍をイン
クリメントして伝搬する。少なくともいくつかの実施形態において、順序付きリスト中の
すべての他のノード110は、当該他のノード110が以前に健康または不健康と見なさ
れたかどうかにかかわらず、ランダムな選択及びヘルスチェックの対象と見なされる。
少なくともいくつかの実施形態において、各ノード110は、1以上のランダムに選択
されたノード110に対してヘルスチェックを実行するか、またはその代わりに自分の隣
接ノード110及びランダムに選択されたノードに対して、ヘルスチェック間隔と称され
る一定間隔でヘルスチェックを実行する。例えば、いくつかの実施形態において、心拍間
隔は100ミリ秒であるが、さらに短いまたは長い間隔が使用される。さらに、少なくと
もいくつかの実施形態において、各ノード110は、自分の現在の心拍リストを少なくと
も1つの他のランダムに選択されたノード110に対して、喧伝間隔と称される一定間隔
で送信または「喧伝」する。いくつかの実施形態において、ヘルスチェック間隔と喧伝間
隔とは同じであるが、必ずしも同じでなくてもよい。
図14は、少なくともいくつかの実施形態において、1以上のロードバランサノードに
対するロードバランサノードのヘルスチェックをグラフィカルに示す。この実施例におい
ては、ロードバランサ実装中に8つのロードバランサノード110A〜110Hが存在す
る。点線の円は実装中のすべてのノード110の順序付きリストを表わす。いくつかの実
施形態において、各ノード110は、リスト上で1以上のノード110をランダムに選択
して、各々の間隔でヘルスチェックを行う。また、いくつかの実施形態において、各ロー
ドバランサノード110は、順序付きリスト上の1以上の特定のノード110に対してチ
ェックの責任を負い、例えば、ノード110Aは、図14に示される順序付きリストに従
って、自分に最も近い2つの隣接ノード110B及び110Hに対してヘルスチェックの
責任を果たす。さらに、ロードバランサノードはまた、順序付きリストからランダムに他
のノード110をヘルスチェック間隔毎に選択する。この実施例に示されるように、ノー
ド110Aは、ランダムにノード110Fを選択してヘルスチェックをする。喧伝間隔で
は、ノード110Aは、いくつかの他の健康なノード110、例えば、ノード110Dを
ランダムに選択して、その現在の心拍リストを選択された他のノード110に対して、例
えば、UDPメッセージの中で送信する。ノード110は、他のノード110から心拍リ
ストを受信すると、それに従って、自分自身の心拍リストを更新し、当該心拍リストを1
以上のランダムに選択されたノード110に対して、次の喧伝間隔で伝搬する。
サーバノードのヘルスチェック
上記したようなロードバランサノード110に対するヘルスチェックに加えて、ヘルス
チェックプロトコルの実施形態は、ロードバランサモジュール132を含んでいるサーバ
ノード130及びサーバノード130上のサーバ134に対するヘルスチェックを実行す
る。少なくともいくつかの実施形態において、サーバノード130は、以下に示す1つま
たは両方の条件が当該ノード130のために決定された場合には、健康であると見なされ
る。
● ロードバランサモジュール132が健康である。
● サーバノード130が健康ping(例えば、L7健康ping)に応答するのに
成功する。
図15は、少なくともいくつかの実施形態において、サーバノードに対してヘルスチェ
ックをするロードバランサノードを示す。少なくともいくつかの実施形態において、ロー
ドバランサ実装中のすべてのロードバランサノード110は、ロードバランサ実装中のす
べてのサーバノード130のリストだけでなく、ロードバランサ実装中のすべての他のロ
ードバランサノード110のリストに対するアクセスを有する。リストは、例えば、構成
機能を介して及び/または図1に示される構成サービス122の構成要素を介して、取得
され且つ更新される。少なくともいくつかの実施形態において、サーバノード130は、
図15に示されているように、健康なロードバランサノード110に対してコンシステン
トハッシュ化を行って、図15に示されるようなコンシステントハッシュリングを形成す
る。少なくともいくつかの実施形態において、リング内の各サーバノード130は、リン
グ内の2つの健康なロードバランサノード110によってヘルスチェックされる。例えば
、図15において、サーバノード130Aは、ロードバランサノード110A及び110
Cによってヘルスチェックされる。これら2つのノード110は、コンシステントハッシ
ュリングにおいて、サーバノード130に対する第1(ノード110A)及び第2(ノー
ド110B)のヘルスチェックノード110と称される。所定の健康なロードバランサノ
ード110は、1より大きいサーバノード130をヘルスチェックすることに留意された
い。例えば、図15において、ロードバランサノード110Aはまた、サーバノード13
0B及び130Cをヘルスチェックする。さらに、所定のロードバランサノード110は
、1以上のサーバノード130に対しては第1のヘルスチェックノード110であり、1
以上の他のサーバノード130に対しては第2のヘルスチェックノード110である。例
えば、図15において、ロードバランサノード110Aは、サーバノード130A及び1
30Bに対しては第1のヘルスチェックノードであり、サーバノード130C及び130
Dに対しては第2のヘルスチェックノードである。
少なくともいくつかの実施形態において、ロードバランサノード110に障害が発生し
た場合には、コンシステントハッシュリング上のメンバーシップが変わるが、依然として
健康な、したがって、依然としてコンシステントハッシュリング上にある1以上の他のロ
ードバランサノード110は、当該障害が発生したノード110によって以前にヘルスチ
ェックされたサーバノード130に対するヘルスチェックの責任を負う。
少なくともいくつかの実施形態において、健康なノード110の各々は、サーバチェッ
ク隔と称される一定間隔で、自分が割り当てられたサーバノード130に対するヘルスチ
ェックを実行する。少なくともいくつかの実施形態において、サーバチェック間隔は、上
記説明した喧伝間隔より大きいかまたは喧伝間隔と同じである。
少なくともいくつかの実施形態において、サーバノード130に対するヘルスチェック
を実行するために、健康なロードバランサノード110(例えば、図15におけるノード
110A)は、サーバノード130(例えば、図15におけるサーバノード130A)に
対して、健康pingメッセージ(例えば、L7 HTTP健康pingメッセージ)を
開始する。サーバノード130は、健康である場合には、ロードバランサノード110に
対してping応答を返送する。少なくともいくつかの実施形態において、pingメッ
セージは、サーバノード130上のロードバランサモジュール132によって受信され且
つ処理されるので、ヘルスチェックpingは、成功すると、サーバノード130上のモ
ジュール132が健康であると確証する。ロードバランサノード110は、当該ping
に対する応答を受信すると、サーバノード130を健康であると見なして、サーバノード
130についての心拍カウンタをインクリメントする。
少なくともいくつかの実施形態において、所定の健康なロードバランサノード110に
よってヘルスチェックされたすべてのサーバノード130についての心拍カウンタは、他
のロードバランサノード110に伝搬されるが、それは、例えば、ロードバランサノード
110の心拍カウンタについて以前に説明した喧伝技法において、各ノード110が自分
の心拍リストを少なくとも1つの他のランダムに選択されたノード110に一定間隔(喧
伝間隔)で送信し、受信するノード110が自分自身の心拍リストを2つのリストにおけ
る最大値に基づいて更新するという技法に従ってなされる。
障害検出及び喧伝
少なくともいくつかの実施形態において、上記したロードバランサノード110のヘル
スチェック及びサーバノード130のヘルスチェックを介して得られた情報は、ロードバ
ランサ実装の中のすべてのノード110に伝搬されることを必要とするのは、すべてのロ
ードバランサノード110がロードバランサ実装の中の一貫した表示を維持できるからで
ある。上記したように、少なくともいくつかの実施形態において、ロードバランサノード
110は、喧伝プロトコルに従って互いに通信して、この健康情報を交換し且つ伝搬し、
ロードバランサノード110及びサーバノード130の障害を検出する。
少なくともいくつかの実施形態において、各ロードバランサノード110は、(喧伝間
隔と称される)一定間隔で、他のロードバランサノード110をランダムに選択し、ロー
ドバランサノード110及びサーバノード130についての心拍カウンタとともに、健康
なロードバランサノード110及びサーバノード130についての自分の表示を他のノー
ド110に送信する。ロードバランサノードまたはサーバノード130は健康である限り
、当該ノードは自分のヘルスチェックを合格にし、且つ自分の心拍カウンタは増加を続け
る。ノードについての心拍カウンタが、(障害時間間隔と称される)特定間隔において変
化しない場合には、当該ノードは、ロードバランサノード110によって障害が発生した
と疑われる。一旦ノードに障害が発生したと疑われると、ロードバランサノード110は
、当該ノードが不健康であることを判定する前に、(不健康時間間隔と称される)特定間
隔の間待つ。この不健康時間間隔は、すべてのロードバランサノード110が当該ノード
に障害が発生してしまったことを知るまで、ロードバランサノード110が待つことを許
可する。
図16は、少なくともいくつかの実施形態において、ロードバランサノード110によ
って維持される(ロードバランサノード110またはサーバノード130のいずれかの)
他のノードの健康に関する状態、またはその表示をグラフィカルに表示する。300に示
されるように、ロードバランサノード110が、この問題となるノードが健康であると表
示することからスタートすると仮定する。このことは、当該ノードについての心拍カウン
タが増加されてきたことを示す。しかしながら、302に示されるように、当該ノードの
心拍カウンタが特定間隔(障害時間間隔)において増加しない場合には、304に示され
るように、ロードバランサノード110は当該ノードに障害が発生してしまったのではな
いかと疑う。306に示されるように、当該ノードの心拍カウンタが、特定間隔(不健康
時間間隔)において増加しない場合には、308に示されるように、ロードバランサノー
ド110は当該ノードが不健康であると見なす。しかしながら、310に示されるように
、不健康時間間隔が無効になる前に、当該ノードについての心拍カウンタがインクリメン
トする場合には、ロードバランサノード110は、再び当該ノードが健康な300である
と見なす。同様に、312に示されるように、不健康なノードに関して心拍のインクリメ
ントを受信した場合には、当該ノードは健康な300として見なされることができる。
ノードが不健康であるということを判定することは、当該不健康なノードがロードバラ
ンサノード110であるかまたはサーバノード130であるかに依存して、さらにロード
バランサノード110と不健康なノードとの関係にも依存して、ロードバランサノード1
10による異なる動作を含むが、これについては本明細書の他のところで説明する。
ロードバランサノードのデータ
少なくともいくつかの実施形態において、各ロードバランサノード110は、ロードバ
ランサ実装の状態に関するデータを維持する。少なくともいくつかの実施形態において、
このデータは、各ロードバランサノード110上で、健康なロードバランサノードのリス
ト、疑わしいロードバランサノードのリスト、及び心拍リストが含まれる1以上のデータ
構造において維持される。ただし、含まれるものはこれらに限定されない。図17は、健
康なロードバランサノードのリスト320、疑わしいロードバランサノードのリスト32
2、不健康なロードバランサノードのリスト324、及びロードバランサノードの心拍リ
スト326を維持する例示的なロードバランサノード110を示す。
少なくともいくつかの実施形態において、各ロードバランサノード110は、健康なロ
ードバランサノードのリスト320を維持するが、そのリストは、例えば、どのノード1
10が健康であり、したがって喧伝プロトコルに参加しているかどうかを判定するために
使用される健康なロードバランサノード110のリストである。リスト320上のノード
110のみが、喧伝プロトコルを介してロードバランサ情報の伝搬に含まれ、リスト32
0上のノード110のみが、コンシステントハッシュリング内に存在すると見なされ、及
びこのリスト上のノード110のみが、サーバノード130をヘルスチェックする。ノー
ド110は、このリスト320からランダムに他のノード110を選択して、当該選択さ
れたノードに対して自分の心拍情報が送信される。さらに、心拍カウンタは、現在、健康
なロードバランサノードのリスト320に存在するノード110に対してのみ交換される
。少なくともいくつかの実施形態において、ロードバランサノードNは、ノードNがロー
ドバランサノード110によるヘルスチェックに合格する場合、または、ロードバランサ
ノード110がノードNに関する喧伝メッセージをリスト320上のいくつかの他のロー
ドバランサノード110から受信する場合には、他のロードバランサノード110の健康
なロードバランサノードリスト320に追加されることができる。
少なくともいくつかの実施形態において、各ロードバランサノード110は、疑わしい
ロードバランサノードのリスト322を維持するが、そのリストは、心拍カウンタ(心拍
リスト326参照)が(障害時間間隔と称される)特定間隔において増加されなかったロ
ードバランサノードのリストである。ロードバランサノードEが、ロードバランサノード
110の疑わしいロードバランサノードのリスト322に存在する場合には、ロードバラ
ンサノード110はノードEに関して喧伝しない。健康なリスト320上のいくつかの他
のロードバランサノード110が、ノード110の心拍リスト326内のノードEにおけ
る心拍カウンタよりも高い心拍カウンタを有するノードEに関してロードバランサノード
110に対して喧伝する場合には、ノードEは疑わしいリスト322から健康なリスト3
20に移動される。ノードEが、(不健康時間間隔と称される)特定間隔において、ロー
ドバランサノード110の疑わしいリスト322上に留まる場合には、ノードEはロード
バランサノード110によって不健康であると見なされ、不健康なノードのリスト324
に移動される。不健康なノードのリスト324上のノード110(この実施例では、ノー
ドG)は、ノードGがノード110によるヘルスチェックに合格した場合、または、他の
ノード110からノードGに関する更新された心拍カウンタを受信した場合には、ロード
バランサノード110の健康なノードのリスト320に移動される。
少なくともいくつかの実施形態において、各ロードバランサノード110は、すべての
知られているロードバランサノード110についての心拍リスト326を維持する。各ノ
ード110に関して、このリスト326は、心拍カウンタ及び当該心拍カウンタが最後に
変化した時を示すタイムスタンプを含む。
少なくともいくつかの実施形態において、各ロードバランサノード110は、図17に
は示されていないが、すべての知られているサーバノードについての心拍リストも維持す
る。このリストは、ロードバランサノードの心拍リスト326に類似している。いくつか
の実施形態においては、2つのリストが組み合わされる。少なくともいくつかの実施形態
において、サーバノード130についての心拍情報は、例えば、喧伝プロトコルに従って
、ロードバランサノード110についての心拍情報とともに、またはこれに加えて、ロー
ドバランサノード110の中に伝搬される。
図17は、4つの別々のリストを示すが、2以上のリストは単一のリストに組み合わさ
れることに留意されたい。例えば、いくつかの実施形態においては、すべてのノード11
0の単一のリストが、各ロードバランサノード110上で維持され、ビットフラグまたは
他のデータ構造が、各ノードが現在、健康であるか、疑わしいか、または不健康かどうか
を示すために使用される。
<サーバノードのデータ>
少なくともいくつかの実施形態において、ノード130上のサーバノード130及びロ
ーカルロードバランサモジュール132は、ロードバランサノード110とともに喧伝プ
ロトコル内に参加することはない。ロードバランサノード110は、ロードバランサノー
ドのヘルスチェック方法によって得られた他のロードバランサノード110についての心
拍情報、及び、自分達自身の中のみのサーバノードヘルスチェック方法によって得られた
サーバノード130についての心拍情報を喧伝する(特に、各ロードバランサノード11
0は、現在、自分の健康なロードバランサノードのリスト320上のノードのみに対して
喧伝する)。
しかしながら、各サーバノード130/ロードバランサモジュール132がロードバラ
ンサ実装における健康なロードバランサノード110に関する情報を必要とするのは、サ
ーバノード130が、発信クライアントトラフィクをサーバノード130が転送すること
ができるロードバランサノード110(特に、出口ノード)を決定することができ、且つ
、接続公開情報が送信されるロードバランサノードをどれにするかを決定することができ
るからである。少なくともいくつかの実施形態において、この情報をサーバノード130
に対して提供するために、ロードバランサノード110は、現在、健康なロードバランサ
ノード110を識別する情報(例えば、図17における健康なロードバランサノードのリ
スト320)を有するサーバノード130を定期的または不定期に更新する。少なくとも
いくつかの実施形態において、所定のサーバノード130(図15参照)をヘルスチェッ
クすることに対して責任を負うロードバランサノード110は、サーバノード130に対
して、現在、健康なロードバランサノードを識別する情報を提供する責任を負う。例えば
、図15を参照すると、ロードバランサノード110Aは、自分の健康なロードバランサ
ノードのリスト320をサーバノード130A、130B、130C、及び130Dに対
して送信し、ロードバランサノード110Bは、自分の健康なロードバランサノードのリ
スト320をサーバノード130C、130D、及び130Eに対して送信する、と同じ
ように続く。
ロードバランサノードの障害の取り扱い
図18A及び18Bは、少なくともいくつかの実施形態において、ロードバランサノー
ドの障害の取り扱い処理を示す。図18Aは、例示的なロードバランサ実装を示す。ロー
ドバランサ実装には、4つのロードバランサノード110Aないし110Dが存在する。
エッジルータ104は、クライアント(図示せず)からの着信パケットをロードバランサ
ノード110にルーティングする。少なくともいくつかの実施形態において、エッジルー
タ104は、レイヤ4のフロー単位ハッシュ化マルチパス・ルーティング技法、例えば、
等価マルチパス(ECMP)ルーティング技法に従って、ルーティングを決定する。少な
くともいくつかの実施形態において、エッジルータ104は、ロードバランサ実装におい
て現在使用できるロードバランサノード110について学び、ロードバランサノード11
0の広告、例えば、ロードバランサノード110によって開始された境界ゲートウェイ・
プロトコル(BGP)技術セッションによる広告を介して、クライアントトラフィックを
受信する。しかしながら、少なくともいくつかの実施形態において、ロードバランサノー
ド110はBGPセッションを介してエッジルータ104に対して自分自身を広告する代
わりに、ロードバランサ実装の中の少なくとも1つの他のノード110が、BGPを介し
てエッジルータ104に対してノード110を広告する責任を果たす。例えば、図18A
において示されるようないくつかの実施形態においては、所定のノード110の左及び右
の隣接ノード110が、当該所定のノード110をエッジルータ104に対して広告する
。例えば、ロードバランサノード110Aはノード110B及び110Dを広告し、ロー
ドバランサノード110Bはノード110A及び110Cを広告し、ロードバランサノー
ド110Cはノード110B及び110Dを広告する。
図18Aに示されるように、各ロードバランサノード110はまた、1以上の他のロー
ドバランサノード110、例えば、1以上のランダムに選択されたノード110、ロード
バランサノードの順序付きリストによって決定された1以上の隣接ノード110、または
1以上の隣接ノード及び1以上のランダムに選択されたノードを定期的にヘルスチェック
する。さらに、各ロードバランサノード110は、少なくとも1つのサーバノード130
を定期的にヘルスチェックし、健康なロードバランサノード110の自分のリストを、そ
れをヘルスチェックするサーバノードに対しても送信する。ロードバランサノード110
及びサーバノード130に関する健康情報は、例えば、喧伝プロトコルに従って、ノード
110の中に伝搬される。
図18Bは、図18Aの例示的なロードバランサ実装において、単一のロードバランサ
ノード110における障害の取り扱いを示す。この実施例において、ロードバランサノー
ド110Bは何らかの理由で障害を発生している。例えば、ノード110A及び110C
はノード110Bをヘルスチェックし、両方がそのヘルスチェックでノード110Bに障
害があることを検出する。したがって、ノード110A及び110Cは、ノード110B
についての心拍カウンタをインクリメントしない。ノード110A及び110Bの両方か
らの心拍情報は、喧伝プロトコルに従って、他の健康なロードバランサノード110(こ
の実施例においては、他のロードバランサノードはノード110Dのみである)に伝搬さ
れる。すべての健康なロードバランサノード110(この実施例においては、ノード11
0A、110C及び110D)は、ノード110Bの障害に集中するとすぐに、1以上の
以下に示すイベントが発生するが、これらに限定されない。これらのイベントは、必ずし
もこの順序では発生するものではないことに留意されたい。
● ノード110A及び110Cは、エッジルータ104に対してしているノード11
0Bの広告を停止する。少なくともいくつかの実施形態において、このことは、ノード1
10Bを広告するために、ノード110がエッジルータ104と確立したBGPセッショ
ンを終了することを含む。各ノード110は、各他のノード110を広告するために、エ
ッジルータ104と独立したBGPセッションを確立するので、ノード110Bに関する
BGPセッションを終了することは、広告されている他のノード110には影響を及ぼさ
ないことに留意されたい。少なくともいくつかの実施形態において、ノード110は、T
CP CloseまたはBGPセッションに関する同様のメッセージをエッジルータ10
4に対して送信することによって、エッジルータ104とのBGPセッションを終了する

● ノード110Bが、もはやどのノードによっても広告されていないことの検出に応
答して、エッジルータ104は、ノード110Bに対するクライアントデータパケットの
ルーティングを停止する。エッジルータ104はまた、マルチパス(例えば、ECMP)
ハッシングも調整して、クライアントからのパケットフローを残りの健康なロードバラン
サノード110に対して、特に、当該ノード110上の入口サーバ112に対して再分散
する。入口サーバ112に対してルーティングされていた任意のパケットフローに関して
、当該入口サーバ112はクライアントからサーバへの対応するマッピングを持っていな
いので、当該マッピングはクライアントからサーバへの接続に関係するフロー追跡部ノー
ドから得られるか、または、その代わりに、新たなクライアントからサーバへの接続が図
10Aないし10Gに示された技法に従って確立される。
● ノード110A及び110Cは、それぞれエッジルータ104に対してBGPセッ
ションを開いてお互いを広告する。ノード110A及び110Cの両方とも、ノード11
0Bと同様に、ロードバランサノード110Dによってエッジルータ104に広告されて
いるので、ノード110Bに障害が発生した場合に、ノード110Bがエッジルータ10
4に対するノード110A及び110Bの広告を停止する事実は、エッジルータ104が
これら2つのノード110に対してパケットをルーティングすることを停止する原因には
ならないことに留意されたい。
● 少なくともいくつかの実施形態において、ノード110A及び110Cは、互いに
ヘルスチェックに対する責任を果たすが、それらは今や隣接ノード110だからである。
ノード110Bは不健康であると見なされているにもかかわらず、今なお、1以上の他の
ノード110によってランダムにヘルスチェックがなされることに留意されたい。
● 1以上の残りの健康なロードバランサノード110は、ノード110Bによって以
前にフロー追跡されていた接続をフロー追跡することに対して責任を負う。例えば、ノー
ド110C及び/またはノード110Dは、ノード110Bが一次または二次フロー追跡
部であった1以上の接続に対して、図11C及び11Dに示されているように、一次また
は二次フロー追跡部として引き継ぐ。
● 1以上の残りの健康なロードバランサノード110は、ノード110Bによって以
前にヘルスチェックされていたサーバノード130をヘルスチェックする責任を負う。サ
ーバノード130は、残りのロードバランサノード110によって、(今やノード110
Bを含まない)健康なロードバランサノードのリストで更新される。例えば、図18Bに
おいて、ロードバランサノード110Aはサーバノード130Cのヘルスチェック及び更
新を開始し、ロードバランサノード110Cはサーバノード130Bのヘルスチェック及
び更新処理を開始する。
● エッジルータ104上において、障害のあるノード110BからのBGPセッショ
ンは、最終的にはタイムアウトになる。また、エッジルータ104は、ノード110Bに
障害が発生したことを認識すると、BGPセッションを終了する。
2つのロードバランサノード110が同時にまたはほぼ同時に障害になり得る可能性が
ある。2つのロードバランサノードが互いに隣接していない場合には、その障害は独立し
ており、図18Bにおいて示された方法に従って、独立した単一のノード110の障害と
して取り扱う。しかしながら、障害になった2つのノードが互いに隣接している場合(例
えば、図18Aにおけるノード110B及び110C)には、すべての健康なロードバラ
ンサノード110(この実施例においては、ノード110A及び110D)は障害を検出
し且つ障害に集中するとすぐに、以下に示す1つ以上のイベントが発生するが、これらに
は限定されない。これらのイベントは、必ずしもこの順序で発生するものではないことに
留意されたい。
● ノード110Aは、エッジルータ104に対してノード110Bに関するBGPセ
ッションを終了する。
● ノード110Dは、エッジルータ104に対してノード110Cに関するBGPセ
ッションを終了する。
● ノード110A及び110Dは、エッジルータ104とのBGPセッションを開始
してお互いを広告する。
● ノード110A及び110Dは、お互いのヘルスチェックを開始する。ノード11
0A及び110Dはまた、障害のあるノード110のヘルスチェックを継続することに留
意されたい。
● 残りの健康なノード110は、健康なロードバランサノードのリストでサーバノー
ド130を更新する。
● エッジルータ104からノード110B及び/またはノード110Cへのトラフィ
ックは流れを継続する。何故なら、これら2つのノード110は、エッジルータ104に
対してお互いに広告を継続しているからである。しかしながら、これらのBGPセッショ
ンは最終的にはタイムアウトになり、エッジルータ104は、適宜残りの広告されている
ノード110に対してフローを再分散することになる。
● ノード110B及び110Cは、今なおノード110B及び110Cが健康である
と考えている場合には、エッジルータ104との間でノード110A及び110Dを広告
する自分たちのBGPセッションをていねいに閉じる。
接続公開
再び図1を参照すると、少なくともいくつかの実施形態において、ロードバランサ実装
におけるロードバランサノード110は、サーバ130に対するクライアントTCP接続
に関する状態情報を維持する。この状態情報は、ロードバランサノード110が、エッジ
ルータ104からの着信クライアントパケットをTCP接続に対して責任のあるサーバノ
ード130に対してルーティングできるようにする。サーバノード130上のロードバラ
ンサモジュール132は、自分たちのそれぞれのサーバ134に対するアクティブなTC
P接続のリストを維持する。接続公開は、メカニズムであり、それを介して、サーバノー
ド130上のロードバランサモジュール132がアクティブなTCP接続についての自分
たちのリストをロードバランサノード110に対して公開する。少なくともいくつかの実
施形態において、接続公開のパケットは、接続公開間隔と称される一定間隔で、ロードバ
ランサモジュール132によって形成され、ロードバランサノード110に対して公開さ
れる。
少なくともいくつかの実施形態において、ロードバランサノード110によって維持さ
れる接続状態情報は、キャッシュの形態とし見なされ、特定の接続についての状態情報を
維持することは、当該接続に対するロードバランサノード110上のリースを維持するこ
とと見なされる。キャッシュエントリが一新されない限り、ロードバランサノード110
は、データフローを取り扱うサーバノード130に対するクライアントデータフローのル
ーティングができない。接続公開のメカニズムは、ロードバランサノード110上のキャ
ッシュ及び、それゆえリースをサーバノード130からの現在の接続状態情報で定期的に
一新するので、クライアント160から適切なサーバノード130に対するTCPパケッ
トのフロー処理を維持する。クライアント160がサーバ134に対するTCP接続を終
了したときは、サーバノード130上で当該接続に関連しているロードバランサモジュー
ル132は、アクティブな接続についての自分のリストから当該接続を中断し、したがっ
て、接続公開のメカニズムを通じたTCP接続はもはや公開しない。したがって、接続(
特に、接続に対する入口サーバ112並びに一次及び二次フロー追跡部116)に関連し
ているロードバランサノード110上で接続(1つまたは複数のキャッシュエントリ)に
対応する接続状態情報は、もはや一新されず、接続はロードバランサノード110によっ
て中断される。少なくともいくつかの実施形態において、接続に対応する1つまたは複数
のキャッシュエントリは、メモリがいくつかの他のアクティブな接続を要求するまでは、
ロードバランサノード110上のキャッシュの中に残る。
このように、接続公開のメカニズムは、定期的または不定期に、入口サーバ112並び
に一次及び二次フロー追跡部116上の接続リースを延長して、クライアントトラフィッ
クの流れを継続する。さらに、接続公開のメカニズムは、少なくともいくつかのロードバ
ランサノード110の障害から回復するのに役立つ。クライアント接続の状態情報を保持
している1以上のロードバランサノード110が失敗した場合には、接続公開によって残
りのロードバランサノード110に供給されているアクティブな接続情報は、あるいくつ
かの場合には、接続を回復するために使用される。
接続公開のメカニズムを使用すれば、サーバノード130は、サーバ134とクライア
ント160との間の接続の状態に関する信頼できる送信元になる。さらに、サーバ134
に対する接続を閉じることは、サーバノード130上のロードバランサモジュール132
及びロードバランサノード110によって受動的に取り扱われる。サーバノード130と
ロードバランサノード110との間では、ハンドシェイクは必要でない。言い換えれば、
ロードバランサモジュール132は、特定の接続が閉じられているノードを積極的に通知
するために、ロードバランサノード110に対してメッセージを送信する必要はない。サ
ーバ134が接続を閉じた場合には、サーバ134は当該接続に関する自分の内部状態を
消去する。ロードバランサモジュール132は、サーバ134の内部状態を用いて、接続
公開パケットを追加する。サーバ134の内部状態の中には当該接続はもはや存在しない
ので、当該接続は、ロードバランサノード110に対して公開されることはない。このた
め、ロードバランサノード110上の当該接続に関するリースは失効し、ロードバランサ
ノード110は、当該接続について受動的に忘れる。したがって、ロードバランサノード
110のキャッシュにおいて当該接続のために使用されていたメモリは、必要に応じて、
他の接続のために使用されることが可能になる。
いくつかの実施形態において、ロードバランサノード110によって維持されている接
続についてのリースは、キャッシュ内で接続についてのタイムスタンプ用のエントリを含
む。接続のリースは接続公開処理パケットによって一新されるとき、タイムスタンプは更
新される。サーバノード130上のロードバランサモジュール132によって公開されて
いた接続がもはや存在しないことから、接続のリースが一新されない場合には、タイムス
タンプはもはや更新されない。少なくともいくつかの実施形態において、メモリが必要に
なるまで、接続についてのエントリがキャッシュ内に残っているところでは、レイジー・
ガベージコレクション方法が使用される。例えば、少なくともいくつかの実施形態におい
て、キャッシュエントリ上のタイムスタンプは、リースの一新時間の閾値と比較され、キ
ャッシュエントリについてのタイムスタンプが閾値よりも古い場合には、当該エントリは
古いので再利用される。しかしながら、いくつかの実施形態では、古いエントリは、積極
的にガベージ収集される。
接続公開の配信先
少なくともいくつかの実施形態において、各クライアントTCP接続について、接続状
態を維持する3つのロードバランサノード110、すなわち、入口サーバ112としての
機能を果たしているノード110、一次フロー追跡部116としての機能を果たしている
ノード110、及び二次フロー追跡部ノード116としての機能を果たしているノードが
存在する。所定のTCPフローについて、例えば、ロードバランサノード110によって
、コンシステントハッシュリングの中で一次フロー追跡部116及びそれに続くノードを
見つけるために、TCPフローに対してコンシステントハッシュ機能を適用して、一次及
び二次フロー追跡部116が判定される。TCPフローに対して入口サーバ112として
の機能を果たしているロードバランサノード110は、エッジルータ104の内部マルチ
パス(例えば、ECMP)ハッシュ機能に基づくエッジルータ104からの当該フローに
関するトラフィックを受信するノード110である。ノード110の障害または追加があ
る場合には、入口サーバ112としての機能を果たしているロードバランサノード110
は、多くのアクティブなTCPフローに対して変化し、さらに少なくともいくつかのアク
ティブなTCPフローに対してフロー追跡部として機能しているロードバランサノード1
10は変化する(例えば、図11Aないし11D参照)。サーバノード130上のサーバ
132に対するすべてのTCPフローについて、サーバノード130上のロードバランサ
モジュール132が、いずれのロードバランサノード110が当該TCPフローに対する
入口サーバ112であるかを示している状態情報を維持するのは、それが当該ロードバラ
ンサノード110からのトラフィックを受信するからである。しかしながら、少なくとも
いくつかの実施形態において、ロードバランサモジュール132が、どのロードバランサ
ノード110がTCPフローに対して一次及び二次フロー追跡部としての機能を果たして
いるか分からず、且つ、決定することができないのは、ロードバランサモジュール132
は、使用されるコンシステントハッシュ機能が分からないからである。言い換えれば、少
なくともいくつかの実施形態において、ロードバランサモジュール132は、コンシステ
ントハッシュ法を行わない。
アクティブな接続情報の公開
図19A及び19Bは、少なくともいくつかの実施形態において、接続公開の技法をグ
ラフィカルに示す。図19Aは、ロードバランサノードに対して、アクティブな接続情報
を公開しているロードバランサ(LB)モジュールを示す。少なくともいくつかの実施形
態において、各ロードバランサモジュール132は、サーバノード130上でアクティブ
なTCPフローの各々に対する情報を収集して、接続公開パケットを形成する。所定のT
CPフローに対する情報は、当該フローに対して入口サーバ112としての機能を果たし
ているロードバランサノード110を識別する情報を含む。接続公開の準備ができた場合
(例えば、接続公開間隔に到達した時)には、上記したように、ロードバランサモジュー
ル132は、例えば、サーバノード130をヘルスチェックするロードバランサノード1
10からサーバノード130に対して定期的に送信される健康なロードバランサノード1
10のリストから、ランダムにロードバランサノード110を選択する。ロードバランサ
モジュール132は、次に、選択されたノード110に対して、接続公開パケットを送信
する。例えば、図19Aにおいて、ロードバランサモジュール132Aは、ロードバラン
サノード110Aに対して1つの接続公開パケットを送信し、後でロードバランサノード
110Bに対してもう1つの接続公開パケットを送信する。
図20は、少なくともいくつかの実施形態において、各ロードバランサモジュール13
2によって実行される接続公開方法の上位のフローチャートである。500に示されるよ
うに、ロードバランサ(LB)モジュール132は、それぞれのサーバノード130上の
すべてのアクティブなTCPフローに対する接続公開エントリを生成する。少なくともい
くつかの実施形態において、ロードバランサモジュール132は、例えば、サーバノード
130上の/proc/net/tcpから、サーバノード130上のサーバ134が取り
扱うアクティブなTCP接続の組み合わせを検索する。すべてのアクティブなTCP接続
について、ロードバランサモジュール132は、(例えば、ローカルに維持されているア
クティブな接続のテーブルの中で)TCPフローに対して入口サーバ112として機能し
ているロードバランサノード110を探索して、接続に対するTCPタプル(例えば、ク
ライアントIPアドレス、クライアントポート、サーバ(パブリック)IPアドレス、及
びサーバポートから構成される4タプル)及び接続に対応する入口サーバ112を示す接
続公開エントリを生成する。各ロードバランサモジュール132は、接続に対してパケッ
トが受信された最後のロードバランサノード110を示している各アクティブなTCP接
続に関する情報を維持し、この情報はロードバランサモジュール132によって使用され
て、各アクティブな接続に対する入口ノード110を識別することに留意されたい。
502に示されるように、ロードバランサモジュール132は、(1以上の接続公開エ
ントリで、1つのエントリが各アクティブなTCP接続に対応する)接続公開パケットを
送信すべきロードバランサノード110をランダムに選択する。少なくともいくつかの実
施形態において、ロードバランサモジュール110は、ロードバランサモジュール132
が送信準備のできた接続公開パケットを決定したときに、ランダムに選択される。少なく
ともいくつかの実施形態において、この決定は、接続公開間隔に従って行われる。限定さ
れない実施例として、接続公開間隔は、100ミリ秒(ms)、または1秒である。少な
くともいくつかの実施形態において、ロードバランサモジュール110は、ロードバラン
サノード110の1つから以前に受信された健康なロードバランサノード110のリスト
から選択される。504に示されるように、ロードバランサモジュールは次に、選択され
たロードバランサノード110に対して、接続公開パケットを公開する。少なくともいく
つかの実施形態において、接続公開パケットは、ステートレスパケット、例えば、UDP
パケットである。いくつかの実施形態では、接続公開パケットは、目標のロードバランサ
ノード110に対して当該パケットを送信する前に圧縮される。少なくともいくつかの実
施形態において、接続公開情報は、目標のロードバランサノード110に対して、2以上
のパケットの中で送信される。
要素504から要素500に戻る矢印に示されるように、ロードバランサモジュール1
32は、連続的に接続公開パケットを構築し、ランダムにノード110を選択し、当該パ
ケットを当該選択されたノードに送信する。上記したように、このことは、ロードバラン
サノード110が現在のアクティブな接続情報により相対的且つ規則的に更新されて、ロ
ードバランサノード110上の接続リースを維持するように、接続公開間隔に従って実行
される。
少なくともいくつかの実施形態において、接続公開パケットは、ロードバランサモジュ
ールによってロードバランサノード110に対してランダムに分散されるので、当該接続
公開パケットを受信するロードバランサノード110は、当該接続公開パケット内のアク
ティブな接続情報を当該接続のための適切な入口/一次/二次ノード110に対して分散
することに責任がある。図19B及び、図21及び22は、少なくともいくつかの実施形
態において使用されるアクティブな接続情報の分散方法を示す。
図19Bは、少なくともいくつかの実施形態において、アクティブな接続情報をロード
バランサノード110の中に分散することを示す。ロードバランサノード110がロード
バランサモジュール132から接続公開パケットを受信した場合には、ロードバランサノ
ード110は、当該フローに対応する入口ノード及び一次及び二次フロー追跡部ノードを
決定するために、そこに示された各TCPフローに関する情報を分析する。ロードバラン
サノード110がフローに関するそれらの役割の1つを果たしている場合には、ロードバ
ランサノード110は、当該フローに関する情報を消費する(例えば、状態情報に関する
自分のキャッシュを更新することによって)。少なくともいくつかの実施形態において、
ロードバランサノード110はまた、当該フローに関する他の役割を果たしている1以上
の他のノード110に対して送信されるパケットの中に、当該フローに関する情報を配置
する。接続公開パケットによって示されている残りのフローについて、ロードバランサノ
ード110は、アクティブな接続情報を2以上のもっと小さなパケットに分割して、1以
上の他のロードバランサノード110に送信する。例えば、少なくともいくつかの実施形
態において、1以上のフローに関するアクティブな接続情報を有するパケットは、当該フ
ローに対して入口サーバ112、一次フロー追跡部116A、及び二次フロー追跡部11
6Bとしての機能を果たしているロードバランサノード110に送信される。
図21は、少なくともいくつかの実施形態において、目標のロードバランサノード11
0に対する接続公開パケット内で受信されるアクティブな接続情報の配信方法のフローチ
ャートである。520に示されているように、ロードバランサノード110は、ロードバ
ランサモジュール132から接続公開パケットを受信する。ロードバランサモジュール1
32は、例えば、図19A及び20を参照して上記説明したように、パケットを受信する
ため、パケットを生成して、ロードバランサノード110を選択した。接続公開パケット
は、そこからのパケットが受信されたサーバノード130を識別している情報(例えば、
サーバノード130上のロードバランサモジュール132のIPアドレス)、及び、アク
ティブなTCP接続(例えば、クライアントIPアドレス、クライアントポート、サーバ
(公開)IPアドレス、及び各接続に対応するサーバポートから構成される4タプル)を
識別しているエントリのリストを含む。
図21の要素522ないし530において、ロードバランサモジュール110は、受信
された接続公開パケットにおいて示されているアクティブなTCP接続情報を繰り返し処
理する。522に示されているように、ロードバランサノード110は、パケットの中の
次のTCPフローにおけるエントリを分析して、それぞれのTCPフローに対応する入口
ノード110及び一次及び二次フロー追跡部ノード110を決定する。少なくともいくつ
かの実施形態において、ロードバランサノード110は、接続公開エントリから入口ノー
ド110のアイデンティティを取得する。少なくともいくつかの実施形態において、TC
Pフローに対応する一次及び二次フロー追跡部ノード110は、コンシステントハッシュ
機能に従って決定される。524において、ロードバランサノード110が検査されてい
るTCPフローに対する役割の1つで機能を果たしている場合には、526において、ロ
ードバランサノード110は、例えば、状態情報に関する自分のキャッシュを更新するこ
とによって、フローに関する情報を消費する。528に示されているように、ロードバラ
ンサノード110は、他のロードバランサノード110に対して送信されるべく組み立て
られているパケットに、TCPフローに対する接続公開エントリを追加する。530にお
いて、接続公開パケットの中にさらなる接続公開エントリが存在する場合には、方法は5
22に戻って、次のエントリを処理する。そうでない場合には、ロードバランサノードは
、532に示されているように、最初の接続公開パケットからの接続公開エントリのサブ
セットを各々が含む新たに組み立てられたパケットを、当該パケットに対応する目標のロ
ードバランサノード110に送信する。少なくともいくつかの実施形態において、目標の
ロードバランサノード110に送信されたパケットは、ステートレスパケット、例えば、
UDPパケットである。いくつかの実施形態において、パケットは、目標のロードバラン
サノード110に当該パケットが送信される前に圧縮される。
したがって、少なくともいくつかの実施形態では、図21の要素522ないし528に
おいて、フロー追跡部ノード110は、受信された接続公開パケットにおける接続公開エ
ントリから522で決定される情報に従って、他のノード110の特定の1つに各々が送
信される1以上のパケット(例えば、UDPパケット)を組み立てる。少なくともいくつ
かの実施形態において、他のノード110に送信されるパケットは、目標のノード110
が入口ノード110、一次フロー追跡部ノード110、または二次フロー追跡部ノード1
10としての機能を果たしているTCPフローについてのエントリを含む。いくつかの実
施形態において、所定のロードバランサノード110は、TCPフローに対して入口ノー
ド及び一次フロー追跡部ノードの両方としの機能を果たし、またはTCPフローに対して
入口ノード及び二次フロー追跡部ノードの両方としての機能を果たすことに留意されたい
図22は、少なくともいくつかの実施形態において、接続公開パケットの中で受信され
たアクティブな接続情報を目標のロードバランサノード110に対して分散する他の方法
を示す。550に示されているように、ロードバランサノード110は、ロードバランサ
モジュール132から接続公開パケットを受信する。この方法においては、552に示さ
れているように、ロードバランサノード110上のプロセスは、パケット内の接続公開エ
ントリを分析し、それに応じて、受信されたパケットを1以上のより小さなパケットに分
割する。ロードバランサノード110は、この処理中においてフロー情報をローカルに消
費することはない。一旦接続公開パケットが1以上のパケットに分割されると、当該パケ
ットは、554ないし560に示されているように処理される。554において、パケッ
トに対応する目標のノード110がこのロードバランサノード110である場合には、当
該ロードバランサノード110は、556に示されているように、ローカルにパケットを
消費する。そうでない場合には、パケットは目標のロードバランサノード110に送信さ
れる。560において、さらに処理されるべきパケットが存在する場合には、方法は55
4に戻る。そうでない場合には、方法は終了する。
したがって、ロードバランサモジュール132から接続公開パケットを受信するロード
バランサノード110は、当該接続公開パケットを、他のロードバランサノード110の
うち特定のものに固有の2以上のより小さなパケットに分割し、それに応じて、当該パケ
ットを分散するが、一方、現在、当該ロードバランサノード110によって取り扱われて
いる任意のTCPフローに関するフロー情報を内部で消費する。その間に、他のロードバ
ランサノード110もまた、ロードバランサモジュール132から接続公開パケットを受
信しており、接続公開エントリを多数のより小さいパケットに分割し、当該より小さいパ
ケットを目標のノード110に分散して、これによりアクティブな接続情報をノード11
0の中に分散する。
接続公開のトリガ
少なくともいくつかの実施形態において、接続公開は、1以上の異なるイベントによっ
てロードバランサモジュール132上でトリガされる。前述のように、いくつかの実施形
態において、接続公開パケットは生成されて、接続公開間隔、例えば、100ミリ秒また
は1秒の間隔に従って、ランダムに選択されたロードバランサノード110に対して送信
されて、ロードバランサノード110上のTCP接続に対するリースを一新する。いくつ
かの実施形態において、ロードバランサノード110のメンバーシップの変化は、即時の
接続公開イベントをトリガする。少なくともいくつかの実施形態において、ロードバラン
サモジュール132は、それぞれのサーバノード130をヘルスチェックするロードバラ
ンサノード110の1つから送信された健康なロードバランサノード110のリストから
当該変化について学ぶ。リストによって変化(削除または追加のいずれか)を検出したと
きには、当該変化によって影響を受けるTCP接続は、当該ロードバランサノード110
によってさらに迅速に回復されるように、ロードバランサモジュール132が接続公開パ
ケットを生成して、ロードバランサノード110に送信する。
パケットループの防止
接続公開パケットの処理中にロードバランサレイヤのメンバーシップが変化したときは
、接続公開パケットのループが発生する。第1のノード110がロードバランサモジュー
ル132から接続公開パケットを受信し、より小さなパケットを第2のノード110に送
信する。しかしながら、メンバーシップが変化していた場合には、当該第2のノード11
0は、当該パケットは第1のノード110に行くべきだと判定し、このため当該パケット
を第1のノード110に転送する。少なくともいくつかの実施形態において、このループ
が発生するのを防ぐために、ロードバランサモジュール132から受信される接続公開パ
ケット及びロードバランサノード110から受信される接続公開パケットのために異なる
ポート番号が使用され、ロードバランサノード110は、他のロードバランサノード11
0から受信される接続公開パケットを再分配しない。
接続公開パケットの分散の代替
上記された接続公開方法において、ロードバランサモジュール132は、接続公開パケ
ットが送信されるロードバランサノード110をランダムに選択する。しかしながら、い
くつかの実施形態において、ロードバランサノード110を選択するために他の方法が使
用される。例えば、いくつかの実施形態において、ロードバランサノード132は、1以
上のアクティブなTCPフローを取り扱う特定の入口ノード110を各々が目標にする1
以上の接続公開パケットを組み立てて、目標の入口ノード110に対してパケットを送信
した。入口ノード110は、アクティブな接続情報を接続に対応する一次及び二次フロー
追跡部に再分配するであろう。他の実施例として、いくつかの実施形態において、単一の
ランダムに選択されたノード110に対して接続公開パケットを送信する代わりに、各接
続公開パケットは、ロードバランサモジュール132によって2以上の健康なノード11
0またはすべての健康なノード110に送信される。
ロードバランサノードのアーキテクチャ
図23は、少なくともいくつかの実施形態におけるロードバランサノード110につい
ての例示的なソフトウェアスタックのアーキテクチャを示すが、この図に限定する意図で
はない。この例示的なソフトウェアスタックのアーキテクチャにおいて、ロードバランサ
サーバのネイティブコード1106及びコアパケットのプロセスコード1108、例えば
、インテル(登録商標)のデータプレーン開発キット(DPDK)技術コードを含むネイ
ティブコードのレイヤを管理するためのJavaネイティブ・インターフェイス(JNI
:登録商標)1104技術を使用する単一のJava(登録商標)技術プロセス1102
の範囲内で、ロードバランサノード110は動作する。ネイティブコードは、2つのネッ
トワーク・インターフェイス・コントローラ(NIC1114A及び1114B)にイン
ターフェイスする。第1のNIC(NIC1114A)は、「北」に面していて、すなわ
ち、エッジルータ104に向いている。第2のNIC(NIC1114B)は、「南」に
面していて、すなわち、サーバノード130に向いている。少なくともいくつかの実施形
態において、NIC1114A及び1114Bは、TCPスタックを維持しない。したが
って、少なくともいくつかの実施形態は、ロードバランサノード110がコントロールプ
レーンを介して、プロセスと通信できるように、また、逆方向も同様にできるように、T
CP接続をサポートする第3のNIC1114Cを備える。また、いくつかの実施形態に
おいて、第1の北向きのNIC1114A及び第2の南向きのNIC111Bだけは、ロ
ードバランサノード110の中に実装され、且つ、第2の南向きのNIC1114BはT
CPスタックを実装し、それを介したロードバランサノード110がコントロールプレー
ンを介したプロセスと通信する。ロードバランサノード110はまた、オペレーティング
システム(OS)技術ソフトウェア1112、例えば、Linux(登録商標)カーネル
、及び、OS技術ソフトウェア1112及びJNI1104技術に加えてJava仮想マ
シン(JVM:登録商標)技術ソフトウェア1110のレイヤを有する。
少なくともいくつかの実施形態において、分散型ロードバランシングシステムのロード
バランサノード110の各々は、多くのデータフローを高いパケット速度で同時に処理す
る必要がある。少なくともいくつかの実施形態において、スループットの必要なレベルを
達成するためには、ロードバランサノード110は、高性能のパケット処理のために、イ
ンテル(登録商標)・データプレーン開発キット(DPDK)技術を活用する。DPDK
技術は、ユーザ空間のプログラムが、ネットワーク・インターフェイス・コントローラ(
NIC)から及びネットワーク・インターフェイス・コントローラ(NIC)へ直接パケ
ットの読み込み/書き込みすることを可能にし、Linuxカーネルの
ネットワーキングスタック(Linus ixgbeベースのNICドライバを除く)の
多くのレイヤをバイパスする。パケット処理に取り組むDPDKは、ビジーループの中で
直接的にNICハードウェアをポーリングする専用のCPUコアを優先して、割り込みハ
ンドラベースの入力を拒絶する。この取り組みは、ビジーループの中で専用のCPUコア
を連続的に動かすことによる熱出力の増加を犠牲にして、さらに高いパケット速度を実現
する。DPDK技術はまた、CPUコア管理、ロックフリーの待ち行列、メモリプール、
及び同期プリミティブを含むパケット処理のためのツールを提供する。図24に示されて
いるように、DPDK技術では、専用のCPUコア600が各特定のタスクのために使用
され、作業は、無閉鎖の待ち行列602を用いて1つのCPUコア600Aから他のCP
Uコア600Bに渡される。
DPDK待ち行列602は、2つのリングバッファの高速パワーを使用して実装され、
単一及び多数の生産者/消費者の変数の型をサポートする。多数の生産者/消費者の変数
の型は、すべてがロックフリーではないのは、それらがアクセスを同期するためにコンペ
ア・アンド・スワップ(CAS)のループを有するからである。すべてのパケット・バッ
ファメモリは前もってメモリプールに割り当てられているので、バッファに対するポイン
タのみが、待ち行列602について読みだされ且つ書き込まれる。メモリプールは、待ち
行列として実装され、メモリのチャネル及びランクに亘ってメモリを分散するために最適
化され、不均等メモリアクセス(NUMA)の最適化分配をサポートする。少なくともい
くつかの実施形態において、パケット・バッファは、各パケット・バッファにおけるヘッ
ドルーム及びtailroomを十分に過剰割り当てするMbufパラダイムなどの方法
を使用して、バッファのコピーを必要とすることなく、外部ネットワークレイヤのヘッダ
を追加/削除するカプセル化/デカプセル化の操作をサポートする。
ロードバランサノード110の少なくともいくつかの実施形態において、コアパケット
処理のアーキテクチャは、DPDK技術を活用して実装される。各ロードバランサノード
110は、コアパケット処理のアーキテクチャに従って、実装されている少なくとも1つ
のマルチコア・パケット・プロセッサを有する。コアパケット処理のアーキテクチャは、
マルチコア・パケット・プロセッサの待ち行列及びコアを通過するパケットフローのため
に、単一の生産者/単一の消費者のパラダイムを使用する。このパラダイムにおいて、各
待ち行列は1つの及び1つのみのコアに入力し、各コアは自分がパケットを供給する他の
コアの各々に対する1つの及び1つのみのコアに出力する。さらに、マルチコア・パケッ
ト・プロセッサ内のコアによって使用されるメモリは共有ではなく、各コアは自分自身の
独立したメモリ領域を有する。したがって、コア間で共有するメモリまたは待ち行列はな
く、メモリ競合または待ち行列競合はなく、リクエスト・オブ・オーナーシップ(RFO
)またはコンペア・アンド・スワップ(CAS)などのメモリまたは待ち行列共有メカニ
ズムは必要ない。図25及び図26は、コアパケット処理のアーキテクチャに従って、実
装されている例示的なマルチコア・パケット・プロセッサを示す。
図25は、少なくともいくつかの実施形態において、DPDK技術を活用してデータフ
ローを処理するコアパケット処理のアーキテクチャに従って、実装されている例示的なマ
ルチコア・パケット・プロセッサを示す。コアパケット処理のアーキテクチャは、単一の
生産者/単一の消費者のパラダイムに従って、マルチコア・パケット・プロセッサとして
実装される。少なくともいくつかの実施形態において、図23に示されているように、ロ
ードバランサノード110の各々は、2つのネットワーク・インターフェイス・コントロ
ーラ(NIC)すなわち境界ネットワーク/エッジルータ104に面する北向きNIC1
114A及び生産ネットワーク/サーバノード130に面する南向きNIC1114Bを
有する。少なくともいくつかの実施形態において、NIC1114は、10GbpsのN
ICである。ロードバランサノード110を通って流れる主なパケットは、これら2つの
NICの1つ(NIC1114Aまたは1114Bのいずれか)で受信され、処理され(
例えば、カプセル化またはデカプセル化され)、他のNIC(NIC1114Bまたは1
114Aのいずれか)に送信される。
図25を参照すると、少なくともいくつかの実施形態において、ロードバランサノード
110は、各NIC1114において、2つのCPUコア、受信(RX)コア610及び
送信(TX)コア630をスピンアップする。ロードバランサノード110はまた、両方
のNIC1114に対するパケットを両方向で処理する多くのワーカーコア620をスピ
ンアップする。この実施例においては、4つのワーカーコア620Aないし620Dが使
用される。受信コア610は、各受信コア610が各ワーカーコア620に対応するそれ
ぞれのワーカー入力待ち行列612の中にパケットを供給する場合に、それらの入力待ち
行列からの着信パケットがNIC1114に到達したときにそのバッチを読み取り、各パ
ケットに対するワークのバルクを実行するワーカーコア620に対して当該パケットを分
散する。少なくともいくつかの実施形態において、受信コア610は、(クライアント接
続のIPアドレス及びポートによって識別される)任意の特定のクライアント接続が同一
のワーカーコア620によって処理されることを保証するとともに、各着信パケットに対
してレイヤ4の「フローハッシュ」技法(前に説明したように、エッジルータ104によ
って使用される同様のフロー単位ハッシュ化マルチパス・ルーティング技法)を実行し、
当該パケットをワーカーコア620に分散する。このことは、各ワーカーコア620がパ
ケットの同一のサブセットを常に監視することを意味し、ロックが要求されないように、
ワーカーコア620によって管理されている状態データ上の競合を排除する。受信された
パケットへのポインタは、ワーカーコア620が新たな入力について連続的に監視するワ
ーカー待ち行列622に亘って分散される。ワーカーコア620は、各接続に対する(例
えば、割り当てられたサーバノード130の)状態を管理する責任を負うとともに、アウ
トバウンド待ち行列632の1つにパケットを転送する前に、パケットに対してUDPの
カプセル化またはデカプセル化を実行する。送信コア630は、ワーカーコア620を介
してアウトバウンド待ち行列632を循環させ、出力パケットが待ち行列632上に現れ
たときに、それらの対応するNIC1114に対して当該出力パケットを書き込む。
図26は、少なくともいくつかの実施形態において、DPDK技術を活用してデータフ
ローを処理するコアパケット処理のアーキテクチャに従って、実装されている他の例示的
なマルチコア・パケット・プロセッサを示す。コアパケット処理のアーキテクチャは、単
一の生産者/単一の消費者のパラダイムに従って、マルチコア・パケット・プロセッサと
して実装される。少なくともいくつかの実施形態において、高いスループットのクライア
ントTCPフローに加えて、ロードバランサノード110上のDPDKコアのアーキテク
チャが使用され、ARP、DHCP、及びBGPなどの他のプロトコルについて、北及び
南向きNIC1114上のパケットを送信し且つ受信する。図26に示されている実施形
態において、ワーカーコア620Aは、これらの他のプロトコルにおいてパケットを取り
扱うために専用化されている。このワーカーコア620Aは「遅い」ワーカーコアと称さ
れるが、それは一般的にクライアントTCPフローよりも遅い速度で発生するパケットを
処理するからである。これに対して、クライアントTCPフローのみを処理する他のワー
カーコア620Bないし620Dは、速いワーカーコアと称される。北向き及び南向きN
IC1114上でそれぞれ着信パケットを取り扱う受信コア610A及び610Bは、遅
いワーカーコア620Aによって取り扱われるべきパケットを識別すると、当該パケット
を遅いワーカーコア620Aに対応する入力待ち行列622に導く。遅いワーカーコア6
20Aもまた、Java/JNIによって生成されたパケットに対応する入力待ち行列6
22、及びJava/JNIに対する出力パケットに対応する出力待ち行列634を監視
する。遅いワーカーコア620Aは、速いワーカーコア620Bないし620Dの各々に
対して、パケット、例えば、接続公開パケットを送信できるように、遅いワーカーコア6
20Aも、速いワーカーコア620Bないし620Dの各々に対応する入力待ち行列62
2に対して出力する。遅いワーカーコア620Aはまた、送信コア630A及び630B
の各々に供給するアウトバウンド待ち行列632を有する。
少なくともいくつかの実施形態において、速いワーカーコア620Bないし620Dの
各々の第3の入力待ち行列622は、遅いワーカーコア620Aからの出力待ち行列であ
る。少なくともいくつかの実施形態において、例えば、この第3の入力待ち行列622は
、各々が接続状態情報を有している接続公開パケットを受信するため且つ処理するために
、速いワーカー待ち行列620Bないし620Dによって使用される。これらの接続公開
パケットの少なくともいくつかについては、送信コア630に対する出力が存在しない。
その代わりに、パケットにおける接続状態情報は、例えば、それぞれの速いワーカーコア
620が維持する1以上のパケットフローに関する記憶された状態を更新することで、速
いワーカーコア620によって消費される。したがって、速いワーカーコア620Bない
し620Dに対して入力する遅いワーカーコア620Aからの出力待ち行列は、速いワー
カーコアに記憶された状態を更新するために受信コア610から直接入力待ち行列622
以外の経路を提供する。
少なくともいくつかの実施形態において、図25及び26のマルチコア・パケット・プ
ロセッサは、着信パケットをフィルタ処理して、有効なパケットのみを処理し且つ出力す
る。例えば、少なくともいくつかの実施形態において、受信コア610は、いずれのワー
カーコア620によってもサポートされていないプロトコルのパケットをフィルタ処理で
除外するので、当該パケットをワーカーコア620に対して送信しない。少なくともいく
つかの実施形態において、ワーカーコア620の各々は、パケットを処理する場合に、パ
ケットがさらに処理することが受諾できるものかどうかを判定するため、及び、送信コア
630に対して出力するため、最初に該当するそれぞれのワーカー入力待ち行列622か
ら読み出したパケットを分析して、次に、受諾する送信コア630に対する当該パケット
のみ処理及び出力を完了する。受諾できないパケットは廃棄される。例えば、ワーカーコ
ア620は、各パケットのアドレス情報を調べて、負荷分散されている有効なアドレスに
的を絞ったパケットのみ受諾し、すべての他のパケットを廃棄する。
境界ゲートウェイ・プロトコル(BGP)データの取り扱い
少なくともいくつかの実施形態において、コアのアーキテクチャの内部及び外部でBG
Pクライアントに関連するパケットフローは、以下のように取り扱われる。NIC111
4A及び1114BはLinuxカーネルには向かわないので、エッジルータ104に対
するTCP接続は、図26に示されているように、コアのアーキテクチャによって中断さ
れ、遅いワーカーコア622Aによって処理され、遅いワーカーコア622Aは、出力待
ち行列634を介してJava空間の中に当該BGPパケットを渡す。これらのTCPパ
ケットは、ロードバランサノード110上の1以上のモジュールによってさらに処理され
た後、TCP接続を管理し且つTCPストリームに当該パケットを有効に変換するLin
uxカーネルによる処理を含め、BGPクライアントに対して配信される。このデザイン
は、BGPクライアントが標準のJavaTCPソケットライブラリを用いて書かれるよ
うにする。
図27は、少なくともいくつかの実施形態において、ロードバランサ(LB)ノード処
理部650による着信BGP TCPパケットの処理を示す。エッジルータ104からの
パケットは、北向きNIC640に到達し、受信コア652に対応する入力待ち行列64
0の中に進む。受信コア652は、待ち行列640からパケット、BGPパケットとして
識別されたパケットを読み取り、遅いワーカーコア656に対応する入力待ち行列654
上にパケットを配列する。遅いワーカーコア656は、パケットを確認して、JNI出力
待ち行列658上にパケットを配列する。JNIパケット受信器660は、JNIを介し
て待ち行列658からパケットを読み取り、送信元/宛先アドレスを分解し、rawソケ
ット644に書き込む。Linuxカーネル646は、未処理パケットを受信し、TCP
プロトコルに従って当該パケットを取り扱い、TCPソケット入力ストリームにペイロー
ドを追加する。パケットからのデータは、次に、BGPクライアント662の中のJav
a TCPソケットに対して配信される。
図28は、少なくともいくつかの実施形態において、ロードバランサ(LB)ノード処
理部650による発信BGP TCPパケットの処理を示す。BGPクライアント662
は、Linuxカーネル646のJava TCPソケットにデータを書き込む。Lin
uxカーネル646は、TCPプロトコルに従って、データを取り扱い、データをTCP
パケットに変換する。少なくともいくつかの実施形態において、TCPパケットは、12
7.x.x.x iptables規則に合致する。TCPパケットは、出力待ち行列6
48、例えば、Netfilter LOCAL_OUTの待ち行列に配列される。JN
Iを介して待ち行列648を監視しているJNIパケット受信器670のJavaスレッ
ドは、TCPパケットを受信し、各NF_STOLENを印付けしてカーネル646がT
CPパケットに関して忘れるようにする。Javaスレッドは、送信元/宛先アドレスを
分解して、遅いワーカーコア656に対応するJNI入力待ち行列672にパケットをJ
NIを介して追加する。遅いワーカーコア656は、自分のJNI入力待ち行列672か
らTCPパケットを受信し、北向きNIC640の送信コア666に対応するアウトバウ
ンド待ち行列664上にパケットを配列する。送信コア666は、自分の入力待ち行列6
64からTCPパケットを読み取り、北向きNIC640にそれらを書き込む。TCPパ
ケットは、NIC640によってエッジルータに送信される。
分散型ロードバランサのシミュレーション及び試験
本明細書に記載されているロードバランサは、多数の独立した構成要素(例えば、ルー
タ、ロードバランサノード、ロードバランサモジュール等)の対話を要求する分散型シス
テムである。ノード障害、メッセージ欠落、及び遅延などのシナリオをシミュレーション
するためだけでなく、分散型の構成要素、ロジック、及びプロトコルの試験を実施するた
めに、複雑なネットワークトポロジ(例えば、生産ネットワーク)においてマルチホスト
に配備されるためのコードを必要とすることなく、対話が試験できるところで、単一のプ
ロセスにおいて動かせる分散型ロードバランサを可能にする試験システムの実施形態を説
明する。このことを達成するために、単一のプロセスにおいてまたは単一のプロセスとし
て多数のロードバランサの構成要素が構成され且つ実行されることを可能にするメッセー
ジバスと称されるソフトウェアのメカニズムを説明する。当該単一のプロセスは、単一の
ホストシステム上で実行される。メッセージバスのメカニズムは、例えば、単一のホスト
システム上で、同時に、ロードバランサの構成要素(例えば、ロードバランサノード及び
ロードバランサモジュール)が動いているように見える実際の生産ネットワーク上で、分
散型ロードバランサシステムが単一のプロセスとして試験されることを可能にする。
メッセージバスは、分散型ロードバランサが単一のプロセスとして動くことができるフ
レームワークを提供する。処理中の1以上のメッセージバスレイヤの各々は、分散型ロー
ドバランサの構成要素間のネットワーク(例えば、イーサネット(登録商標))のセグメ
ントをシミュレーションする。分散型ロードバランサシステムのソフトウェアの構成要素
は、メッセージバスの環境の範囲内で当該構成要素が動作できる特定の形態に書き込まれ
る必要はない。その代わりに、メッセージバスのフレームワークは、分散型ロードバラン
サシステムの構成要素が生産するパケットを中断する構成要素(メッセージバスNICま
たはパケットアダプタと称される)を提供して、実際の物理的なネットワークの中ではな
く、メッセージバスレイヤによって提供されたシミュレーションされたネットワークの中
にパケットを導き、目標の構成要素にパケットを配信する。メッセージバスレイヤは、構
成要素間の通信に対応するTCP/IPスタックを実装しない。その代わりに、メッセー
ジバスレイヤは、ホストシステムのオペレーションシステム(OS)と整合して、ホスト
システムのTCP/IPスタックを使用する。メッセージバスレイヤは、OSによって提
供されるTCP/IPスタックを活用して、メッセージバスが中断し且つ配信する個々の
パケットへ、またメッセージバスが中断し且つ配信する個々のパケットから、クライアン
ト及びサーバが期待するTCPストリームを変換する。
少なくともいくつかの実施形態において、ロードバランサの構成要素は、メッセージバ
スと整合するために、各々が有効なメディアアクセス制御(MAC)アドレスを有する少
なくとも1つのメッセージバス・ネットワーク・インターフェイス・コントローラ(NI
C)を備えており、各NICは、物理的なネットワークとの間ではなく、シミュレーショ
ンされたネットワーク環境におけるメッセージバスとの間でパケットを送信し且つパケッ
トを受信する。メッセージバスNICは、物理的なネットワークではなく、メッセージバ
スに取り付ける仮想のネットワーク・インターフェイス・コントローラである。メッセー
ジバスを介して通信することを必要とする各ロードバランサの構成要素は、少なくとも1
つのメッセージバスNICを要求する。メッセージバスNICは、メッセージバスに対す
るパイプラインの出口として及び構成要素に対するパイプラインの入口としての機能を果
たす。構成要素は、各メッセージバスNICに対する多数のメッセージバス・インターフ
ェイスをインスタンス化できる。
メッセージバス・ネットワーク・インターフェイスは、構成要素がメッセージバスNI
Cを介してメッセージバスに取り付けるためのメカニズムである。メッセージバス・ネッ
トワーク・インターフェイスは、Linux技術におけるインターフェイス構成(ifc
onfig)のインターフェイスと同義であるが、メッセージバス・ネットワーク・イン
ターフェイスが、物理的なネットワークに対してではなく、メッセージバスに対して取り
付けることが異なっている。メッセージバス・ネットワーク・インターフェイスは、IP
アドレスを有し、メッセージバスNICの上部に位置する。メッセージバス・ネットワー
ク・インターフェイスは、メッセージバスからのパケットを受信する構成要素によって使
用されることができるパケット送信元インターフェイス、及び、メッセージバスの中にパ
ケットを送信する構成要素によって使用されることができるパケットシンク・インターフ
ェイスを公開する。
各ロードバランサノードは、パケット送信元インターフェイス及びパケットシンク・イ
ンターフェイスの実装によって配信され且つ送信される個々のネットワーク・パケットを
処理する。これらのインターフェイスは、メッセージバス環境の中で動いている場合には
、レイヤ2のイーサネットヘッダを追加または削除する(カーネル・ネットワーク・スタ
ックによってこれが実行されると予想するロードバランサノードに対して)メッセージバ
ス・ネットワーク・インターフェイスによって実装される。図29に示されているような
生産環境において、パケット送信元インターフェイス及びパケットシンク・インターフェ
イスの実装は、実際のネットワーク・インターフェイス上でメッセージバスのパケットを
受信し且つ送信する。図30に示されているようなメッセージバス環境においては、パケ
ット送信元インターフェイス及びパケットシンク・インターフェイスの実装は、メッセー
ジバスレイヤまたは複数のレイヤからパケットを受信し且つそれに対してパケットを送信
する。
説明を簡単にするために、メッセージバスNIC及びメッセージバス・インターフェイ
スは、メッセージバスのパケットアダプタまたは単にパケットアダプタと総称する。図3
1及び32を参照されたい。
図29は、少なくともいくつかの実施形態において、生産環境における分散型ロードバ
ランサ700を備えた分散型ロードバランシングシステムを示す。ロードバランサ700
は、この記載では簡略化されている。ロードバランサ700は、当該ロードバランサ70
0を実装するデータセンターなどのネットワーク設定の境界ルータ702を介して、外部
ネットワーク740上のクライアント742に接続する。ロードバランサ700は、様々
なタイプの構成要素、すなわち少なくとも1つのエッジルータ704、2以上のロードバ
ランサ(LB)ノード710、各々が独立したサーバノード(図示せず)上に実装されて
いる2以上のロードバランサ(LB)モジュール732、ルータまたはスイッチなどのフ
ァブリック720を形成する1以上のネットワーキング構成要素、及び、少なくともいく
つかの実施形態における構成サービス722を備える。少なくともいくつかの実施形態に
おいて、ロードバランサ700の各構成要素は、汎用のラック収納型演算装置などの独立
した演算装置としてまたはその中に実装されている。
図30は、少なくともいくつかの実施形態において、単一のプロセスにおいてまたは単
一のプロセスとして多数の分散型ロードバランシングシステムの構成要素が構成され且つ
実行されることを可能にするメッセージバスのメカニズムを搭載した分散型ロードバラン
サ試験システム800を示す。図29に示されているロードバランサ700において、各
ロードバランサソフトウェアの構成要素は、独立した演算装置(例えば、ロードバランサ
ノード710上のロードバランサソフトウェア、及びサーバノード上のロードバランサモ
ジュール732)上でインストールされ且つ実行される。これらのロードバランサソフト
ウェアの構成要素が単一のプロセスにおいて実行できるようにするためには、ロードバラ
ンサソフトウェアの構成要素の内部及び外部のパケットが、物理的なネットワーク上で送
信され且つ受信される代わりに、メッセージバスのメカニズムを介して中断され且つルー
ティングされることができるように、ロードバランサソフトウェアの構成要素の各々(図
30におけるロードバランサ(LB)ノード810及びロードバランサ(LB)モジュー
ル832に示されている)は、当該構成要素のネットワーク接続性を要約するコードを有
する。
少なくともいくつかの実施形態の分散型ロードバランサ試験システム800において、
メッセージバスのメカニズムは、構成要素間の通信のためのTCPスタックを実装しない
。その代わりに、メッセージバスのメカニズムは、ホストシステムのオペレーティングシ
ステム(OS)に整合して、ホストシステムのTCPスタックを使用する。少なくともい
くつかの実施形態において、メッセージバスの機能は、IPテーブルを介してユーザレイ
ヤの下のホストシステムのOSのカーネル(例えば、Linuxカーネル)、カーネルの
機能と結び付く。メッセージバスの機能は、カーネルレベルでIPテーブルの中に留まり
、パケットを中断し、ルーティングのためにメッセージバスのプロセス内に渡す。
図30においてシミュレーションされたエッジルータ862及びシミュレーションされ
たファブリック864によって示されているように、物理的なネットワークの構成要素(
例えば、図29におけるエッジルータ704及びファブリック720)の機能は、ソフト
ウェアの中でシミュレーションされ、同様に、クライアント860、サーバ834、及び
構成サービス866もシミュレーションが可能である。しかしながら、少なくともいくつ
かの実施形態において、シミュレーションされたサーバ834でなく実際のものが分散型
ロードバランサ試験システム800において使用されることに留意されたい。図30にお
けるメッセージバスのレイヤ850は、物理的なネットワークのインフラに取って代わる
。したがって、ロードバランサのソフトウェアの構成要素(ロードバランサノード810
及びロードバランサモジュール832)は、ロードバランサ試験システム800において
動作するが、その一方で、これらのソフトウェアの構成要素は、図29に示されているよ
うな生産ネットワーク環境において実行しないことは意識していない。
いくつかの構成要素(例えば、シミュレーションされたルータ)は、ネットワークセグ
メントをシミュレーションする異なるメッセージバスレイヤ850に対してパケットを渡
すこと、且つ当該レイヤ850からパケットを受信するために、2つ以上のメッセージバ
スのレイヤ850に接続される。
分散型ロードバランシング試験システム800のメッセージバスレイヤ850に実装さ
れているメッセージバスのメカニズムは、ネットワークセグメントの「ワイヤー」をシミ
ュレーションする。少なくともいくつかの実施形態において、メッセージバスのメカニズ
ムは、構成要素のMACアドレスに基づいて、分散型ロードバランシング試験システム8
00における宛先の構成要素に対してパケットを配信する。したがって、各ロードバラン
サのソフトウェアの構成要素(ロードバランサノード810及びロードバランサモジュー
ル832)は、ロードバランサソフトウェアの構成要素が分散型ロードバランシング試験
システム800において、他の構成要素から自分に送信されたパケットを受信することが
できるように、メッセージバスのレイヤ850に対してMACアドレスを提供し、当該M
ACアドレスに接続される。
<メッセージバスのパケットアダプタ>
図31及び32は、少なくともいくつかの実施形態におけるメッセージバスのパケット
アダプタを示す。少なくともいくつかの実施形態において、各ロードバランサ(LB)ソ
フトウェアの構成要素は、PacketSource及びPacketSinkインター
フェイスの実装によって、配信され且つ送信される個々のネットワーク・パケットを処理
する。図31を参照すると、これらのインターフェイス(パケット送信元・インターフェ
イス862及びパケットシンク・インターフェイス864として示されている)は、分散
型ロードバランシングシステム800内で動いている場合には、メッセージバスレイヤ8
50と、カーネルのネットワークスタックによってこれが実行されることを予期する、ロ
ードバランサソフトウェアの構成要素870のためにレイヤ2のイーサネットヘッダを追
加または削除するロードバランサソフトウェアの構成要素870の間のパケットアダプタ
860に実装される。図29に示されているような生産環境においては、ロードバランサ
ソフトウェアの構成要素に対するPacketSourceインターフェイス及びPac
ketSinkインターフェイスの実装は、当該構成要素が実装される物理的な装置の実
際のネットワーク・インターフェイス上で、パケットを受信し且つ送信する。
図31を参照すると、少なくともいくつかの実施形態において、ロードバランサソフト
ウェアの構成要素870がパケットを送信する場合には、パケットシンク・インターフェ
イス864の送信パケット方法を呼び出す実行のスレッドは、パケットアダプタ860の
中において、及びメッセージバスレイヤ850の中においても、一連の機能を横断して、
その構成要素の入力待ち行列に対してパケットを追加することによって宛先の構成要素に
対して最終的にパケットを配信する。少なくともいくつかの実施形態において、ロードバ
ランサソフトウェアの構成要素870がパケットを受信する場合には、ロードバランサソ
フトウェアの構成要素870は、パケット送信元インターフェイス862の受信パケット
方法を呼び出して、自分の入力待ち行列からパケットを読み取る。少なくともいくつかの
実施形態において、メッセージバスのメカニズムは、自分自身のいかなる追加スレッドを
も要求することなく、パケットを配信する。
メッセージバスのパケットパイプライン
図32を参照すると、少なくともいくつかの実施形態において、パケット送信元インタ
ーフェイス862及びパケットシンク・インターフェイス864のメッセージバス850
側は、パケットパイプライン機能を提供する。ロードバランサソフトウェアの構成要素8
70がパケットシンク・インターフェイス864を介してパケットを送信した場合、パケ
ットは一連の段階(パケットパイプライン880)を横断した後に、メッセージバスのレ
イヤ850に到達する。これらの段階は、例えば、パケットを変更し、パケットを破棄し
、パケットを複製し、パケットを遅延させる。一旦パケットがパケットパイプライン88
0を横断し、メッセージバスのレイヤ850が、宛先の構成要素870を選択すると、パ
ケットは、宛先の構成要素870に関連する次の一連のパイプライン段階(パケットパイ
プライン882)も横断した後に、宛先の構成要素870の入力待ち行列に追加される。
例示的なプロバイダのネットワーク環境
このセクションでは、分散型ロードバランシング方法及び装置の実施形態が実装される
例示的なプロバイダ・ネットワーク環境について説明する。しかしながら、これらの例示
的なプロバイダ・ネットワーク環境に限定される意図ではない。
図33Aは、少なくともいくつかの実施形態において、例示的なプロバイダ・ネットワ
ーク環境を示す。プロバイダ・ネットワーク1900は、クライアントがアクセスするこ
と、購入すること、借り受けることを可能にするか、さもなければ、限定はされないが、
演算資源及び記憶資源を含み、プロバイダ・ネットワークまたは1以上のデータセンター
のネットワーク内の装置上に実装されている仮想化された資源インスタンス1912を得
ることを可能にする1以上の仮想化サービス1910を介して、資源の仮想化をクライア
ントに提供する。プライベートIPアドレス1916は資源インスタンス1912に関連
し、当該プライベートIPアドレスはプロバイダ・ネットワーク1900上の資源インス
タンス1912の内部ネットワークアドレスである。いくつかの実施形態において、プロ
バイダ・ネットワーク1900はまた、クライアントがプロバイダ1900から取得する
パブリックIPアドレス1914及び/またはパブリックIPアドレスの範囲(例えば、
インターネット・プロトコル・バージョン4(IPv4)またはインターネット・プロト
コル・バージョン6(IPv6)アドレス)を提供する。
従来、プロバイダ・ネットワーク1900は、仮想化サービス1910を介して、サー
ビス・プロバイダのクライアント(例えば、クライアントネットワーク1950Aを操作
するクライアント)が、クライアントに対して割り当てられる特定の資源インスタンス1
912でクライアントに対して割り当てられまたは割り振られる少なくともいくつかのパ
ブリックIPアドレス1914に動的に対応付けることを可能にする。プロバイダ・ネッ
トワーク1900はまた、クライアントに割り当てられて以前にマッピングされた1つの
仮想化演算資源インスタンス1912に対して、これもクライアントに割り当てられた他
の仮想化演算資源インスタンス1912に対して、パブリックIPアドレス1914にク
ライアントが再マッピングすることを可能にする。仮想化演算資源インスタンス1912
及びサービス・プロバイダによって提供されたパブリックIPアドレス1914を使用す
ると、クライアントネットワーク1950Aのオペレータなどのサービス・プロバイダの
クライアントは、例えば、クライアント専用アプリケーションを実装して、インターネッ
トなどの中間ネットワーク1940上で当該クライアントアプリケーションを提示する。
中間ネットワーク1940上の他のネットワークエンティティ1920は、その後、クラ
イアントネットワーク1950Aによって公開された宛先のパブリックIPアドレス19
14に対するトラフィックを生成し、そのトラフィックはサービス・プロバイダのデータ
センターにルーティングされ、データセンターにおいて、ネットワーク基板を介して、宛
先のパブリックIPアドレス1914に現在マッピングされている仮想化演算資源インス
タンス1912のプライベートIPアドレス1916に対してルーティングされる。同様
に、仮想化演算の資源インスタンス1912からの応答トラフィックは、ネットワーク基
板を介して、中間ネットワーク1940上でルーティングされて送信元エンティティ19
20に戻る。
本明細書で使用されているようなプライベートIPアドレスは、プロバイダ・ネットワ
ークにおける資源インスタンスの内部ネットワークアドレスのことを指す。プライベート
IPアドレスは、プロバイダ・ネットワーク内でのみルーティング可能である。プロバイ
ダ・ネットワークの外部で発生したネットワークトラフィックは、プライベートIPアド
レスには直接的にルーティングできないが、その代わりに、当該トラフィックは、資源イ
ンスタンスにマッピングされているパブリックIPアドレスを使用する。プロバイダ・ネ
ットワークは、ネットワーク装置またはネットワークアドレス変換(NAT)または同様
の機能を実現する専用装置を有し、パブリックIPアドレスからプライベートIPアドレ
スへのマッピング及びその逆を実行する。
本明細書で使用されているようなパブリックIPアドレスは、サービス・プロバイダま
たはクライアントのいずれかによって資源インスタンスに割り当てられたインターネット
のルーティング可能なネットワークアドレスである。パブリックIPアドレスにルーティ
ングされたトラフィックは、例えば、1対1のネットワークアドレス変換(NAT)を介
して変換され、資源インスタンスのそれぞれのプライベートIPアドレスに転送される。
いくつかのパブリックIPアドレスは、プロバイダ・ネットワークのインフラによって
特定の資源インスタンスに割り当てられ、これらのパブリックIPアドレスは、標準パブ
リックIPアドレスまたは単に標準IPアドレスと称される。少なくともいくつかの実施
形態において、資源インスタンスのプライベートIPアドレスに対する標準IPアドレス
のマッピングは、資源インスタンスのすべてのタイプについてデフォルトの起動構成であ
る。
少なくともいくつかのIPアドレスは、プロバイダ・ネットワーク1900のクライア
ントに対して割り振られ、またはこれらのクライアントによって取得され、次に、クライ
アントは、それらの割り振られたパブリックIPアドレスを当該クライアントに割り振ら
れた特定の資源インスタンスに割り当てる。これらのパブリックIPアドレスは、クライ
アントパブリックIPアドレスまたは単にクライアントIPアドレスと称される。標準I
Pアドレスの場合のように、プロバイダ・ネットワーク1900によって資源インスタン
スに割り当てられる代わりに、クライアントIPアドレスは、例えば、サービス・プロバ
イダによって提供されたAPIを介して、クライアントによって資源インスタンスに割り
当てられる。標準IPアドレスとは異なり、クライアントIPアドレスは、クライアント
のアカウントに割り当てられ、必要または要望に応じて、それぞれのクライアントによっ
て他の資源インスタンスに再マッピングされることが可能である。クライアントIPアド
レスは、クライアントのアカウントに関連するが、特定の資源インスタンスには関連せず
、クライアントは、クライアントがそれを開放することを選択するまではそのIPアドレ
スを制御する。従来の静的IPアドレスとは異なり、クライアントIPアドレスは、クラ
イアントのパブリックIPアドレスをクライアントのアカウントに関連する任意の資源イ
ンスタンスに再マッピングすることによって、クライアントが資源インスタンスまたはア
ベイラビリティゾーンの障害をマスクすることができるようにする。クライアントIPア
ドレスは、例えば、代替の資源インスタンスにクライアントIPアドレスを再マッピング
することによって、クライアントの資源インスタンスまたはソフトウェアに関わる問題に
ついて、クライアントが処理できるようにする。
図33Bは、図33Aに示されているような例示的なプロバイダ・ネットワーク環境に
おいて、分散型ロードバランサの実装を示す。プロバイダ・ネットワーク1900は、ク
ライアント1960に対して、サービス1910、例えば、仮想化記憶サービスを提供す
る。クライアント1960は、例えば、サービス1910に対応する1以上のAPIを介
して、サービス1910にアクセスして、プロバイダ・ネットワーク1900の生産ネッ
トワーク部分における多数のサーバノード1990上に実装された資源(例えば、記憶資
源または演算資源)の使用法を取得する。サーバノード1990の各々は、ローカルロー
ドバランサ(LB)モジュール1992だけでなく、ウェブサーバまたはアプリケーショ
ンサーバなどのサーバ(図示せず)を実装する。1以上の分散型ロードバランサ1980
は、境界ネットワークと生産ネットワークとの間のロードバランサレイヤの中に実装され
ている。境界ルータ1970は、インターネットなどの中間ネットワーク1940を介し
て、クライアント1960からのパケットフローの中のパケット(例えば、TCPパケッ
ト)を受信して、境界ネットワークを介して、分散型ロードバランサ1980のエッジル
ータに対してパケットを転送する。パケットは、分散型ロードバランサ1980のエッジ
ルータによって公開されたパブリックIPアドレスに向かう。各分散型ロードバランサ1
980のエッジルータは、それぞれの分散型ロードバランサ1980のロードバランサノ
ードの中にパケットフローを分散する。少なくともいくつかの実施形態において、入口ノ
ードとしての機能を果たす各ロードバランサノードは、同じパブリックIPアドレスをエ
ッジルータに広告し、エッジルータは、クライアント1960からのパケットフローを、
フロー単位ハッシュ化マルチパス・ルーティング技法、例えば、等価マルチパス(ECM
P)ハッシュ処理技法に従って、入口サーバの中に分散する。ロードバランサノードは、
本明細書に記載された接続プロトコルを使用して、パケットフローに対応する目標のサー
バノード1990を決定し、サーバとクライアント1960との間の接続を推進する。接
続が確立すると、入口ノードは、フローに関する受信されたパケットをカプセル化して、
生産ネットワーク上の目標のサーバノード1990に送信し、その一方で、フロー追跡部
ノードは、接続に関する状態を維持する。サーバノード1990上のロードバランサモジ
ュール1992は、サーバノード1960上のそれぞれのサーバが接続を受諾するかどう
かについて決定を下す。ロードバランサモジュールは、入口ノードからのパケットを受信
してデカプセル化して、サーバノード1990上のそれぞれのサーバに対して、デカプセ
ル化されたパケット(例えば、TCPパケット)を送信する。ロードバランサモジュール
1992はまた、パケットフローに対応する出口ノードとしてのロードバランサノードを
選択し、フローに関する発信パケットをカプセル化して、生産ネットワークを介して、選
択された出口ノードに対して送信する。出口ノードは、順に、パケットをデカプセル化し
て、それぞれのクライアント1960に対して配信する境界ネットワーク上でデカプセル
化されたパケットを送信する。
図34Aは、少なくともいくつかの実施形態において、分散型ロードバランサ及びサー
バノードの例示的な物理的なラック実装を示すが、これに限定される意図ではない。少な
くともいくつかの実施形態において、分散型ロードバランサの様々な構成要素は、汎用の
ラック収納型の演算装置上にまたはそれ自体として実装されている。ラック190は、各
々がロードバランサノード(LBノード110A〜110F)としての機能を果たしてい
る多数の演算装置、及び各々がサーバノード(サーバノード130A〜130L)として
の機能を果たしている多数の演算装置を含む。ラック190はまた、少なくとも1つのエ
ッジルータ104、ファブリック120を形成する1以上のラック収納型ネットワーク装
置(ルータ、スイッチ等)、及び1つ以上の他の構成要素180(他のネットワーク装置
、パッチパネル、電源、冷却システム、バス等)も備える。図33A及び33Bのプロバ
イダ・ネットワーク1900を実装するデータセンターやセンターなどのネットワーク1
00のインストールは、1以上のラック190を備える。
図34Bは、少なくともいくつかの実施形態において、分散型ロードバランサ及びサー
バノードの例示的な物理的なラック実装を示すが、これに限定される意図ではない。図3
4Bは、スロット収納型演算装置として、例えば、ブレードサーバがラック190内に実
装されているLBノード110及びサーバノード130を示す。
図35は、少なくともいくつかの実施形態において例示的なネットワーキング環境を示
しており、そこでは、別個に実装されたサーバノードを有する1、2または3以上の分散
型ロードバランサがネットワークに実装されている。この実施例においては、2つの分散
型ロードバランサ1980A及び1980Bが示されている。分散型ロードバランサ19
80の各々は、境界ネットワークを介して、クライアント1960からのパケットフロー
を受信し、本明細書に記載されたロードバランシング方法を実行して、多数のサーバノー
ド1990の中にパケットを分散する。いくつかの実装において、各分散型ロードバラン
サ1980は、サーバノードがロードバランサラックの中にインストールされていないこ
とを除けば、図34A及び34Bに示されているラック190と同様にラック実装である
。サーバノード1990は、データセンター内において、1以上の独立したラックにイン
ストールされたブレードサーバなどのラック収納型演算装置である。いくつかの実装にお
いて、サーバノード1990は、異なる1以上のロードバランサ1980によって対応さ
れる各サービスを含め、プロバイダ・ネットワークによって提供される異なる2以上のサ
ービスを実施する。
例示的なシステム
少なくともいくつかの実施形態において、本明細書に記載されているような分散型ロー
ドバランシング方法及び装置の一部または全部を実行するサーバは、図36に示されてい
るコンピュータシステム2000のような、コンピュータアクセス可能な1以上の媒体を
有するか、またはそれにアクセスする構成の汎用のコンピュータシステムを備える。例示
された実施形態において、コンピュータシステム2000は、入出力(I/O)インター
フェイス2030を介して、システムメモリ2020に接続された1以上のプロセッサ2
010を備える。コンピュータシステム2000は、さらに、入出力インターフェイス2
030に接続されたネットワーク・インターフェイス2040を備えている。
様々な実施形態において、コンピュータシステム2000は、1つのプロセッサ201
0を有するユニプロセッサシステム、または数個(例えば、2、4、8、または他の適切
な数)のプロセッサ2010を有するマルチプロセッサシステムである。プロセッサ20
10は、命令を実行することができる任意の適切なプロセッサである。例えば、様々な実
施形態において、プロセッサ2010は、汎用のプロセッサ、または任意の様々な命令セ
ットアーキテクチャ(ISA)、例えば、x86、PowerPC、SPARC、または
MIPSISA若しくは任意の他の適切なISAを実装している内臓型プロセッサである
。マルチプロセッサシステムにおいて、プロセッサ2010の各々は、必須でないが、同
じISAを一般に実装する。
システムメモリ2020は、プロセッサ2010によってアクセス可能な命令及びデー
タを記憶するように構成されている。様々な実施形態において、システムメモリ2020
は、スタティックRAM(SRAM)、シンクロナスDRAM(SDRAM)、不揮発性
/フラッシュタイプのメモリ、または任意の他のタイプのメモリなどの任意の適切なメモ
リ技術を使用して実装される。例示された実施形態において、分散型ロードバランシング
方法及び装置について上記した方法、技法、及びデータなどの以上の所望の機能を実施す
るプログラム命令及びデータは、システムメモリ2020内に示されるようにコード20
24及びデータ2026として記憶されている。
1つの実施形態において、入出力インターフェイス2030は、プロセッサ2010、
システムメモリ2020、及びネットワーク・インターフェイス2040または他の周辺
インターフェイスを含む装置内の任意の周辺装置の間で、入出力トラフィックを調整する
構成になっている。いくつかの実施形態において、入出力インターフェイス2030は、
任意の必要なプロトコル、タイミング、または他のデータ変換を実行して、1つの構成要
素(例えば、システムメモリ2020)からのデータ信号を他の構成要素(例えば、プロ
セッサ2010)での使用のために適切な形式に変換する。いくつかの実施形態において
、入出力インターフェイス2030は、例えば、周辺構成要素相互接続(PCI)バス標
準またはユニバーサルシリアルバス(USB)標準の変形などの様々なタイプの周辺バス
を介して接続される装置のためのサポートを含む。いくつかの実施形態において、入出力
インターフェイス2030の機能は、例えば、ノースブリッジ及びサウスブリッジなどの
2以上の独立した構成要素に分かれる。また、いくつかの実施形態において、入出力イン
ターフェイス2030のいくつかまたはすべての機能は、システムメモリ2020に対す
るインターフェイスなどのように、プロセッサ2010の中に直接組み込まれている。
ネットワーク・インターフェイス2040は、コンピュータシステム2000と、1つ
のネットワークまたはネットワーク2050に接続された他の装置2060、例えば、図
1ないし図35に例示されているような他のコンピュータシステムまたは装置との間で、
データが交換され得るように構成されている。様々な実施形態において、ネットワーク・
インターフェイス2040は、例えば、イーサネットネットワークのタイプなどの、任意
の適切な有線または無線の一般的なデータネットワークを介して、通信をサポートする。
さらに、ネットワーク・インターフェイス2040は、アナログ音声ネットワークまたは
デジタルファイバ通信ネットワークなどの電気通信/電話通信ネットワークを介して、フ
ァイバチャネルSANなどのストレージエリア・ネットワークを介して、または、任意の
他の適切なタイプのネットワーク及び/またはプロトコルを介して、通信をサポートする
少なくともいくつかの実施形態において、システムメモリ2020は、分散型ロードバ
ランシングシステムの実施形態を実装するために、図1ないし35について上記したよう
に、プログラム命令及びデータを記憶するように構成されたコンピュータ読み取り可能な
媒体の1つの実施形態である。しかしながら、他の実施形態においては、プログラム命令
及び/またはデータは、異なるタイプのコンピュータ読み取り可能な媒体上で、受信され
、送信され、または記憶される。一般に、コンピュータ読み取り可能な媒体は、非一時的
記憶媒体、またはメモリ媒体、例えば、入出力インターフェイス2030を介してコンピ
ュータシステム2000に接続された、ディスクまたはDVD/CDの磁気または光媒体
などを含む。非一時的なコンピュータ読み取り可能な媒体はまた、RAM(例えば、SD
RAM、DDR SDRAM、RDRAM、SRAM等)、ROMなどのような、任意の
揮発性または不揮発性の媒体を含み、システムメモリ2020または他のタイプのメモリ
として、コンピュータシステム2000のいくつかの実施形態に含まれている。さらに、
コンピュータアクセス可能な媒体は、伝送媒体、またはネットワーク及び/または無線リ
ンクなどの通信媒体を介して伝送される電気信号、電磁気信号、またはデジタル信号など
の信号を有し、例えば、ネットワーク・インターフェイス2040を介して実装される。
開示された実施形態は、以下の条項の観点で記載されることができる。
1.分散型ロードバランサシステムであって、
複数のロードバランサノード、及び
各々がサーバ及びロードバランサモジュールを有する複数のサーバノードを備え、その
中で、
前記複数のロードバランサノードは、1以上のクライアントからのパケットフローを前
記複数のサーバノードの中に分散し、前記複数のサーバノードの中に分散するように構成
され、
前記複数のロードバランサノードは、前記複数のサーバノードの中からサーバノードを
選択し、前記パケットフローについての接続要求を前記クライアントから受信し、且つ、
前記接続要求を前記選択されたサーバノードに対して送信するように構成され、
各サーバノード上の前記ロードバランサモジュールは、前記複数のロードバランサノー
ドの1つからのパケットフローについての接続要求を受信し、前記接続が前記サーバノー
ド上の前記サーバによって受諾されるかどうかを判定し、前記サーバが前記接続を受諾で
きない場合には、前記接続要求を拒絶し、且つ、前記サーバが前記接続を受諾できる場合
には、前記複数のロードバランサノードと協働して、前記それぞれのクライアントと前記
それぞれのサーバとの間のパケットフローについての接続を確立するように構成されてい
る、
前記分散型ロードバランサシステム。
2.条項1に記載された分散型ロードバランサシステムは、さらに、ハッシュ化マルチ
パス・ルーティング技法に従って、前記1以上のクライアントからの前記パケットフロー
を前記複数のロードバランサノードの中に分散するように構成されたルータをさらに備え
る、
前記分散型ロードバランサシステム。
3.条項1に記載された分散型ロードバランサシステムは、その中で、前記サーバノー
ド上の前記サーバによって前記接続が受諾されるかどうかを判定するために、前記ロード
バランサモジュールが、前記サーバノード上の前記サーバの1以上の現在の資源使用量の
メトリクスを分析して、前記接続を前記サーバが受諾できるかどうかを判定するように構
成され、その中で、前記1以上の現在の資源の使用量のメトリクスが、1以上のCPUの
使用、帯域幅の使用量、サーバ待ち時間、及び確立された接続数を含む、
前記分散型ロードバランサシステム。
4.条項1に記載された分散型ロードバランサシステムは、その中で、前記複数のロー
ドバランサノードが、さらに、前記接続要求を受信するため前記複数のサーバノードの中
から、ランダムな選択技法に従って前記サーバノードを選択するように構成されている、
前記分散型ロードバランサシステム。
5.条項1に記載された分散型ロードバランサシステムは、その中で、前記複数のロー
ドバランサノードが、さらに、拒絶された接続要求を受信するために前記複数のサーバノ
ードの中から、他のサーバノードを選択し、前記接続要求を前記他のサーバノードに対し
て送信するように構成されている、
前記分散型ロードバランサシステム。
6.条項1に記載された分散型ロードバランサシステムは、その中で、各パケットフロ
ーが伝送制御プロトコル(TCP)パケットフローであり、またその中で、クライアント
とサーバとの間に確立された各接続がTCP接続である、
前記分散型ロードバランサシステム。
7.条項1に記載された分散型ロードバランサシステムは、その中で、クライアントと
サーバとの間で確立された各接続が、前記クライアントに始まり、前記複数のロードバラ
ンサノードの1以上の中を通って、前記サーバによって終端される、
前記分散型ロードバランサシステム。
8.方法であって、
クライアントに対するパケットフローにおけるパケットを受信すること、及び
前記パケットフローについての接続要求を複数のサーバノードの中から選択されたサー
バノードに対して送信することを、
1以上の複数のロードバランサノードによって実行し、
前記サーバノード上のサーバが前記接続を受諾できるかまたはできないかどうかを判定
すること、
前記サーバが前記接続を受諾できないと判定したときは前記接続要求を拒絶すること、
及び
前記サーバが前記接続を受諾できると判定したときは前記接続要求を受諾することを、
前記選択されたサーバノードによって実行する、
前記方法。
9.条項8に記載された方法は、その中で、前記接続要求を受諾することが、前記選択
されたサーバノードと前記1以上のロードバランサノードとが協働して前記パケットフロ
ーについて前記それぞれのクライアントと前記それぞれのサーバとの間で接続を確立する
ことを含む、
前記方法。
10.条項9に記載された方法は、その中で、前記パケットフローが伝送制御プロトコ
ル(TCP)パケットフローであり、またその中で、前記クライアントと前記サーバとの
間で確立された接続がTCP接続である、
前記方法。
11.条項9に記載された方法は、その中で、前記確立された接続がクライアントに始
まり、前記複数のロードバランサノードの1つの中を通って、前記サーバによって終端さ
れる、
前記方法。
12.条項8に記載された方法は、その中で、1以上のクライアントからのパケットフ
ローをハッシュ化マルチパス・ルーティング技法に従って前記複数のロードバランサノー
ドの中に分散するルータから前記パケットが受信される、
前記方法。
13.条項8に記載された方法は、その中で、前記サーバノード上のサーバが前記接続
を受諾できるかまたはできないかどうかを前記判定することが、前記サーバの1以上の現
在の資源使用量のメトリクスを分析して前記接続を受諾できるかどうかを判定することを
含む、
前記方法。
14.条項8に記載された方法は、前記1以上のロードバランサノードが、ランダム選
択技法に従って、前記複数のサーバノードの中からサーバノードを選択することをさらに
含む、
前記方法。
15.条項8に記載された方法は、前記選択されたサーバノードが前記接続要求を拒絶
した場合に、前記1以上のロードバランサノードが、前記複数のサーバノードの中から選
択された他のサーバノードに対して前記接続要求を送信することをさらに含む、
前記方法。
16.複数のサーバノードの各々の上にロードバランサモジュールを実装するためにコ
ンピュータが実行可能なプログラム命令を記憶するコンピュータ読み取り可能な非一時的
記憶媒体であって、各ロードバランサモジュールが、
クライアントからのパケットフローについての接続要求を複数のロードバランサノードの
1つから受信し、
前記サーバノード上のサーバが前記接続を受諾できるかまたはできないかどうかを判定
し、
前記サーバが前記接続を受諾できないと判定したときは前記接続要求を拒絶し、及び
前記サーバが前記接続を受諾できると判定したときは前記ロードバランサノードと前記
サーバとが通信して、前記クライアントと前記サーバとの間に接続を確立する、
ように動作可能である、
前記コンピュータ読み取り可能な非一時的媒体。
17.条項16に記載された非一時的なコンピュータ読み取り可能な記憶媒体は、その
中で、前記サーバノード上のサーバが前記接続を受諾できるかまたはできないかどうかを
判定するために、前記ロードバランサモジュールが、前記サーバの1以上の現在の資源使
用量のメトリクスを分析して、前記サーバが前記接続を受諾できるかどうかを決定するこ
とを実行できる前記コンピュータ読み取り可能な非一時的媒体。
18.条項17に記載された非一時的なコンピュータ読み取り可能な記憶媒体は、その
中で、前記1以上の現在の資源使用量のメトリクスが、1以上のCPUの使用、帯域幅の
使用量、サーバ待ち時間、及び確立された接続数を含む、
前記コンピュー読み取り可能な非一時的記憶媒体。
19.条項16に記載されたコンピュータ読み取り可能な非一時的記憶媒体は、その中
で、前記プログラム命令は、さらに、前記接続要求を受信するために前記複数のサーバノ
ードの中からサーバノードをランダムに選択する前記ロードバランサモジュールを実現す
るようにコンピュータが実行できる、
前記非一時的なコンピュータ読み取り可能な記憶媒体。
20.条項16に記載されたコンピュータ読み取り可能な非一時的記憶媒体は、その中
で、前記接続要求を拒絶するために、前記接続要求の中の生存時間(TTL)カウンタを
減じて、前記接続要求を前記ロードバランサノードに対して返送するように前記ロードバ
ランサモジュールが動作でき、その中で、 前記プログラム命令は、さらに、前記ロード
バランサノードが、
前記返送された接続要求の中の前記TTLカウンタを検査し、
前記TTLカウンタが閾値を超えている場合には、前記接続要求を受信するために前記
複数のサーバノードの中から他のサーバノードを選択し、及び
前記TTLカウンタが前記閾値以下である場合には、前記接続要求を廃棄することを実
現するようにコンピュータを実行可能にする、
前記コンピュータ読み取り可能な非一時的記憶媒体。
結論
様々な実施形態は、さらに、上記の説明に従って、コンピュータ読み取り可能な媒体に
実装される受信処理、送信処理、または記憶処理の命令及び/またはデータを有する。一
般に、コンピュータ読み取り可能な媒体は、磁気媒体または光媒体などの記録媒体または
メモリ媒体、例えば、ディスクまたはDVD/CD−ROM、RAM(例えば、SDRA
M、DDR、RDRAM、SRAM等)、ROM等の揮発性の媒体または不揮発性の媒体
を含むが、それと同様に、電気信号、電磁気信号、またはデジタル信号などのように、ネ
ットワーク及び/または無線リンクなどの通信媒体を介して運ばれる伝送媒体または信号
も含む。
図面及び本明細書に記載しているような様々な方法は、例示的な方法の実施形態を表わ
す。その方法は、ソフトウェア、ハードウェア、またはそれらの組み合わせの中に実装さ
れている。方法の順序は変えることができ、様々な要素は、追加され、再配列され、組み
合わされ、削除され、修正される等が可能である。
様々な修正及び変更は、本開示の利益を享受する当業者にとって明らかなようになされ
るだろう。このような修正及び変更のすべてを包含することは意図されることであり、し
たがって、上記記載は制限的な意味ではなく例示的な意味に見なされるべきである。

Claims (12)

  1. 分散型ロードバランサシステムであって、
    各々がサーバ及びロードバランサモジュールを備える複数のサーバノード、及び
    1以上のクライアントからのパケットフローを前記複数のサーバノードの中に分散するように構成される複数のロードバランサノードと、
    を備え、
    前記複数のロードバランサノードのうちの1以上のロードバランサノードは、
    前記クライアントのうちの1つからのパケットフローのための同期パケットを受信し、
    前記複数のサーバノードの中から前記パケットフローのためのサーバノードを選択し、
    前記パケットフローに対する接続要求を生成し、
    前記接続要求を、前記選択された前記サーバノード上の前記ロードバランサモジュールに送信する、
    ように構成され、
    前記選択された前記サーバノード上の前記ロードバランサモジュールは、
    前記接続要求を、前記複数のロードバランサノードのうちの1つから受信し、
    前記パケットフローに対する接続が前記サーバノード上の前記サーバによって受諾されるかどうかを、前記サーバの1以上の現在の資源使用量のメトリクスの分析に少なくとも部分的に基づいて判定し、前記1以上の現在の資源使用量のメトリクスは、1以上のCPUの使用、帯域幅の使用量、サーバ待ち時間、及び確率された接続数を含み、
    前記サーバが前記接続を受諾できない場合は、前記ロードバランサノードに前記接続が拒絶されたことを示すメッセージを送信し、
    前記サーバが前記接続を受諾できる場合には、
    前記接続要求のための同期パケットを生成し、
    前記同期パケットを前記サーバノード上の前記サーバに送信し、
    前記サーバノード上の前記サーバからの確認パケットを中断し、
    前記ロードバランサノードに、前記接続が受諾されたことを示すメッセージを送信する、
    ように構成される、分散型ロードバランサシステム。
  2. 前記接続が受諾された後、前記ロードバランサモジュールはさらに、
    前記接続に対する発信トラフィックを受信するための出口サーバとして動作する、前記複数のロードバランサノードのうちの1つを選択し、
    前記接続におけるカプセル化された着信IPパケットを前記接続のための入口サーバとして動作する前記複数のロードバランサノードのうちの1つから受信し、前記着信IPパケットをデカプセル化し、前記デカプセル化した前記着信IPパケットを前記サーバに送信し、
    前記サーバからの前記接続における発信IPパケットを中断し、前記発信IPパケットをカプセル化し、前記カプセル化されたIPパケットを前記選択された前記出口サーバへ送信する、
    ように構成される、請求項1に記載の分散型ロードバランサシステム。
  3. 前記接続要求から前記ロードバランサモジュールによって生成された前記同期パケットの送信元IPアドレスは前記クライアントのIPアドレスである、請求項1に記載の分散型ロードバランサシステム。
  4. 前記1以上のロードバランサノードはさらに、
    前記ロードバランサモジュールから前記接続が受諾されたことを示す前記メッセージを受信する前に、前記クライアントからの前記パケットフローで受信された1以上のIPパケットをバッファリングし、
    前記ロードバランサモジュールから前記接続が受諾されたことを示す前記メッセージを受信した後に、前記バッファリングされた前記1以上のIPパケットをカプセル化し、前記カプセル化されたIPパケットを前記ロードバランサモジュールへ転送する、
    ように構成される、請求項1に記載の分散型ロードバランサシステム。
  5. 前記ロードバランサノードに前記接続が拒絶されたことを示すメッセージを送信するために、前記ロードバランサモジュールは、前記接続要求の中の生存時間(TTL)カウンタを減じて、前記接続要求を前記ロードバランサノードに対して返送するように構成され、前記ロードバランサノードは、
    前記返送された接続要求の中の前記TTLカウンタを検査し、
    前記TTLカウンタが閾値を超えている場合には、前記複数のサーバノードの中から他のサーバノードを選択し、前記接続要求を前記他のサーバノードに送信し、
    前記TTLカウンタが前記閾値以下である場合には、前記接続要求を廃棄する
    ように構成されている、請求項1に記載の分散型ロードバランサシステム。
  6. ハッシュ化マルチパス・ルーティング技法に従って、前記1以上のクライアントからの前記パケットフローを前記複数のロードバランサノードの中に分散するように構成されたルータをさらに備える、請求項1に記載の分散型ロードバランサシステム。
  7. 複数のロードバランサノードのうちの1以上のロードバランサノードによって、
    クライアントに対するパケットフローにおけるパケットを受信すること、及び
    前記パケットフローについての接続要求を複数のサーバノードの中から選択されたサーバノードに対して送信すること、
    を実行し、
    前記選択されたサーバノード上のロードバランサモジュールによって、
    前記複数のロードバランサモジュールのうちの1つから前記接続要求を受信し、
    それぞれの前記パケットフローに対する接続が前記サーバノード上のサーバによって受諾されるか否かを、前記サーバの1以上の現在の資源使用量のメトリクスの分析に少なくとも部分的に基づいて判定し、前記1以上の現在の資源使用量のメトリクスは、1以上のCPUの使用、帯域幅の使用量、サーバ待ち時間、及び確率された接続数を含み、
    前記サーバが前記接続を受諾できない場合は、前記ロードバランサノードに前記接続が拒絶されたことを示すメッセージを送信し、
    前記サーバが前記接続を受諾できる場合には、
    前記接続要求のための同期パケットを前記サーバノード上の前記サーバに送信し、
    前記サーバノード上の前記サーバからの確認パケットを中断し、
    前記ロードバランサノードに、前記接続が受諾されたことを示すメッセージを送信する、
    ことを実行することを備える方法。
  8. 前記接続が受諾された後、前記選択されたサーバノード上の前記ロードバランサモジュールによって、
    前記接続に対する発信トラフィックを受信するための出口サーバとして動作する、前記複数のロードバランサノードのうちの1つを選択し、
    前記接続におけるカプセル化された着信IPパケットを前記接続のための入口サーバとして動作する前記複数のロードバランサノードのうちの1つから受信し、前記着信IPパケットをデカプセル化し、前記デカプセル化した前記着信IPパケットを前記サーバに送信し、
    前記サーバからの前記接続における発信IPパケットを中断し、前記発信IPパケットをカプセル化し、前記カプセル化されたIPパケットを前記選択された前記出口サーバへ送信する、
    ことをさらに実行することを備える、請求項に記載の方法。
  9. 前記サーバに送信された前記同期パケットの送信元IPアドレスは前記クライアントのIPアドレスである、請求項に記載の方法。
  10. 前記1以上のロードバランサノードによって、
    前記ロードバランサモジュールから前記接続が受諾されたことを示す前記メッセージを受信する前に、前記クライアントからの前記パケットフローで受信された1以上のIPパケットをバッファリングし、
    前記ロードバランサモジュールから前記接続が受諾されたことを示す前記メッセージを受信した後に、前記バッファリングされた前記1以上のIPパケットをカプセル化し、前記カプセル化されたIPパケットを前記ロードバランサモジュールへ転送する、
    ことをさらに実行することを備える、請求項に記載の方法。
  11. 接続が前記サーバノード上のサーバによって受諾されるか否かを前記判定することが、
    前記サーバのための資源の利用率を前記1以上の現在の資源使用量から判定し、
    前記資源の利用率を2以上の利用のレベルと比較し、
    前記接続が前記2以上の利用のレベルにおいて異なる確率で拒絶される、
    ことを備える、請求項に記載の方法。
  12. 前記接続が拒絶されたことを示す前記メッセージに応答して、前記1以上のロードバランサノードが前記接続要求を前記複数のサーバノードの中から選択された他のサーバノードに送信することをさらに備える、請求項に記載の方法。
JP2017112933A 2013-04-16 2017-06-07 分散型ロードバランサ Active JP6445621B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/864,167 2013-04-16
US13/864,167 US10069903B2 (en) 2013-04-16 2013-04-16 Distributed load balancer

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016509084A Division JP6194100B2 (ja) 2013-04-16 2014-04-16 分散型ロードバランサ

Publications (2)

Publication Number Publication Date
JP2017184272A JP2017184272A (ja) 2017-10-05
JP6445621B2 true JP6445621B2 (ja) 2018-12-26

Family

ID=51687576

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016509084A Active JP6194100B2 (ja) 2013-04-16 2014-04-16 分散型ロードバランサ
JP2017112933A Active JP6445621B2 (ja) 2013-04-16 2017-06-07 分散型ロードバランサ

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2016509084A Active JP6194100B2 (ja) 2013-04-16 2014-04-16 分散型ロードバランサ

Country Status (10)

Country Link
US (2) US10069903B2 (ja)
EP (2) EP3651440B1 (ja)
JP (2) JP6194100B2 (ja)
KR (2) KR101790315B1 (ja)
CN (2) CN110166568B (ja)
AU (1) AU2016277754B2 (ja)
BR (1) BR112015026342B1 (ja)
CA (1) CA2909621C (ja)
SG (1) SG11201508556RA (ja)
WO (1) WO2014172500A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11895182B1 (en) 2023-01-23 2024-02-06 Bank Of America Corporation Systems, methods, and apparatuses for dynamically determining data center transmissions by implementing load balancers in an electronic network

Families Citing this family (167)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8560634B2 (en) * 2007-10-17 2013-10-15 Dispersive Networks, Inc. Apparatus, systems and methods utilizing dispersive networking
ES2639643T3 (es) 2010-06-23 2017-10-27 Telefonaktiebolaget Lm Ericsson (Publ) Gestión de interferencias de señales de referencia en despliegues de redes heterogéneas
US9736065B2 (en) 2011-06-24 2017-08-15 Cisco Technology, Inc. Level of hierarchy in MST for traffic localization and load balancing
US8908698B2 (en) 2012-01-13 2014-12-09 Cisco Technology, Inc. System and method for managing site-to-site VPNs of a cloud managed network
EP2747386A1 (en) * 2012-12-20 2014-06-25 Telefonica S.A. Method and System for the creation, modification and removal of a distributed virtual customer premises equipment
JP6182861B2 (ja) * 2012-12-28 2017-08-23 富士通株式会社 情報処理装置、情報処理端末、情報検索プログラム及び情報検索方法
US10069903B2 (en) 2013-04-16 2018-09-04 Amazon Technologies, Inc. Distributed load balancer
CN104144120A (zh) * 2013-05-07 2014-11-12 杭州华三通信技术有限公司 转发信息配置方法及装置
US9225638B2 (en) 2013-05-09 2015-12-29 Vmware, Inc. Method and system for service switching using service tags
US9391919B2 (en) 2013-08-14 2016-07-12 International Business Machines Corporation Adaptive algorithm for cloud admission policies
US9843540B2 (en) 2013-08-26 2017-12-12 Vmware, Inc. Traffic and load aware dynamic queue management
US9348602B1 (en) 2013-09-03 2016-05-24 Amazon Technologies, Inc. Resource allocation for staged execution pipelining
US20150081400A1 (en) * 2013-09-19 2015-03-19 Infosys Limited Watching ARM
US9379982B1 (en) * 2013-09-30 2016-06-28 Juniper Networks, Inc. Adaptive stateless load balancing
US10063458B2 (en) 2013-10-13 2018-08-28 Nicira, Inc. Asymmetric connection with external networks
CN104811396A (zh) * 2014-01-23 2015-07-29 中兴通讯股份有限公司 一种负荷均衡的方法及系统
US9602424B1 (en) * 2014-03-31 2017-03-21 Amazon Technologies, Inc. Connection balancing using attempt counts at distributed storage systems
US10021028B2 (en) * 2014-06-16 2018-07-10 International Business Machines Corporation Controlling incoming traffic
US10122605B2 (en) 2014-07-09 2018-11-06 Cisco Technology, Inc Annotation of network activity through different phases of execution
DE102014109906B4 (de) * 2014-07-15 2016-03-03 Fujitsu Technology Solutions Intellectual Property Gmbh Verfahren zum Freischalten externer Computersysteme in einer Computernetz-Infrastruktur, verteiltes Rechnernetz mit einer solchen Computernetz-Infrastruktur sowie Computerprogramm-Produkt
US10123232B2 (en) 2014-07-22 2018-11-06 Parallel Wireless, Inc. Signaling storm reduction from radio networks
US11159980B2 (en) 2014-07-22 2021-10-26 Parallel Wireless, Inc. Signaling storm reduction from radio networks
US9755898B2 (en) 2014-09-30 2017-09-05 Nicira, Inc. Elastically managing a service node group
US10257095B2 (en) 2014-09-30 2019-04-09 Nicira, Inc. Dynamically adjusting load balancing
US10225137B2 (en) 2014-09-30 2019-03-05 Nicira, Inc. Service node selection by an inline service switch
US9876714B2 (en) 2014-11-14 2018-01-23 Nicira, Inc. Stateful services on stateless clustered edge
US9866473B2 (en) 2014-11-14 2018-01-09 Nicira, Inc. Stateful services on stateless clustered edge
US11533255B2 (en) * 2014-11-14 2022-12-20 Nicira, Inc. Stateful services on stateless clustered edge
US10044617B2 (en) 2014-11-14 2018-08-07 Nicira, Inc. Stateful services on stateless clustered edge
US9485310B1 (en) * 2014-12-23 2016-11-01 EMC IP Holding Company LLC Multi-core storage processor assigning other cores to process requests of core-affined streams
US9690576B2 (en) * 2015-02-11 2017-06-27 Dell Software, Inc. Selective data collection using a management system
US20160255013A1 (en) * 2015-02-27 2016-09-01 Ixia Dynamic Resource Management For Load Balancing In Network Packet Communication Systems
US9985875B1 (en) 2015-03-31 2018-05-29 Juniper Networks, Inc. Route signalling based resilient application overlay network
US10250562B1 (en) 2015-03-31 2019-04-02 Juniper Networks, Inc. Route signaling driven service management
US10609091B2 (en) 2015-04-03 2020-03-31 Nicira, Inc. Method, apparatus, and system for implementing a content switch
US20160301575A1 (en) * 2015-04-07 2016-10-13 Quanta Computer Inc. Set up and verification of cabling connections in a network
US10476982B2 (en) 2015-05-15 2019-11-12 Cisco Technology, Inc. Multi-datacenter message queue
US10034201B2 (en) * 2015-07-09 2018-07-24 Cisco Technology, Inc. Stateless load-balancing across multiple tunnels
US20170032300A1 (en) * 2015-07-31 2017-02-02 International Business Machines Corporation Dynamic selection of resources on which an action is performed
US9900377B2 (en) * 2015-08-07 2018-02-20 International Business Machines Corporation Dynamic healthchecking load balancing gateway
US10169172B2 (en) * 2015-08-11 2019-01-01 International Business Machines Corporation Passive detection of live systems during controller failover in distributed environments
US9942153B2 (en) * 2015-08-14 2018-04-10 Dell Products L.P. Multiple persistant load balancer system
BR112018002477A2 (pt) 2015-09-25 2018-09-18 Deutsche Telekom Ag método para manipulação melhorada de pelo menos uma troca de comunicação entre uma rede de telecomunicações e pelo menos um equipamento de usuário, rede de elecomunicações, equipamento de usuário, sistema, programa e produto de programa de computador
US10666574B2 (en) 2015-09-28 2020-05-26 Amazon Technologies, Inc. Distributed stream-based database triggers
US10623319B1 (en) 2015-09-28 2020-04-14 Amazon Technologies, Inc. Load rebalancing in a network-based system
US10033645B2 (en) * 2015-09-29 2018-07-24 Dell Products L.P. Programmable data plane hardware load balancing system
US10205677B2 (en) 2015-11-24 2019-02-12 Cisco Technology, Inc. Cloud resource placement optimization and migration execution in federated clouds
US10296394B2 (en) * 2015-12-04 2019-05-21 Nec Corporation Consistent hashing
US10084703B2 (en) 2015-12-04 2018-09-25 Cisco Technology, Inc. Infrastructure-exclusive service forwarding
US10367914B2 (en) 2016-01-12 2019-07-30 Cisco Technology, Inc. Attaching service level agreements to application containers and enabling service assurance
US20170214627A1 (en) * 2016-01-21 2017-07-27 Futurewei Technologies, Inc. Distributed Load Balancing for Network Service Function Chaining
JP6126259B1 (ja) * 2016-02-25 2017-05-10 日本電信電話株式会社 監視装置、監視方法、及びプログラム
US10291706B1 (en) * 2016-03-24 2019-05-14 EMC IP Holding Company LLC Container image distribution acceleration
US10432709B2 (en) * 2016-03-28 2019-10-01 Industrial Technology Research Institute Load balancing method, load balancing system, load balancing device and topology reduction method
US10574741B2 (en) 2016-04-18 2020-02-25 Nokia Technologies Oy Multi-level load balancing
US10432532B2 (en) 2016-07-12 2019-10-01 Cisco Technology, Inc. Dynamically pinning micro-service to uplink port
US10382597B2 (en) 2016-07-20 2019-08-13 Cisco Technology, Inc. System and method for transport-layer level identification and isolation of container traffic
US10567344B2 (en) 2016-08-23 2020-02-18 Cisco Technology, Inc. Automatic firewall configuration based on aggregated cloud managed information
US10938668B1 (en) * 2016-09-30 2021-03-02 Amazon Technologies, Inc. Safe deployment using versioned hash rings
KR102567971B1 (ko) * 2016-11-10 2023-08-17 삼성전자주식회사 스토리지 어레이를 공유하는 다수의 서버 노드들을 포함하는 메모리 시스템 및 그 동작 방법
CN110326252B (zh) 2016-11-14 2022-05-17 诚信保安服务有限责任公司 设备的安全供应和管理
CN108173775A (zh) * 2016-12-08 2018-06-15 北京京东尚科信息技术有限公司 用于服务器限流的方法与系统
US10742746B2 (en) 2016-12-21 2020-08-11 Nicira, Inc. Bypassing a load balancer in a return path of network traffic
CN108259370A (zh) * 2016-12-28 2018-07-06 航天信息股份有限公司 数据传输的方法及装置
US10735996B2 (en) * 2017-01-23 2020-08-04 Parallel Wireless, Inc. Systems and methods for a scalable heterogeneous network orchestrator
US10320683B2 (en) 2017-01-30 2019-06-11 Cisco Technology, Inc. Reliable load-balancer using segment routing and real-time application monitoring
US9787671B1 (en) * 2017-01-30 2017-10-10 Xactly Corporation Highly available web-based database interface system
US10671571B2 (en) 2017-01-31 2020-06-02 Cisco Technology, Inc. Fast network performance in containerized environments for network function virtualization
US10476945B2 (en) * 2017-02-01 2019-11-12 Juniper Networks, Inc. Consistent flow assignment in load balancing
US11005731B2 (en) 2017-04-05 2021-05-11 Cisco Technology, Inc. Estimating model parameters for automatic deployment of scalable micro services
US10491520B2 (en) * 2017-04-06 2019-11-26 Ca, Inc. Container-based software appliance
US10693951B2 (en) 2017-06-01 2020-06-23 Salesforce.Com, Inc. Decentralized, resource aware load distribution in a distributed system
US10713223B2 (en) * 2017-06-01 2020-07-14 Salesforce.Com, Inc. Opportunistic gossip-type dissemination of node metrics in server clusters
US10382274B2 (en) 2017-06-26 2019-08-13 Cisco Technology, Inc. System and method for wide area zero-configuration network auto configuration
US10439877B2 (en) 2017-06-26 2019-10-08 Cisco Technology, Inc. Systems and methods for enabling wide area multicast domain name system
US10432513B2 (en) 2017-07-14 2019-10-01 Nicira, Inc. Asymmetric network elements sharing an anycast address
US10250493B2 (en) 2017-07-14 2019-04-02 Nicira, Inc. Asymmetric network elements sharing an anycast address
US10425288B2 (en) 2017-07-21 2019-09-24 Cisco Technology, Inc. Container telemetry in data center environments with blade servers and switches
US10601693B2 (en) 2017-07-24 2020-03-24 Cisco Technology, Inc. System and method for providing scalable flow monitoring in a data center fabric
US10541866B2 (en) 2017-07-25 2020-01-21 Cisco Technology, Inc. Detecting and resolving multicast traffic performance issues
US11570092B2 (en) 2017-07-31 2023-01-31 Nicira, Inc. Methods for active-active stateful network service cluster
US10951584B2 (en) 2017-07-31 2021-03-16 Nicira, Inc. Methods for active-active stateful network service cluster
US11296984B2 (en) 2017-07-31 2022-04-05 Nicira, Inc. Use of hypervisor for active-active stateful network service cluster
US10834230B2 (en) * 2017-08-25 2020-11-10 International Business Machines Corporation Server request management
CN109510855B (zh) * 2017-09-15 2020-07-28 腾讯科技(深圳)有限公司 事件分发系统、方法及装置
US10797966B2 (en) 2017-10-29 2020-10-06 Nicira, Inc. Service operation chaining
US11012420B2 (en) 2017-11-15 2021-05-18 Nicira, Inc. Third-party service chaining using packet encapsulation in a flow-based forwarding element
CN107743152B (zh) * 2017-12-07 2020-09-22 南京易捷思达软件科技有限公司 一种OpenStack云平台中负载均衡器的高可用的实现方法
US10705882B2 (en) 2017-12-21 2020-07-07 Cisco Technology, Inc. System and method for resource placement across clouds for data intensive workloads
US11223565B2 (en) * 2017-12-22 2022-01-11 Nokia Technologies Oy Designs of an MPTCP-aware load balancer and load balancer using the designs
US11595474B2 (en) 2017-12-28 2023-02-28 Cisco Technology, Inc. Accelerating data replication using multicast and non-volatile memory enabled nodes
US10659252B2 (en) 2018-01-26 2020-05-19 Nicira, Inc Specifying and utilizing paths through a network
US10797910B2 (en) 2018-01-26 2020-10-06 Nicira, Inc. Specifying and utilizing paths through a network
CN108306771B (zh) * 2018-02-09 2021-06-18 腾讯科技(深圳)有限公司 日志上报方法、装置及系统
US11153122B2 (en) 2018-02-19 2021-10-19 Nicira, Inc. Providing stateful services deployed in redundant gateways connected to asymmetric network
JP6888567B2 (ja) * 2018-02-26 2021-06-16 日本電信電話株式会社 通信装置、通信方法、及びプログラム
US11005925B2 (en) * 2018-02-28 2021-05-11 International Business Machines Corporation Load balancing with power of random choices
US11012410B2 (en) * 2018-03-13 2021-05-18 Charter Communications Operating, Llc Distributed denial-of-service prevention using floating internet protocol gateway
US10728174B2 (en) 2018-03-27 2020-07-28 Nicira, Inc. Incorporating layer 2 service between two interfaces of gateway device
US10805192B2 (en) 2018-03-27 2020-10-13 Nicira, Inc. Detecting failure of layer 2 service using broadcast messages
US10511534B2 (en) * 2018-04-06 2019-12-17 Cisco Technology, Inc. Stateless distributed load-balancing
US11876684B1 (en) * 2018-05-22 2024-01-16 Amazon Technologies, Inc. Controlled cross-cell migration of data in cell-based distributed computing architecture
US10728361B2 (en) 2018-05-29 2020-07-28 Cisco Technology, Inc. System for association of customer information across subscribers
US10904322B2 (en) 2018-06-15 2021-01-26 Cisco Technology, Inc. Systems and methods for scaling down cloud-based servers handling secure connections
US10764266B2 (en) 2018-06-19 2020-09-01 Cisco Technology, Inc. Distributed authentication and authorization for rapid scaling of containerized services
US11019083B2 (en) 2018-06-20 2021-05-25 Cisco Technology, Inc. System for coordinating distributed website analysis
US10680955B2 (en) * 2018-06-20 2020-06-09 Cisco Technology, Inc. Stateless and reliable load balancing using segment routing and TCP timestamps
US10819571B2 (en) 2018-06-29 2020-10-27 Cisco Technology, Inc. Network traffic optimization using in-situ notification system
AU2019300777A1 (en) * 2018-07-07 2021-01-07 Integrity Security Services Llc Scalable certificate management system architectures
US11075984B1 (en) * 2018-07-16 2021-07-27 Amazon Technologies, Inc. Workload management at streaming data service supporting persistent connections for reads
CN110769464A (zh) * 2018-07-25 2020-02-07 慧与发展有限责任合伙企业 分发任务
US10904342B2 (en) 2018-07-30 2021-01-26 Cisco Technology, Inc. Container networking using communication tunnels
WO2020026335A1 (ja) * 2018-07-31 2020-02-06 Quadrac株式会社 サーバ装置及びシステム
US11650862B2 (en) 2018-07-31 2023-05-16 Parallel Wireless, Inc. Service bus for telecom infrastructure
US10681091B2 (en) * 2018-07-31 2020-06-09 Juniper Networks, Inc. N:1 stateful application gateway redundancy model
JP6544817B1 (ja) * 2018-07-31 2019-07-17 Quadrac株式会社 サーバ装置及びシステム
US10855590B2 (en) * 2018-08-31 2020-12-01 Gigamon Inc. Elastic modification of application instances in a network visibility infrastructure
US10944673B2 (en) 2018-09-02 2021-03-09 Vmware, Inc. Redirection of data messages at logical network gateway
US11595250B2 (en) 2018-09-02 2023-02-28 Vmware, Inc. Service insertion at logical network gateway
US11144340B2 (en) * 2018-10-04 2021-10-12 Cisco Technology, Inc. Placement of container workloads triggered by network traffic for efficient computing at network edge devices
US10826832B2 (en) 2018-11-21 2020-11-03 Amazon Technologies, Inc. Load balanced access to distributed scaling endpoints using global network addresses
US11418581B2 (en) * 2019-01-31 2022-08-16 T-Mobile Usa, Inc. Load balancer shared session cache
US11604666B2 (en) 2019-02-22 2023-03-14 Vmware, Inc. Service path generation in load balanced manner
US10855580B2 (en) 2019-03-27 2020-12-01 Amazon Technologies, Inc. Consistent route announcements among redundant controllers in global network access point
US11144226B2 (en) 2019-04-11 2021-10-12 Samsung Electronics Co., Ltd. Intelligent path selection and load balancing
US11570100B2 (en) * 2019-04-25 2023-01-31 Advanced New Technologies Co., Ltd. Data processing method, apparatus, medium and device
US11540170B2 (en) * 2019-05-20 2022-12-27 Commscope Technologies Llc Load-testing a cloud radio access network
US11216190B2 (en) 2019-06-10 2022-01-04 Samsung Electronics Co., Ltd. Systems and methods for I/O transmissions in queue pair-based NVMeoF initiator-target system
US11704617B2 (en) * 2019-06-20 2023-07-18 Stripe, Inc. Systems and methods for modeling and analysis of infrastructure services provided by cloud services provider systems
US10908834B2 (en) * 2019-06-28 2021-02-02 Hitachi, Ltd. Load balancing for scalable storage system
US11301316B2 (en) 2019-07-12 2022-04-12 Ebay Inc. Corrective database connection management
US11038952B2 (en) 2019-07-12 2021-06-15 Ebay Inc. Connection service discovery and load rebalancing
US11240294B2 (en) 2019-08-23 2022-02-01 Samsung Electronics Co., Ltd. Systems and methods for spike detection and load balancing resource management
US11095480B2 (en) 2019-08-30 2021-08-17 Vmware, Inc. Traffic optimization using distributed edge services
US11070469B1 (en) * 2019-09-11 2021-07-20 Juniper Networks, Inc. Scaling border gateway protocol services
US11140081B2 (en) * 2019-10-01 2021-10-05 At&T Intellectual Property I, L.P. Extending distributed hash table-based software network functions to switching hardware
KR102235100B1 (ko) * 2019-10-08 2021-04-01 브이에스아이 주식회사 공유 버스를 통해 복수의 서버들에 예비 통신로를 제공할 수 있는 시스템
US11038793B2 (en) 2019-10-15 2021-06-15 Cisco Technology, Inc. Service assurance of ECMP using virtual network function hashing algorithm
US11025534B2 (en) * 2019-10-15 2021-06-01 Cisco Technology, Inc. Service-based node-centric ECMP health
US20210127296A1 (en) * 2019-10-25 2021-04-29 Qualcomm Incorporated Reducing feedback latency for network coding in wireless backhaul communications networks
US11283717B2 (en) 2019-10-30 2022-03-22 Vmware, Inc. Distributed fault tolerant service chain
CN110795250B (zh) * 2019-10-30 2023-05-12 腾讯科技(深圳)有限公司 负载调度方法、装置、设备及存储介质
US11140218B2 (en) 2019-10-30 2021-10-05 Vmware, Inc. Distributed service chain across multiple clouds
CN111010342B (zh) * 2019-11-21 2023-04-07 天津卓朗科技发展有限公司 一种分布式负载均衡实现方法及装置
US11223494B2 (en) 2020-01-13 2022-01-11 Vmware, Inc. Service insertion for multicast traffic at boundary
US11153406B2 (en) 2020-01-20 2021-10-19 Vmware, Inc. Method of network performance visualization of service function chains
US11659061B2 (en) 2020-01-20 2023-05-23 Vmware, Inc. Method of adjusting service function chains to improve network performance
US11438257B2 (en) 2020-04-06 2022-09-06 Vmware, Inc. Generating forward and reverse direction connection-tracking records for service paths at a network edge
US11429452B2 (en) 2020-04-16 2022-08-30 Paypal, Inc. Method for distributing keys using two auxiliary hashing functions
CN111694663B (zh) * 2020-06-02 2023-11-03 中国工商银行股份有限公司 服务器集群的负载均衡方法、装置及系统
CN113783904B (zh) * 2020-06-09 2023-05-09 比亚迪股份有限公司 负载均衡方法、路由服务器及负载均衡系统
US11606294B2 (en) 2020-07-16 2023-03-14 Vmware, Inc. Host computer configured to facilitate distributed SNAT service
US11616755B2 (en) 2020-07-16 2023-03-28 Vmware, Inc. Facilitating distributed SNAT service
US11611613B2 (en) * 2020-07-24 2023-03-21 Vmware, Inc. Policy-based forwarding to a load balancer of a load balancing cluster
US11451413B2 (en) 2020-07-28 2022-09-20 Vmware, Inc. Method for advertising availability of distributed gateway service and machines at host computer
US11902050B2 (en) 2020-07-28 2024-02-13 VMware LLC Method for providing distributed gateway service at host computer
US11394636B1 (en) 2020-12-10 2022-07-19 Amazon Technologies, Inc. Network connection path obfuscation using global access points
US11310309B1 (en) 2020-12-11 2022-04-19 Amazon Technologies, Inc. Arc jump: per-key selection of an alternative server when implemented bounded loads
US11140220B1 (en) * 2020-12-11 2021-10-05 Amazon Technologies, Inc. Consistent hashing using the power of k choices in server placement
US11734043B2 (en) 2020-12-15 2023-08-22 Vmware, Inc. Providing stateful services in a scalable manner for machines executing on host computers
US11611625B2 (en) 2020-12-15 2023-03-21 Vmware, Inc. Providing stateful services in a scalable manner for machines executing on host computers
CN112799811A (zh) * 2021-01-26 2021-05-14 重庆邮电大学 一种边缘网关的高并发线程池任务调度方法
WO2022187645A1 (en) * 2021-03-05 2022-09-09 Fastly, Inc. System and method for deterministic hash addressing
US11706193B2 (en) * 2021-08-09 2023-07-18 Juniper Networks, Inc. Intelligent flow state synchronization to improve resiliency, availability, and/or performance of redundant network security devices
US11799761B2 (en) 2022-01-07 2023-10-24 Vmware, Inc. Scaling edge services with minimal disruption
WO2024035634A1 (en) * 2022-08-11 2024-02-15 Cisco Technology, Inc. Scalable creation of connections
KR102530913B1 (ko) * 2023-02-08 2023-05-10 주식회사 파이오링크 패킷의 콘텐츠 기반으로 dsr 로드 밸런싱을 수행하는 방법 및 패킷 콘텐츠 기반 dsr 로드 밸런싱 시스템

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774660A (en) * 1996-08-05 1998-06-30 Resonate, Inc. World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network
JP3556476B2 (ja) 1998-07-13 2004-08-18 富士通株式会社 ロードシェアシステム及び処理要求中継プログラムを記録したコンピュータ読み取り可能な記録媒体
EP1368736A2 (en) 2001-01-11 2003-12-10 Z-Force Communications, Inc. File switch and switched file system
US20030009559A1 (en) 2001-07-09 2003-01-09 Naoya Ikeda Network system and method of distributing accesses to a plurality of server apparatus in the network system
JP2003131961A (ja) 2001-07-09 2003-05-09 Hitachi Ltd ネットワークシステム及び負荷分散方法
CN1150464C (zh) * 2001-07-26 2004-05-19 华为技术有限公司 一种在应用层交换中提高服务器响应速度的系统及方法
US7283556B2 (en) 2001-07-31 2007-10-16 Nishan Systems, Inc. Method and system for managing time division multiplexing (TDM) timeslots in a network switch
JP3645852B2 (ja) * 2001-11-19 2005-05-11 Necアクセステクニカ株式会社 負荷分散方法、コンテンツ配信システム及び負荷分散装置
JP2003163689A (ja) * 2001-11-28 2003-06-06 Hitachi Ltd ネットワーク連携情報処理システムおよびその複数負荷分散機間のアクセス移動方法
JP3898498B2 (ja) 2001-12-06 2007-03-28 富士通株式会社 サーバ負荷分散システム
US7644436B2 (en) * 2002-01-24 2010-01-05 Arxceo Corporation Intelligent firewall
US7088718B1 (en) * 2002-03-19 2006-08-08 Cisco Technology, Inc. Server load balancing using IP option field approach to identify route to selected server
US7260645B2 (en) * 2002-04-26 2007-08-21 Proficient Networks, Inc. Methods, apparatuses and systems facilitating determination of network path metrics
US7380002B2 (en) * 2002-06-28 2008-05-27 Microsoft Corporation Bi-directional affinity within a load-balancing multi-node network interface
US7480737B2 (en) * 2002-10-25 2009-01-20 International Business Machines Corporation Technique for addressing a cluster of network servers
US7353276B2 (en) * 2003-02-13 2008-04-01 Microsoft Corporation Bi-directional affinity
JPWO2004088940A1 (ja) * 2003-03-31 2006-07-06 富士通株式会社 負荷分散システム
CN1300986C (zh) * 2003-04-14 2007-02-14 华为技术有限公司 实现快速五七层交换的方法
CN100581157C (zh) * 2003-04-18 2010-01-13 智邦科技股份有限公司 将第七层负载平衡器的工作负荷转移至服务器端来处理的方法
US20040246895A1 (en) 2003-06-09 2004-12-09 Telefonaktiebolaget Lm Ericsson (Publ) Bandwidth-limited supervisory packet transmission to control congestion and call establishment in packet-based networks
US7567504B2 (en) 2003-06-30 2009-07-28 Microsoft Corporation Network load balancing with traffic routing
US7636917B2 (en) 2003-06-30 2009-12-22 Microsoft Corporation Network load balancing with host status information
US7606929B2 (en) 2003-06-30 2009-10-20 Microsoft Corporation Network load balancing with connection manipulation
US20050027862A1 (en) 2003-07-18 2005-02-03 Nguyen Tien Le System and methods of cooperatively load-balancing clustered servers
US20050050187A1 (en) * 2003-09-03 2005-03-03 International Business Machines Corporation Method and apparatus for support of bottleneck avoidance in an intelligent adapter
US20050071469A1 (en) * 2003-09-26 2005-03-31 Mccollom William G. Method and system for controlling egress traffic load balancing between multiple service providers
US20060112170A1 (en) * 2004-05-03 2006-05-25 Craig Sirkin Geo-locating load balancing
US7020090B2 (en) * 2004-06-21 2006-03-28 Cisco Technology, Inc. System and method for loadbalancing in a network environment using feedback information
JP2006195904A (ja) * 2005-01-17 2006-07-27 Sharp Corp 処理実行方法、処理実行システム、処理実行装置、処理要求装置、コンピュータプログラム及び記録媒体
US7496653B2 (en) * 2005-01-31 2009-02-24 International Business Machines Corporation Method, system, and computer program product for providing quality of service guarantees for clients of application servers
US8315172B2 (en) * 2005-12-30 2012-11-20 Telefonaktiebolaget Lm Ericsson (Publ) Monitoring access nodes in a distributed radio access network
US8238237B2 (en) 2007-06-18 2012-08-07 Sony Computer Entertainment Inc. Load balancing distribution of data to multiple recipients on a peer-to-peer network
US8867341B2 (en) 2007-11-09 2014-10-21 International Business Machines Corporation Traffic management of client traffic at ingress location of a data center
US20100036903A1 (en) 2008-08-11 2010-02-11 Microsoft Corporation Distributed load balancer
JP4931881B2 (ja) 2008-08-13 2012-05-16 日本電信電話株式会社 ホワイトリストを利用したサーバ割り当てシステムおよびその方法
CN101364930A (zh) 2008-09-24 2009-02-11 深圳市金蝶中间件有限公司 会话控制方法、装置及系统
KR101104249B1 (ko) * 2008-12-11 2012-01-11 한국전자통신연구원 단말기의 캐리어 선택 방법 및 그것의 호 접속 방법
US8416692B2 (en) 2009-05-28 2013-04-09 Microsoft Corporation Load balancing across layer-2 domains
US8769541B2 (en) * 2009-12-31 2014-07-01 Facebook, Inc. Load balancing web service by rejecting connections
US8549146B2 (en) * 2010-01-28 2013-10-01 Telefonaktiebolaget L M Ericsson (Publ) Stateless forwarding of load balanced packets
JP2011182070A (ja) * 2010-02-26 2011-09-15 Nippon Telegr & Teleph Corp <Ntt> 仮想通信路接続システムおよび仮想通信路接続方法
US8848728B1 (en) * 2010-04-08 2014-09-30 Marvell Israel (M.I.S.L) Ltd. Dynamic load balancing switch architecture
CN102859949B (zh) 2010-04-30 2015-12-02 惠普发展公司,有限责任合伙企业 用于在胖树网络中路由数据分组的方法
US8499093B2 (en) * 2010-05-14 2013-07-30 Extreme Networks, Inc. Methods, systems, and computer readable media for stateless load balancing of network traffic flows
EP2395710B1 (en) 2010-06-08 2013-11-06 Alcatel Lucent Device and method for data load balancing
JP5489917B2 (ja) 2010-08-23 2014-05-14 日本電信電話株式会社 サーバ負荷分散システム及び方法
US8351329B2 (en) * 2010-09-14 2013-01-08 Cisco Technology, Inc. Universal load-balancing tunnel encapsulation
JP5580706B2 (ja) 2010-09-29 2014-08-27 Kddi株式会社 再送制御プロトコルを用いるデータ転送装置、プログラム及び方法
US8711703B2 (en) 2010-10-29 2014-04-29 Telefonaktiebolaget L M Ericsson (Publ) Load balancing in shortest-path-bridging networks
US8755283B2 (en) 2010-12-17 2014-06-17 Microsoft Corporation Synchronizing state among load balancer components
US8780896B2 (en) 2010-12-29 2014-07-15 Juniper Networks, Inc. Methods and apparatus for validation of equal cost multi path (ECMP) paths in a switch fabric system
US8776207B2 (en) * 2011-02-16 2014-07-08 Fortinet, Inc. Load balancing in a network with session information
US8676980B2 (en) 2011-03-22 2014-03-18 Cisco Technology, Inc. Distributed load balancer in a virtual machine environment
CN102882699B (zh) * 2011-07-14 2015-07-29 华为技术有限公司 边缘节点的分配方法和装置及边缘节点控制器
US9590820B1 (en) * 2011-09-02 2017-03-07 Juniper Networks, Inc. Methods and apparatus for improving load balancing in overlay networks
CN103023797B (zh) * 2011-09-23 2016-06-15 百度在线网络技术(北京)有限公司 数据中心系统及装置和提供服务的方法
US20130185586A1 (en) * 2012-01-18 2013-07-18 LineRate Systems, Inc. Self-healing of network service modules
US8825867B2 (en) 2012-05-04 2014-09-02 Telefonaktiebolaget L M Ericsson (Publ) Two level packet distribution with stateless first level packet distribution to a group of servers and stateful second level packet distribution to a server within the group
US9325785B2 (en) 2012-06-29 2016-04-26 Rodolfo Kohn Device, system, and method for client-governed session persistency between one or more clients and servers of a data center
US20140025800A1 (en) * 2012-07-23 2014-01-23 Radisys Corporation Systems and methods for multi-blade load balancing
EP2747386A1 (en) 2012-12-20 2014-06-25 Telefonica S.A. Method and System for the creation, modification and removal of a distributed virtual customer premises equipment
US10069903B2 (en) * 2013-04-16 2018-09-04 Amazon Technologies, Inc. Distributed load balancer
US10038626B2 (en) 2013-04-16 2018-07-31 Amazon Technologies, Inc. Multipath routing in a distributed load balancer

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11895182B1 (en) 2023-01-23 2024-02-06 Bank Of America Corporation Systems, methods, and apparatuses for dynamically determining data center transmissions by implementing load balancers in an electronic network

Also Published As

Publication number Publication date
JP2017184272A (ja) 2017-10-05
JP6194100B2 (ja) 2017-09-06
CA2909621C (en) 2019-06-04
EP2987304A1 (en) 2016-02-24
EP3651440B1 (en) 2023-06-07
EP3651440A1 (en) 2020-05-13
AU2016277754B2 (en) 2018-02-01
CN105308929A (zh) 2016-02-03
KR20170121311A (ko) 2017-11-01
CN110166568A (zh) 2019-08-23
JP2016518081A (ja) 2016-06-20
CA2909621A1 (en) 2014-10-23
KR20150140819A (ko) 2015-12-16
CN105308929B (zh) 2019-06-07
SG11201508556RA (en) 2015-11-27
US10069903B2 (en) 2018-09-04
KR101790315B1 (ko) 2017-10-26
BR112015026342B1 (pt) 2022-12-06
WO2014172500A1 (en) 2014-10-23
US20180375928A1 (en) 2018-12-27
BR112015026342A8 (pt) 2019-12-24
EP2987304B1 (en) 2020-01-22
BR112015026342A2 (pt) 2017-07-25
AU2014253953A1 (en) 2015-11-12
AU2016277754A1 (en) 2017-02-02
US11843657B2 (en) 2023-12-12
US20140310418A1 (en) 2014-10-16
AU2014253953B2 (en) 2016-09-29
EP2987304A4 (en) 2016-11-23
CN110166568B (zh) 2022-04-15
KR101863024B1 (ko) 2018-05-30

Similar Documents

Publication Publication Date Title
JP6445621B2 (ja) 分散型ロードバランサ
JP6526848B2 (ja) 分散型ロード・バランサでの多重パス経路指定
JP6030807B2 (ja) 分散型ロードバランサでの接続公開
JP6169251B2 (ja) 分散型ロードバランサにおける非対称パケットフロー
US9432245B1 (en) Distributed load balancer node architecture
US9559961B1 (en) Message bus for testing distributed load balancers
US9871712B1 (en) Health checking in a distributed load balancer
AU2014253953B9 (en) Distributed load balancer

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180406

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180424

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180724

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181113

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181129

R150 Certificate of patent or registration of utility model

Ref document number: 6445621

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250