Product Documentation

マルチホストネットワークでのNetScaler CPXの展開

2016年5月13日

データセンター内の実稼働環境では、マルチホストネットワークに展開したNetScaler CPXインスタンスを構成して、負荷分散機能を使用できます。さらに、機能や分析データを監視することもできます。

マルチホストネットワークでは、NetScaler CPXインスタンス、バックエンドサーバー、およびクライアントは、別々のホストに展開されます。マルチホストのトポロジを実稼働環境で使用することで、NetScaler CPXインスタンスが一連のコンテナベースのアプリケーション、サーバー、さらには物理サーバーの負荷を分散します。

ここでは、次の3つのマルチホストトポロジについて説明します。

トポロジ1:NetScaler CPXとバックエンドサーバーが同一ホスト、クライアントが別のネットワークにある場合

このトポロジでは、NetScaler CPXインスタンスとデータベースサーバーは同じDockerホストでプロビジョニングされますが、クライアントトラフィックはネットワークの別の場所から発信されます。このトポロジを実稼働環境で使用して、NetScaler CPXインスタンスが一連のコンテナベースのアプリケーションやサーバーの負荷を分散するようにできます。

次の図は、このトポロジを示しています。

ローカライズされた画像

この例では、NetScaler CPXインスタンス(172.17.0.4)と2台のサーバー(DB1(172.17.0.10)およびDB2(172.17.0.11))は、IPアドレス10.102.29.100の同じDockerホストでプロビジョニングされています。クライアントは、ネットワークの他の場所にあります。

インターネットからのクライアント要求は、NetScaler CPXインスタンスに構成されているVIPで受信されます。そこから、要求が2台のサーバーに分散されます。

このトポロジを構成するには、次の2つの方法があります。

方法1: VIPで追加IPアドレスと標準ポートを使用する

  1. NetScaler CPX IPアドレスの代わりに追加のIPアドレスを使用して、VIPをNetScaler CPXコンテナーに構成します。これにより、クライアント要求の受信に、コンテナの標準ポート80を使用できるようになります。
  2. Dockerホストに追加のIPアドレスを構成します。
  3. Dockerホストの追加IPアドレスで受信したすべてのトラフィックをVIPの追加IPアドレスに転送する、NAT規則を構成します。
  4. 2台のサーバーをNetScaler CPXインスタンスのサービスとして構成します。
  5. 最後に、これらのサービスをVIPにバインドします。

この構成例では、10.x.x.xネットワークはパブリックネットワークを表していることに注意してください。

このシナリオ例を構成するには、NetScaler MASのジョブ機能またはNITRO APIを使用して、次のコマンドを実行します。

    add service s1 172.17.0.10 HTTP 80
    add service s2 172.17.0.11 HTTP 80
    add lb vserver cpx-vip HTTP 172.17.4.100 80
    bind lb vserver cpx-vip s1
    bind lb vserver cpx-vip s2

Linux Shellプロンプトで次のコマンドを実行して、Dockerホストの追加のパブリックIPアドレスとNAT規則を構成します。

    ip addr add 10.102.29.103/24 dev eth0
    iptables -t nat -A PREROUTING -p ip  -d 10.102.29.103 -j DNAT --to-destination 172.17.4.100

方法2: VIPでNetScaler CPX IPアドレスを使用し、以下のポートマッピングを構成する:

  1. VIPと2つのサービスをNetScaler CPXインスタンスに構成します。このVIPでは、標準以外のポート(81)を使用します。
  2. サービスをVIPにバインドします。
  3. Dockerホストのポート50000で受信したすべてのトラフィックを、VIPとポート81に転送するNAT規則を構成します。

このシナリオ例を構成するには、3つのDockerホストすべてでNetScaler CPXコンテナを作成する間に、Linux Shellプロンプトで次のコマンドを実行します。

    docker run -dt -p 22 -p 80 -p 161/udp -p 50000:81 --ulimit core=-1 --privileged=true cpx:6.2

NetScaler CPXインスタンスがプロビジョニングされたら、NetScaler MASのジョブ機能かNitro APIを使用して、次のコマンドを実行します。

    add service s1 172.17.0.10 http 80
    add service s2 172.17.0.11 http 80
    add lb vserver cpx-vip HTTP 172.17.0.4 81
    bind lb vserver cpx-vip s1
    bind lb vserver cpx-vip s2

注:

NetScaler CPXインスタンスのプロビジョニング中にポートマッピングを構成しなかった場合は、Linux Shellプロンプトで次のコマンドを実行してNAT規則を構成します:

iptables -t nat -A PREROUTING -p tcp -m addrtype –dst-type LOCAL -m tcp –dport 50000 -j DNAT –to-destination172.17.0.4:81

トポロジ2:NetScaler CPXと物理サーバー/クライアントが別々に配置されている場合

