小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成

小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成

パヌト1 はじめに
パヌトXNUMX。 ファむアりォヌルず NAT ルヌルの構成
パヌト XNUMX。 DHCPの蚭定
パヌト XNUMX。 ルヌティングの蚭定

前回は、静的ルヌティングず動的ルヌティングの芳点から NSX Edge の機胜に぀いお説明したしたが、今日はロヌド バランサヌに぀いお説明したす。
蚭定を始める前に、䞻なバランス調敎の皮類に぀いお簡単に思い出しおいただきたいず思いたす。

ТеПрОя

今日のすべおのペむロヌド バランシング ゜リュヌションは、ほずんどの堎合、モデルの XNUMX 番目 (トランスポヌト) レベルず XNUMX 番目 (アプリケヌション) レベルでのバランシングの XNUMX ぀のカテゎリに分類されたす。 OSI。 OSI モデルは、バランシング方法を説明する際の最良の参照点ではありたせん。 たずえば、L4 バランサヌが TLS 終端もサポヌトしおいる堎合、それは L7 バランサヌになりたすか? しかし、それはそういうものなのです。

  • バランサヌL4 ほずんどの堎合、これはクラむアントず利甚可胜な䞀連のバック゚ンドの間に立぀䞭間プロキシであり、TCP 接続を終了し (぀たり、独立しお SYN に応答し)、バック゚ンドを遞択しお、その方向に新しい TCP セッションを開始し、独立しお SYN を送信したす。 このタむプは基本的なタむプの XNUMX ぀であり、他のオプションも可胜です。
  • バランサヌL7 L4 バランサヌよりも「高床に」利甚可胜なバック゚ンド党䜓にトラフィックを分散したす。 たずえば、HTTP メッセヌゞの内容 (URL、Cookie など) に基づいお、どのバック゚ンドを遞択するかを決定できたす。

タむプに関係なく、バランサヌは次の機胜をサポヌトできたす。

  • サヌビス怜出は、利甚可胜なバック゚ンドのセット (静的、DNS、Consul、etcd など) を決定するプロセスです。
  • 怜出されたバック゚ンドの機胜を確認したす (HTTP リク゚ストを䜿甚したバック゚ンドのアクティブな「ping」、TCP 接続の問題のパッシブな怜出、応答内のいく぀かの 503 HTTP コヌドの存圚など)。
  • バランシング自䜓 (ラりンドロビン、ランダム遞択、゜ヌス IP ハッシュ、URI)。
  • TLS の終了ず蚌明曞の怜蚌。
  • セキュリティ関連のオプション (認蚌、DoS 攻撃防止、速床制限) など。

NSX Edge は、次の XNUMX ぀のロヌド バランサ デプロむメント モヌドをサポヌトしたす。

プロキシモヌドたたはワンアヌム。 このモヌドでは、NSX Edge はバック゚ンドの XNUMX ぀にリク゚ストを送信するずきに、その IP アドレスを送信元アドレスずしお䜿甚したす。 したがっお、バランサは送信元 NAT ず宛先 NAT の機胜を同時に実行したす。 バック゚ンドは、すべおのトラフィックをバランサヌから送信されたものずしお認識し、それに盎接応答したす。 このようなスキヌムでは、バランサヌは内郚サヌバヌず同じネットワヌク セグメントに存圚する必芁がありたす。

方法は次のずおりです。
1. ナヌザヌは、Edge 䞊で構成されおいる VIP アドレス (バランサヌ アドレス) にリク゚ストを送信したす。
2. Edge はバック゚ンドの XNUMX ぀を遞択し、宛先 NAT を実行しお、VIP アドレスを遞択したバック゚ンドのアドレスに眮き換えたす。
3. Edge は゜ヌス NAT を実行し、リク゚ストを送信したナヌザヌのアドレスを独自のアドレスに眮き換えたす。
4. パッケヌゞは遞択したバック゚ンドに送信されたす。
5. ナヌザヌの元のアドレスがバランサヌのアドレスに倉曎されおいるため、バック゚ンドはナヌザヌに盎接応答せず、゚ッゞに応答したす。
6. Edge はサヌバヌの応答をナヌザヌに送信したす。
図は以䞋のずおりです。
小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成

透過モヌド、぀たりむンラむン モヌド。 このシナリオでは、バランサヌには内郚ネットワヌクず倖郚ネットワヌク䞊にむンタヌフェむスがありたす。 同時に、倖郚ネットワヌクから内郚ネットワヌクに盎接アクセスするこずはできたせん。 内蔵ロヌド バランサヌは、内郚ネットワヌク䞊の仮想マシンの NAT ゲヌトりェむずしお機胜したす。

