グローバル サーバ ロード バランシング (GSLB) は、複数の場所に展開されたアプリケーションのインスタンス間でアプリケーションの負荷を分散する機能です。これらの場所のいずれかにあるアプリケーションの負荷は、通常、ローカルのロード バランサによって管理されます。

GSLB では、リソースへのアクセスは DNS クエリと健全性チェックによって制御されます。サイトが健全かどうかがわかると、GSLB は、構成済みのロジックに基づいて、ユーザーがアクセスする必要があるサイトの DNS レコードの形式で IP アドレスを提供します。アプリケーション サーバおよび UAG サーバの複数のインスタンスが世界中に展開されていて、ユーザーも地理的に分散している場合は、GSLB が必要です。

注:

現在、この機能は技術プレビュー版です。

前提条件

次の前提条件を満たしていることを確認します。

  • NSX Advanced Load Balancer Controller がすべてのデータセンターで設定されている

  • クラウド構成が完了している

  • サイトが GSLB に追加され、DNS 仮想サービスが個々のサイトで要件に従って構成されている

  • UAG サーバが他の Horizon コンポーネントとともに、要件に従って構成されている

リファレンス アーキテクチャ

NSX Advanced Load Balancer は、オンプレミスまたはクラウド エコシステムに展開できます。どのタイプのエコシステムにも簡単に展開して Horizon トラフィックのロード バランシングを行えます。NSX Advanced Load Balancer GSLB により、地理的に分散した複数のデータセンターに負荷を分散できます。このサンプル トポロジのような要求フローがあるとします。

注:

ここでは、2 つの GSLB サイトのみを表示しています。GSLB サイトは要件に応じてさらに追加できます。

次に示すのは、サンプルのトポロジです。



  1. NSX Advanced Load Balancer が次の 2 つの場所(GSLB サイト)で実行されています。

    1. オンプレミス(NSX Advanced Load Balancer GSLB サイト 1)

    2. パブリック クラウド(NSX Advanced Load Balancer GSLB サイト 2)

  2. 各サイトには独自の NSX Advanced Load Balancer Controller クラスタがあります(単一の Controller アイコンで表しています)。

  3. UAG 用の NSX Advanced Load Balancer には、NSX Advanced Load Balancer GSLB サイト 1 と NSX Advanced Load Balancer GSLB サイト 2 でそれぞれ実行している仮想サービスがあります。

    1. VIP1

    2. VIP2

  4. GSLB サービス (GS) のアプリケーション ドメイン名は demo.gslb.appshzn.com です。

  5. NSX Advanced Load Balancer GSLB サイト 1 と NSX Advanced Load Balancer GSLB サイト 2 には、グローバル DNS サービス(それぞれ NSX Advanced Load BalancerDNS1、NSX Advanced Load Balancer DNS2)があります。これらはサブドメイン gslb.appshzn.com に対して、同等の権限があります。

  6. NSX Advanced Load Balancer は、仮想サービスの健全性をモニターし、最適な場所を選択(健全でない場所を除外)します。

要求フロー

  1. クライアントは、demo.gslb.appshzn.com にアクセスするための要求を送信します。

  2. 要求は企業 DNS サーバに送信され、さらに DNS クエリが 2 台の NSX Advanced Load Balancer DNS サーバ(NSX Advanced Load Balancer DNS 1 または NSX Advanced Load Balancer DNS 2)のいずれかに送信されます。

  3. 要求が NSX Advanced Load Balancer DNS 1 に送信されるとします。NSX Advanced Load Balancer DNS 1 は、GSLB アルゴリズムに応じて UAG VIP を選択します。

  4. NSX Advanced Load Balancer DNS が IP アドレス VIP1 でクライアントに応答するとします。

  5. これで、クライアントは、サイト 1(つまり VIP1)で NSX Advanced Load Balancer に直接要求を送信します。

  6. クライアントは、L7 TLS ポート 443 で Horizon demo.gslb.appshzn.com への要求を開始します。

  7. NSX Advanced Load Balancer は、ロード バランサのアルゴリズムを使用して、プールのサーバ リストから UAG サーバを選択します。次に NSX Advanced Load Balancer は、場所が UAG VIP FQDN に設定され、選択した UAG サーバ用にカスタムの L7 ポートを使用する、307 リダイレクトで応答します。構成に関するセクションを参照してください。ここでは、Horizon の内部ポートとして、5001 ~ 5005 の範囲のサービス ポートを追加しています。これらのポートは、ここではカスタム ポートと呼ばれます。

