マルチホストネットワークでの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アドレスと標準ポートを使用する
-
NetScaler CPXコンテナで、別のIPアドレスを使用してVIPを構成します。
-
Dockerホストに別のIPアドレスを構成します。
-
NATルールを構成して、Dockerホストの追加IPアドレスで受信したすべてのトラフィックをVIPの追加IPアドレスに転送します。
-
NetScaler CPXインスタンス上で、2つのサーバーをサービスとして構成します。
-
最後に、サービスをVIPにバインドします。
この例の設定では、10.x.x.x ネットワークはパブリックネットワークを示していることに注意してください。
このシナリオ例を設定するには、NetScaler Console のジョブ機能を使用するか、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
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
方法 2: VIP に NetScaler CPX IP アドレスを使用し、ポートマッピングを設定する:
-
NetScaler CPX インスタンスで VIP と 2 つのサービスを設定します。VIP には非標準ポート 81 を使用します。
-
サービスをVIPにバインドします。
-
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
NetScaler CPX インスタンスがプロビジョニングされたら、NetScaler Console のジョブ機能を使用するか、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 シェルプロンプトで次のコマンドを実行して 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コンテナの作成時にポートマッピングを構成する必要があります。次に、2つのサーバーを表すようにNetScaler CPXコンテナ上で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
次に、NetScaler Consoleのジョブ機能を使用するか、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) は、10.102.29.105と10.102.29.110の2つの異なるDockerホストにプロビジョニングされています。
インターネットから発信されたクライアント要求はNetScaler CPXインスタンスで受信され、その後、5つのサーバーに要求が分散されます。この通信を有効にするには、以下を構成する必要があります。
-
NetScaler CPXコンテナの作成時にポートマッピングを設定します。この例では、コンテナ上のポート8080をホスト上のポート8080に転送する必要があることを意味します。クライアント要求がホストのポート8080に到着すると、CPXコンテナのポート8080にマッピングされます。
-
NetScaler CPXインスタンス上で5つのサーバーをサービスとして構成します。これらのサービスを設定するには、それぞれのDockerホストのIPアドレスとマッピングされたポートの組み合わせを使用する必要があります。
-
クライアント要求を受信するために、NetScaler CPXインスタンス上にVIPを構成します。このVIPは、NetScaler CPXのIPアドレスと、ホストのポート8080にマッピングされたポート8080で表される必要があります。
-
最後に、サービスを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
NetScaler ConsoleのJobs機能を使用するか、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