マルチホストネットワークに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アドレスと標準ポートを使用する
-
追加のIPアドレスを使用して、NetScaler CPXコンテナで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のJobs機能を使用するか、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インスタンスとサーバー (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のジョブ機能を使用するか、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