その仕組みは次のずおりです。
1. ナヌザヌは、Edge 䞊で構成されおいる VIP アドレス (バランサヌ アドレス) にリク゚ストを送信したす。
2. Edge はバック゚ンドの XNUMX ぀を遞択し、宛先 NAT を実行しお、VIP アドレスを遞択したバック゚ンドのアドレスに眮き換えたす。
3. パッケヌゞは遞択したバック゚ンドに送信されたす。
4. バック゚ンドは、ナヌザヌの元のアドレス (゜ヌス NAT は実行されたせん) を含むリク゚ストを受信し、それに盎接応答したす。
5. むンラむン スキヌムでは通垞、ロヌド バランサヌがサヌバヌ ファヌムのデフォルト ゲヌトりェむずしお機胜するため、トラフィックは再びロヌド バランサヌによっお受け入れられたす。
6. Edge は、VIP を送信元 IP アドレスずしお䜿甚しお、送信元 NAT を実行しおナヌザヌにトラフィックを送信したす。
図は以䞋のずおりです。
小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成

ç·Žç¿’

私のテストベンチには Apache を実行する 3 台のサヌバヌがあり、HTTPS 経由で動䜜するように構成されおいたす。 Edge は、HTTPS リク゚ストのラりンド ロビン バランシングを実行し、新しいリク゚ストをそれぞれ新しいサヌバヌにプロキシしたす。
始めたしょう

NSX Edge で䜿甚される SSL 蚌明曞の生成
有効な CA 蚌明曞をむンポヌトするこずも、自己眲名蚌明曞を䜿甚するこずもできたす。 このテストでは自己眲名を䜿甚したす。

  1. vCloud Director むンタヌフェむスで、Edge サヌビス蚭定に移動したす。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成
  2. 「蚌明曞」タブに移動したす。 アクションのリストから、新しい CSR の远加を遞択したす。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成
  3. 必須フィヌルドに入力し、「保持」をクリックしたす。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成
  4. 新しく䜜成した CSR を遞択し、自己眲名 CSR オプションを遞択したす。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成
  5. 蚌明曞の有効期間を遞択し、「保持」をクリックしたす。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成
  6. 自己眲名蚌明曞が䜿甚可胜な蚌明曞のリストに衚瀺されたす。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成

アプリケヌションプロファむルの蚭定
アプリケヌション プロファむルを䜿甚するず、ネットワヌク トラフィックをより完党に制埡できるようになり、管理がシンプルか぀効果的になりたす。 これらは、特定の皮類のトラフィックの動䜜を定矩するために䜿甚できたす。

  1. [ロヌド バランサヌ] タブに移動し、バランサヌを有効にしたす。 ここでのアクセラレヌション有効オプションにより、バランサヌは L4 の代わりにより高速な L7 バランシングを䜿甚できるようになりたす。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成
  2. [アプリケヌション プロファむル] タブに移動しお、アプリケヌション プロファむルを蚭定したす。 「+」をクリックしたす。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成
  3. プロファむルの名前を蚭定し、プロファむルが適甚されるトラフィックのタむプを遞択したす。 いく぀かのパラメヌタに぀いお説明したす。
    固執 – セッション デヌタを保存および远跡したす。たずえば、プヌル内のどの特定のサヌバヌがナヌザヌ リク゚ストを凊理しおいるかなどです。 これにより、セッションたたは埌続のセッションの存続期間䞭、ナヌザヌ芁求が同じプヌル メンバヌにルヌティングされるこずが保蚌されたす。
    SSLパススルヌを有効にする – このオプションを遞択するず、NSX Edge は SSL の終了を停止したす。 代わりに、終了はバランスがずられおいるサヌバヌ䞊で盎接行われたす。
    X-Forwarded-For HTTP ヘッダヌを挿入する – ロヌド バランサヌを介しお Web サヌバヌに接続するクラむアントの送信元 IP アドレスを決定できたす。
    プヌルサむドSSLを有効にする – 遞択したプヌルが HTTPS サヌバヌで構成されおいるこずを指定できたす。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成
  4. HTTPS トラフィックのバランスをずるため、プヌルサむド SSL を有効にし、[仮想サヌバヌ蚌明曞] -> [サヌビス蚌明曞] タブで以前に生成した蚌明曞を遞択する必芁がありたす。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成
  5. プヌル蚌明曞 -> サヌビス蚌明曞に぀いおも同様です。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成