このトポロジでは、NetScaler CPXインスタンスのみがDockerホストでプロビジョニングされます。クライアントとサーバーはコンテナベースではなく、ネットワークの別の場所にあります。

この環境では、物理サーバーのトラフィックを負荷分散するように、NetScaler CPXインスタンスを構成できます。

次の図は、このトポロジを示しています。

ローカライズされた画像

この例では、プロキシとして機能するNetScaler CPXコンテナ(172.17.0.4)が、クライアントと物理サーバーの間に配置されます。DB1(10.102.29.105)とDB2(10.102.29.110)の2台のサーバーは、ネットワーク上のDockerホスト以外の場所にあります。インターネットからのクライアント要求は、NetScaler CPXインスタンスで受信されます。そこから、要求が2台のサーバーに分散されます。

NetScaler CPXを介したこのクライアントとサーバー間の通信を可能にするには、最初に、NetScaler CPXコンテナの作成中にポートマッピングを構成する必要があります。次に、NetScaler CPXコンテナに、2台のサーバーを表す2つのサービスを構成します。最後に、NetScaler CPX IPアドレスと、マッピングされた非標準HTTPポート8080を使用して、仮想サーバーを構成します。

この構成例では、10.x.x.xネットワークはパブリックネットワークを表していることに注意してください。

このシナリオ例を構成するには、NetScaler CPXコンテナを作成する間に、Linux Shellプロンプトで次のコマンドを実行します。

    docker run -dt -p 22 -p 80 -p 161/udp -p 8080:8080 --ulimit core=-1 --privileged=true cpx:6.2

次に、NetScaler MASのジョブ機能を使用するか、Nitro APIを使用して、次のコマンドを実行します。

    add service s1 HTTP 10.102.29.105 80
    add service s2 HTTP 10.102.29.110 80
    add lb vserver cpx-vip HTTP 172.17.0.4 8080
    bind lb vserver cpx-vip s1
    bind lb vserver cpx-vip s2

トポロジ3:NetScaler CPXとサーバーが別々のホストでプロビジョニングされている場合

このトポロジでは、NetScaler CPXインスタンスとデータベースサーバーは別々のDockerホストでプロビジョニングされ、クライアントトラフィックはインターネットから発信されます。このトポロジを実稼働環境で使用して、NetScaler CPXインスタンスが一連のコンテナベースのアプリケーションやサーバーの負荷を分散するようにできます。

次の図は、このトポロジを示しています。

ローカライズされた画像

この例で、NetScaler CPXインスタンスと1台のサーバー(DB1)は、IPアドレス10.102.29.100の同じDockerホストでプロビジョニングされています。その他4台のサーバー(DB2、DB3、DB4、およびDB5)は、2つの異なるDockerホスト(10.102.29.105および10.102.29.110)でプロビジョニングされています。

インターネットからのクライアント要求はNetScaler CPXインスタンスで受信され、そこから、要求が5台のサーバーに分散されます。この通信を有効にするには、次のように構成する必要があります。

  1. NetScaler CPXコンテナの作成中にポートマッピングを設定します。この例では、トラフィックをコンテナのポート8080からホストのポート8080に転送する必要があります。クライアント要求がホストのポート8080に到達すると、CPXコンテナのポート8080にマッピングされます。
  2. 5台のサーバーをNetScaler CPXインスタンスのサービスとして構成します。これらのサービスを設定するには、該当するDockerホストのIPアドレスとマッピングされたポートの組み合わせを使用する必要があります。
  3. クライアント要求を受け取るNetScaler CPXインスタンスのVIPを構成します。このVIPは、NetScaler CPXのIPアドレスと、ホストのポート8080にマッピングされたポート8080で表します。
  4. 最後に、これらのサービスをVIPにバインドします。

この構成例では、10.x.x.xネットワークはパブリックネットワークを表していることに注意してください。

このシナリオ例を構成するには、NetScaler CPXコンテナを作成する間に、Linux Shellプロンプトで次のコマンドを実行します。

    docker run -dt -p 22 -p 80 -p 161/udp -p 8080:8080 --ulimit core=-1 --privileged=true cpx:6.2

NetScaler MASのジョブ機能を使用するか、Nitro APIを使用して、次のコマンドを実行します。

    add service s1 10.102.29.100 HTTP 8081
    add service s2 10.102.29.105 HTTP 8081
    add service s3 10.102.29.105 HTTP 8082
    add service s4 10.102.29.110 HTTP 8081
    add service s5 10.102.29.110 HTTP 8082
    add lb vserver cpx-vip HTTP 172.17.0.2 8080
    bind lb vserver cpx-vip s1
    bind lb vserver cpx-vip s2
    bind lb vserver cpx-vip s3
    bind lb vserver cpx-vip s4
    bind lb vserver cpx-vip s5