以降のすべての要求は、このホスト名と L7 ポートのクライアントから送信され、マッピングされた UAG サーバに送信されます。



サービス ポート 5001 ~ 5005 は、仮想サービスで指定されます。

UAG1 と UAG2 という 2 つのバックエンド UAG サーバがあるとします。最初の要求が、ポート 443 の NSX Advanced Load Balancer L7 仮想サービスに送信されると、NSX Advanced Load Balancer は、構成済みのロード バランシング アルゴリズムに基づいて、これらのサーバ(UAG 1 または UAG 2)のいずれかを選択します。NSX Advanced Load Balancer は、プールから UAG 1 サーバを選択すると、VIP FQDN(場所ヘッダー)および 5001 ポート(UAG 1 サーバ用)を設定した 307 リダイレクトで応答します。同様に、UAG 2 サーバの場合、ポート 5002 が NSX Advanced Load Balancer によって設定されます。さらに別の UAG サーバがある場合は、NSX Advanced Load Balancer 仮想サービスに 5003、5004 などのポートを追加します。

UAG サーバへのカスタム ポート マッピングを取得するには、次のように show pool <pool-name> vs service server map kv を使用します。

    admin:10-50-55-87]: > show pool UAG-MVP-pool vs service server map kv 
              
        +-------------------+---------------------------------------------------------+ 
        
        | Field             | Value                                                   | 
        
        +-------------------+---------------------------------------------------------+ 
        
        | uuid              | se-00505695c1f1                                         | 
        
        | keyval_entries[1] |                                                         | 
        
        |   key             | 10.98.17.153,47873,2                                    | 
        
        |   val             | fe_l7_port:5003,fe_blast_port:20003,fe_pcoip_port:30007 | 
        
        |   local_eol       | 1000                                                    | 
        
        |   version         | 0                                                       | 
        
        |   ishub           | False                                                   | 
        
        | keyval_entries[2] |                                                         | 
        
        |   key             | 10.130.172.191,47873,2                                  | 
        
        |   val             | fe_l7_port:5002,fe_blast_port:20002,fe_pcoip_port:30006 | 
        
        |   local_eol       | 1000                                                    | 
        
        |   version         | 0                                                       | 
        
        |   ishub           | False                                                   | 
        
        | keyval_entries[3] |                                                         | 
        
        |   key             | 10.130.172.192,47873,2                                  | 
        
        |   val             | fe_l7_port:5001,fe_blast_port:20001,fe_pcoip_port:30005 | 
        
        |   local_eol       | 1000                                                    | 
        
        |   version         | 0                                                       | 
        
        |   ishub           | False                                                   | 
        
        +-------------------+---------------------------------------------------------+ 

次に示すように、show pool <pool-name> vs service server map table を使用します。