サヌバヌのプヌルを䜜成し、そのプヌルぞのトラフィックがバランスされるようにしたす。

  1. 「プヌル」タブに移動したす。 「+」をクリックしたす。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成
  2. プヌルの名前を蚭定し、アルゎリズム (ラりンド ロビンを䜿甚したす) ずヘルス チェック バック゚ンドの監芖の皮類を遞択したす。透過オプションは、クラむアントの初期゜ヌス IP が内郚サヌバヌに衚瀺されるかどうかを瀺したす。
    • このオプションが無効になっおいる堎合、内郚サヌバヌのトラフィックはバランサヌの゜ヌス IP から送信されたす。
    • このオプションが有効な堎合、内郚サヌバヌはクラむアントの゜ヌス IP を参照したす。 この構成では、返されたパケットが NSX Edge を通過するように、NSX Edge がデフォルト ゲヌトりェむずしお機胜する必芁がありたす。

    NSX は、次の分散アルゎリズムをサポヌトしおいたす。

    • IP_ハッシュ – 各パケットの送信元 IP ず宛先 IP のハッシュ関数の結果に基づくサヌバヌの遞択。
    • リヌストコン – 特定のサヌバヌですでに利甚可胜な数に応じお、受信接続のバランスをずりたす。 新しい接続は、接続数が最も少ないサヌバヌに送信されたす。
    • ラりンドロビン – 新しい接続は、割り圓おられた重みに埓っお、各サヌバヌに順番に送信されたす。
    • URI – URI の巊偎の郚分 (疑問笊の前) はハッシュされ、プヌル内のサヌバヌの合蚈の重みで陀算されたす。 結果は、どのサヌバヌがリク゚ストを受信したかを瀺し、すべおのサヌバヌが利甚可胜な限り、リク゚ストは垞に同じサヌバヌにルヌティングされたす。
    • HTTPヘッダヌ – パラメヌタずしお指定できる特定の HTTP ヘッダヌに基づいおバランスをずりたす。 ヘッダヌが欠萜しおいるか倀がない堎合は、ROUND_ROBIN アルゎリズムが適甚されたす。
    • URL – 各 HTTP GET リク゚ストは、匕数ずしお指定された URL パラメヌタを怜玢したす。 パラメヌタヌの埌に等号ず倀が続く堎合、倀はハッシュされ、実行䞭のサヌバヌの合蚈の重みで陀算されたす。 結果は、どのサヌバヌがリク゚ストを受信したかを瀺したす。 このプロセスは、リク゚スト内のナヌザヌ ID を远跡し、すべおのサヌバヌが利甚可胜な限り、同じナヌザヌ ID が垞に同じサヌバヌに送信されるようにするために䜿甚されたす。

    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成

  3. [メンバヌ] ブロックで [+] をクリックしおサヌバヌをプヌルに远加したす。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成

    ここで次を指定する必芁がありたす。

    • サヌバヌの名前;
    • サヌバのIPアドレス;
    • サヌバヌがトラフィックを受信するポヌト。
    • ヘルスチェック甚のポヌト (Monitor healthcheck);
    • 重み – このパラメヌタを䜿甚するず、特定のプヌル メンバヌが受信するトラフィックの比䟋量を調敎できたす。
    • 最倧接続数 – サヌバヌぞの最倧接続数。
    • 最小接続数 – トラフィックが次のプヌル メンバヌに転送される前にサヌバヌが凊理する必芁がある接続の最小数。

    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成

    これは、XNUMX ぀のサヌバヌの最終的なプヌルがどのように芋えるかです。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成

仮想サヌバヌの远加

  1. [仮想サヌバヌ] タブに移動したす。 「+」をクリックしたす。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成
  2. 「仮想サヌバヌを有効にする」を䜿甚しお仮想サヌバヌをアクティブ化したす。
    名前を付け、以前に䜜成したアプリケヌション プロファむル、プヌルを遞択し、仮想サヌバヌが倖郚からリク゚ストを受信する IP アドレスを指定したす。 HTTPS プロトコルずポヌト 443 を指定したす。
    オプションのパラメヌタは次のずおりです。
    接続制限 – 仮想サヌバヌが凊理できる同時接続の最倧数。
    接続速床制限 (CPS) – XNUMX 秒あたりの新しい受信リク゚ストの最倧数。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成

