マルチホストネットワークにNetScaler CPXを展開する

マルチホストネットワーク内のNetScaler CPXインスタンスは、データセンターの運用環境でロードバランシング機能を提供するように構成できます。さらに、監視機能と分析データも提供できます。

マルチホストネットワークでは、NetScaler CPXインスタンス、バックエンドサーバー、およびクライアントは異なるホストに展開されます。NetScaler CPXインスタンスがコンテナベースのアプリケーションとサーバー、あるいは物理サーバーのセットをロードバランシングする運用環境で、マルチホストトポロジを使用できます。

トポロジ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. 追加のIPアドレスを使用して、NetScaler CPXコンテナ上にVIPを構成します。
  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
<!--NeedCopy-->

Docker ホスト用の追加のパブリック IP アドレスと NAT ルールを構成するには、Linux シェルプロンプトで次のコマンドを実行します。

    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
<!--NeedCopy-->

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

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

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

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

<!--NeedCopy-->

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
<!--NeedCopy-->

注:

NetScaler CPX インスタンスのプロビジョニング中にポートマッピングを構成していない場合は、Linux シェルプロンプトで次のコマンドを実行して NAT ルールを構成します。

iptables -t nat -A PREROUTING -p tcp -m addrtype –dst-type LOCAL -m tcp –dport 50000 -j DNAT –to-destination 172.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) は、ネットワーク上のDockerホストの外部に存在します。クライアントからのリクエストはインターネットから発信され、NetScaler CPXで受信され、2つのサーバーに分散されます。

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

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

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

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

次に、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
<!--NeedCopy-->

トポロジ3:異なるホストにプロビジョニングされたNetScaler CPXとサーバー

このトポロジでは、NetScaler CPXインスタンスとデータベースサーバーは異なるDockerホストにプロビジョニングされ、クライアントトラフィックはインターネットから発信されます。このトポロジは、NetScaler CPXインスタンスがコンテナベースのアプリケーションまたはサーバーのセットを負荷分散する本番環境の展開で使用される場合があります。

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

ローカライズされた画像

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

インターネットから発信されるクライアントリクエストはNetScaler CPXインスタンスで受信され、その後、5つのサーバーにリクエストが分散されます。この通信を有効にするには、以下を構成する必要があります。

  1. NetScaler CPXコンテナの作成時にポートマッピングを設定します。この例では、コンテナ上のポート8080をホスト上のポート8080に転送する必要があることを意味します。クライアントリクエストがホストのポート8080に到着すると、CPXコンテナのポート8080にマッピングされます。

  2. NetScaler CPXインスタンス上で5つのサーバーをサービスとして構成します。これらのサービスを設定するには、それぞれのDockerホストのIPアドレスとマッピングされたポートの組み合わせを使用する必要があります。

  3. クライアント要求を受信するために、NetScaler CPXインスタンス上でVIPを構成します。このVIPは、ホストのポート8080にマッピングされたNetScaler CPXのIPアドレスとポート8080で表される必要があります。

  4. 最後に、サービスをVIPにバインドします。

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

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

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

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
<!--NeedCopy-->
マルチホストネットワークにNetScaler CPXを展開する