[admin:10-50-55-87]: > show pool UAG-MVP-pool vs service server map table 
        
        +--------------------------------+--------------------+ 
        
        | Field                          | Value              | 
        
        +--------------------------------+--------------------+ 
        
        | uuid                           | se-00505695c1f1    | 
        
        | vs_service_server_map_entry[1] |                    | 
        
        |   app_service_port             | 5001               | 
        
        |   app_service_type             | HORIZON_INTERNAL   | 
        
        |   ip_port_str                  | 10.130.172.192:443 | 
        
        | vs_service_server_map_entry[2] |                    | 
        
        |   app_service_port             | 5002               | 
        
        |   app_service_type             | HORIZON_INTERNAL   | 
        
        |   ip_port_str                  | 10.130.172.191:443 | 
        
        | vs_service_server_map_entry[3] |                    | 
        
        |   app_service_port             | 5003               | 
        
        |   app_service_type             | HORIZON_INTERNAL   | 
        
        |   ip_port_str                  | 10.98.17.153:443   | 
        
        | vs_service_server_map_entry[4] |                    | 
        
        |   app_service_port             | 20001              | 
        
        |   app_service_type             | HORIZON_BLAST      | 
        
        |   ip_port_str                  | 10.130.172.192:443 | 
        
        | vs_service_server_map_entry[5] |                    | 
        
        |   app_service_port             | 20002              | 
        
        |   app_service_type             | HORIZON_BLAST      | 
        
        |   ip_port_str                  | 10.130.172.191:443 | 
        
        | vs_service_server_map_entry[6] |                    | 
        
        |   app_service_port             | 20003              | 
        
        |   app_service_type             | HORIZON_BLAST      | 
        
        |   ip_port_str                  | 10.98.17.153:443   | 
        
        | vs_service_server_map_entry[7] |                    | 
        
        |   app_service_port             | 30005              | 
        
        |   app_service_type             | HORIZON_PCOIP      | 
        
        |   ip_port_str                  | 10.130.172.192:443 | 
        
        | vs_service_server_map_entry[8] |                    | 
        
        |   app_service_port             | 30006              | 
        
        |   app_service_type             | HORIZON_PCOIP      | 
        
        |   ip_port_str                  | 10.130.172.191:443 | 
        
        | vs_service_server_map_entry[9] |                    | 
        
        |   app_service_port             | 30007              | 
        
        |   app_service_type             | HORIZON_PCOIP      | 
        
        |   ip_port_str                  | 10.98.17.153:443   | 
        
        +--------------------------------+--------------------+

要約すると、NSX Advanced Load Balancer L7 VIP には、プール内の各 UAG サーバ専用に使用するための十分な数のサービス ポートが必要です。最初に十分な数のポートを開いておくことをお勧めします。この NSX Advanced Load Balancer の 307 機能を使用すると、Horizon Server での構成変更を一切またはほとんど行わずに、新しい UAG サーバをサーバ プールに追加できます。特定の L7 サービス ポート(基本ポート以外)への受信クライアント要求は、プール内の特定の UAG サーバにコンテンツ スイッチングされます。

  1. クライアントは、リダイレクトされた FQDN <FQDN> で要求を送信します。

  2. NSX Advanced Load Balancer は、いずれかの UAG サーバに要求を送信します。この例では UAG1 に送信されます。

  3. UAG は XML データで NSX Advanced Load Balancer に応答します。クライアントが、選択した UAG サーバの認証を完了すると、IP/FQDN を含む UAG 応答がセカンダリ プロトコル通信に使用されます。

  4. NSX Advanced Load Balancer はこの応答を解析し、IP/FQDN およびポート XML タグを NSX Advanced Load Balancer の FQDN と L4 サービス ポートに置き換えます。

たとえば、UAG1 の場合は、NSX Advanced Load Balancer の VIP FQDN および 20001/30005 ポート(Blast と PCoIP 用)です。同様に、UAG 2 の場合、NSX Advanced Load BalancerNSX Advanced Load Balancer の VIP FQDN および 20002/30006 ポート(Blast か PCoIP によって異なる)に変更します。

  1. 次に、カスタム ポートを使用して L4 要求が NSX Advanced Load Balancer 仮想サービスに送信されます。カスタム ポートを使用することで、NSX Advanced Load Balancer は、どの UAG サーバに要求を送信する必要があるかを把握します。

  2. NSX Advanced Load Balancer は、適切な UAG サーバに要求を送信します。この例では、UAG1 に送信されます。

  3. UAG は NSX NSX Advanced Load Balancer に応答します。

  4. NSX Advanced Load Balancer はクライアントに応答を送信します。これで、クライアントは、アプリケーションやデスクトップを正常にレンダリングできます。