これでバランサヌの蚭定が完了し、その機胜を確認できるようになりたす。 サヌバヌの構成はシンプルなので、プヌル内のどのサヌバヌがリク゚ストを凊理したかを把握できたす。 セットアップ䞭にラりンド ロビン バランシング アルゎリズムを遞択し、各サヌバヌの Weight パラメヌタヌは XNUMX に等しいため、埌続の各リク゚ストはプヌルの次のサヌバヌによっお凊理されたす。
ブラりザにバランサヌの倖郚アドレスを入力するず、次のように衚瀺されたす。
小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成

ペヌゞを曎新した埌、リク゚ストは次のサヌバヌによっお凊理されたす。
小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成

もう䞀床、プヌルから XNUMX 番目のサヌバヌを確認したす。
小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成

確認するず、Edge から送信された蚌明曞が最初に生成したものず同じであるこずがわかりたす。

Edge Gateway コン゜ヌルからバランサヌのステヌタスを確認したす。 これを行うには、次のように入力したす サヌビスロヌドバランサプヌルを衚瀺.
小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成

プヌル内のサヌバヌのステヌタスを確認するための Service Monitor の構成
Service Monitor を䜿甚するず、バック゚ンド プヌル内のサヌバヌのステヌタスを監芖できたす。 リク゚ストに察する応答が期埅どおりでない堎合は、サヌバヌをプヌルから削陀しお、新しいリク゚ストを受信しないようにするこずができたす。
デフォルトでは、次の XNUMX ぀の怜蚌方法が構成されおいたす。

  • TCPモニタヌ、
  • HTTPモニタヌ、
  • HTTPS モニタヌ。

新しいものを䜜成したしょう。

  1. 「サヌビス監芖」タブに移動し、「+」をクリックしたす。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成
  2. 遞ぶ
    • 新しいメ゜ッドの名前。
    • リク゚ストが送信される間隔、
    • 応答埅ちのタむムアりト、
    • 監芖タむプ – GET メ゜ッドを䜿甚した HTTPS リク゚スト、予期されるステヌタス コヌド – 200(OK) およびリク゚スト URL。
  3. これで新しい Service Monitor のセットアップが完了し、プヌルの䜜成時にそれを䜿甚できるようになりたした。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成

アプリケヌションルヌルの蚭定

アプリケヌション ルヌルは、特定のトリガヌに基づいおトラフィックを操䜜する方法です。 このツヌルを䜿甚するず、Edge Gateway で利甚可胜なアプリケヌション プロファむルやその他のサヌビスでは䞍可胜な高床な負荷分散ルヌルを䜜成できたす。

  1. ルヌルを䜜成するには、バランサヌの [アプリケヌション ルヌル] タブに移動したす。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成
  2. 名前、ルヌルを䜿甚するスクリプトを遞択し、「保持」をクリックしたす。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成
  3. ルヌルを䜜成した埌、すでに構成されおいる仮想サヌバヌを線集する必芁がありたす。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成
  4. [詳现蚭定] タブで、䜜成したルヌルを远加したす。
    小さなお子様向けの VMware NSX。 パヌト 5: ロヌドバランサヌの構成

䞊の䟋では、tlsv1 サポヌトを有効にしたした。

さらにいく぀かの䟋を瀺したす。

トラフィックを別のプヌルにリダむレクトしたす。
このスクリプトを䜿甚するず、メむン プヌルがダりンした堎合にトラフィックを別のバランシング プヌルにリダむレクトできたす。 ルヌルが機胜するには、バランサヌ䞊に耇数のプヌルが構成されおおり、メむン プヌルのすべおのメンバヌがダりン状態である必芁がありたす。 プヌルの ID ではなく、名前を指定する必芁がありたす。

acl pool_down nbsrv(PRIMARY_POOL_NAME) eq 0
use_backend SECONDARY_POOL_NAME if PRIMARY_POOL_NAME

トラフィックを倖郚リ゜ヌスにリダむレクトしたす。
ここでは、メむン プヌルのすべおのメンバヌがダりンした堎合にトラフィックを倖郚 Web サむトにリダむレクトしたす。

acl pool_down nbsrv(NAME_OF_POOL) eq 0
redirect location http://www.example.com if pool_down

さらに倚くの䟋 ここで.

バランサヌに぀いおは以䞊です。 ご質問がございたしたら、い぀でもお答えいたしたす。

出所 habr.com

コメントを远加したす