DockerでのNetScaler CPXインスタンスのデプロイ

NetScaler CPXインスタンスは、QuayコンテナレジストリでDockerイメージファイルとして利用できます。インスタンスをデプロイするには、QuayコンテナレジストリからNetScaler CPXイメージをダウンロードし、docker runコマンドまたはDocker Composeツールを使用してインスタンスをデプロイします。

前提条件

以下を確認してください。

  • Dockerホストシステムが少なくとも以下を備えていること:
    • 1 CPU

    • 2 GB RAM

      注: NetScaler CPXのパフォーマンスを向上させるには、NetScaler CPXインスタンスが起動する処理エンジンの数を定義できます。追加する処理エンジンごとに、Dockerホストに同等のvCPU数とGB単位のメモリが含まれていることを確認してください。たとえば、4つの処理エンジンを追加する場合、Dockerホストには4つのvCPUと4GBのメモリが含まれている必要があります。

  • DockerホストシステムがLinux Ubuntuバージョン14.04以降で稼働していること。

  • ホストシステムにDockerバージョン1.12がインストールされていること。LinuxへのDockerのインストールについては、Docker Documentationを参照してください。

  • Dockerホストがインターネット接続を備えていること。

    : NetScaler CPXは、Ubuntuバージョン16.04.5、カーネルバージョン4.4.0-131-genericで実行すると問題が発生します。したがって、NetScaler CPXをUbuntuバージョン16.04.5、カーネルバージョン4.4.0-131-genericで実行することはお勧めしません。

QuayからのNetScaler CPXイメージのダウンロード

docker pullコマンドを使用してQuayコンテナレジストリからNetScaler CPXイメージをダウンロードし、ご自身の環境にデプロイできます。QuayコンテナレジストリからNetScaler CPXイメージをダウンロードするには、次のコマンドを使用します。

    docker pull quay.io/citrix/citrix-k8s-cpx-ingress:tag

このコマンドでは、タグがCitrix NetScaler CPXイメージを指定します。

例えば、バージョン12.1-51.16をダウンロードしたい場合は、次のコマンドを使用します。

    docker pull quay.io/citrix/citrix-k8s-cpx-ingress:12.1-51.16

NetScaler CPXイメージがDockerイメージにインストールされているかを確認するには、次のコマンドを使用します。

    root@ubuntu:~# docker images | grep 'citrix-k8s-cpx-ingress'
    quay.io/citrix/citrix-k8s-cpx-ingress                  12.1-51.16          952a04e73101        2 months ago        469 MB

: NetScaler CPXの最新機能を利用するには、Quayコンテナレジストリから最新のNetScaler CPXイメージを使用することをお勧めします。

docker run コマンドを使用したNetScaler CPXインスタンスの展開

ホスト上で、ホストにロードしたNetScaler CPX Dockerイメージを使用して、DockerコンテナにNetScaler CPXインスタンスをインストールできます。docker runコマンドを使用して、デフォルトのNetScaler CPX構成でNetScaler CPXインスタンスをインストールします。

重要:

https://www.citrix.com/products/netscaler-adc/cpx-express.htmlからNetScaler CPX Expressをダウンロードした場合は、https://www.citrix.com/products/netscaler-adc/cpx-express.htmlで入手可能なエンドユーザーライセンス契約 (EULA) を読み、理解し、NetScaler CPXインスタンスを展開する際にEULAに同意してください。

次のdocker runコマンドを使用して、DockerコンテナにNetScaler CPXインスタンスをインストールします。

docker run -dt -P --privileged=true --net=host –e NS_NETMODE=”HOST” -e CPX_CORES=<number of cores> --name <container_name> --ulimit core=-1 -e CPX_NW_DEV='<INTERFACES>' -e CPX_CONFIG=’{“YIELD”:”NO”}’ -e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT> e PLATFORM=CP1000 -v <host_dir>:/cpx <REPOSITORY>:<TAG>
<!--NeedCopy-->
docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e CPX_NW_DEV='eth1 eth2' -e CPX_CORES=5 –e CPX_CONFIG='{"YIELD":"No"}' -e LS_IP=10.102.38.134 -e PLATFORM=CP1000 -v /var/cpx:/cpx --name cpx_host cpx:12.1-48.xx
<!--NeedCopy-->

この例では、NetScaler CPX Dockerイメージに基づいてmycpxという名前のコンテナを作成します。

-Pパラメータは必須です。これは、NetScaler CPX Dockerイメージによってコンテナで公開されているポートをDockerにマッピングするように指示します。つまり、ポート9080、22、9443、および161/UDPを、ユーザー定義の範囲からランダムに選択されたDockerホスト上のポートにマッピングします。このマッピングは、競合を避けるために行われます。同じDockerホスト上に複数のNetScaler CPXコンテナを後で作成する場合、ポートマッピングは動的であり、コンテナが起動または再起動されるたびに設定されます。ポートは次のように使用されます。

  • 9080はHTTPに使用されます
  • 9443はHTTPSに使用されます
  • 22はSSHに使用されます
  • 161/UDPはSNMPに使用されます。

静的ポートマッピングが必要な場合は、-pパラメータを使用して手動で設定します。

--privileged=true オプションは、コンテナを特権モードで実行するために使用されます。NetScaler CPX を複数のコアで実行している場合、すべてのシステム特権を NetScaler CPX に提供する必要があります。NetScaler CPX をシングルコアで実行したい場合は、このオプションの代わりに --cap-add=NET_ADMIN オプションを使用する必要があります。--cap-add=NET_ADMIN オプションを使用すると、NetScaler CPX コンテナを完全なネットワーク特権で実行できます。

**--net=host は、コンテナがホストネットワークスタックで実行され、すべてのネットワークデバイスにアクセスできることを指定する標準の docker run コマンドオプションです。

NetScaler CPX をブリッジまたはなしのネットワークで実行している場合は、このオプションを無視してください。

-e NS_NETMODE="HOST" は、NetScaler CPX がホストモードで起動することを指定できる NetScaler CPX 固有の環境変数です。NetScaler CPX がホストモードで起動すると、NetScaler CPX への管理アクセス用にホストマシンに4つのデフォルトのiptableルールを設定します。以下のポートを使用します。

  • HTTP 用の 9995
  • HTTPS 用の 9996
  • SSH 用の 9997
  • SNMP 用の 9998

異なるポートを指定したい場合は、以下の環境変数を使用できます。

  • -e NS_HTTP_PORT=
  • -e NS_HTTPS_PORT=
  • -e NS_SSH_PORT=
  • -e NS_SNMP_PORT=

NetScaler CPXをブリッジネットワークまたはなしネットワークで実行している場合は、この環境変数を無視してください。

-e CPX_CORES は、オプションのNetScaler CPX固有の環境変数です。NetScaler CPXコンテナが起動する処理エンジンの数を定義することで、NetScaler CPXインスタンスのパフォーマンスを向上させることができます。

追加する処理エンジンごとに、Dockerホストに同等の数のvCPUとGB単位のメモリが含まれていることを確認してください。たとえば、4つの処理エンジンを追加したい場合、Dockerホストには4つのvCPUと4GBのメモリが含まれている必要があります。

-e EULA = yes は、必須のNetScaler CPX固有の環境変数であり、https://www.citrix.com/products/netscaler-adc/cpx-express.html で入手可能なエンドユーザーライセンス契約 (EULA) を読み、理解したことを確認するために必要です。

-e PLATFORM=CP1000 パラメータは、NetScaler CPXライセンスの種類を指定します。

ホストネットワークでDockerを実行している場合、-e CPX_NW_DEV 環境変数を使用して、専用のネットワークインターフェースをNetScaler CPXコンテナに割り当てることができます。ネットワークインターフェースは空白で区切って定義する必要があります。定義したネットワークインターフェースは、NetScaler CPXコンテナをアンインストールするまでNetScaler CPXコンテナによって保持されます。NetScaler CPXコンテナがプロビジョニングされると、割り当てられたすべてのネットワークインターフェースがNetScalerネットワーク名前空間に追加されます。

NetScaler CPXをブリッジネットワークで実行している場合、コンテナネットワークを変更できます。たとえば、コンテナへの別のネットワーク接続を構成したり、既存のネットワークを削除したりできます。その後、NetScaler CPXコンテナを再起動して、更新されたネットワークを使用するようにしてください。

docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e EULA=yes -e CPX_NW_DEV='eth1 eth2' -e CPX_CORES=5 -e PLATFORM=CP1000 --name cpx_host cpx:12.0-53.x
<!--NeedCopy-->

-e CPX_CONFIG は、NetScaler CPXコンテナのスループットパフォーマンスを制御できるNetScaler CPX固有の環境変数です。NetScaler CPXが処理する受信トラフィックを受け取らない場合、アイドル時にCPUを解放するため、スループットパフォーマンスが低下します。このようなシナリオでは、CPX_CONFIG 環境変数を使用してNetScaler CPXコンテナのスループットパフォーマンスを制御できます。CPX_CONFIG 環境変数に以下の値をJSON形式で指定する必要があります。

  • アイドルシナリオでNetScaler CPXコンテナにCPUを解放させたい場合は、{"YIELD” : “Yes”} を定義します。
  • アイドルシナリオでNetScaler CPXコンテナにCPUを解放させないようにして、高いスループットパフォーマンスを得たい場合は、{“YIELD” : “No”} を定義します。
docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e EULA=yes -e CPX_CORES=5 –e CPX_CONFIG='{"YIELD":"No"}' -e PLATFORM=CP1000 --name cpx_host cpx:12.0-51.x
<!--NeedCopy-->
docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e EULA=yes -e CPX_CORES=5 –e CPX_CONFIG='{"YIELD":"Yes"}' -e PLATFORM=CP1000 --name cpx_host cpx:12.0-51.xx
<!--NeedCopy-->

–v パラメータは、NetScaler CPXマウントディレクトリ /cpx のマウントポイントを指定するオプションのパラメータです。マウントポイントは、ホスト上のディレクトリであり、その中に /cpx ディレクトリをマウントします。/cpx ディレクトリには、ログ、構成ファイル、SSL証明書、およびコアダンプファイルが保存されます。この例では、マウントポイントは /var/cpx であり、NetScaler CPXマウントディレクトリは /cpx です。

ライセンスを購入した場合、または評価ライセンスをお持ちの場合は、ライセンスをライセンスサーバーにアップロードし、-e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT> パラメータを使用してdocker runコマンドでライセンスサーバーの場所を指定できます。この場合、EULAに同意する必要はありません。

docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e CPX_CORES=5 –e CPX_CONFIG='{"YIELD":"No"}' -e LS_IP=10.102.38.134 -e PLATFORM=CP1000 --name cpx_host cpx:12.0-51.xx
<!--NeedCopy-->

ここで、:

  • LS_IP_ADDRESS はライセンスサーバーのIPアドレスです。
  • LS_PORT はライセンスサーバーのポートです。

システムで実行されているイメージと、標準ポートにマッピングされているポートは、次のコマンドを使用して表示できます。docker ps

Docker Compose を使用した NetScaler CPX インスタンスの展開

Docker の Compose ツールを使用して、単一の NetScaler CPX インスタンスまたは複数の NetScaler CPX インスタンスをプロビジョニングできます。Compose を使用して NetScaler CPX インスタンスをプロビジョニングするには、まず Compose ファイルを作成する必要があります。このファイルには、NetScaler CPX イメージ、NetScaler CPX インスタンス用に開くポート、および NetScaler CPX インスタンスの特権が指定されます。

重要

ホストに Docker Compose ツールがインストールされていることを確認してください。

複数の NetScaler CPX インスタンスをプロビジョニングするには:

  1. Compose ファイルを作成します。ここで、:
  • <service-name> は、プロビジョニングするサービスの名前です。
  • image:<repository>:<tag> は、NetScaler CPX イメージのリポジトリとバージョンを示します。
  • privileged: true は、NetScaler CPX インスタンスにすべてのルート特権を提供します。
  • cap_add は、NetScaler CPX インスタンスにネットワーク特権を提供します。
  • <host_directory_path> は、NetScaler CPX インスタンス用にマウントする Docker ホスト上のディレクトリを示します。
  • <number_processing_engine> は、NetScaler CPX インスタンスで起動する処理エンジンの数です。処理エンジンを追加するごとに、Docker ホストに同数の vCPU と同量のメモリ (GB 単位) が含まれていることを確認してください。たとえば、4 つの処理エンジンを追加する場合、Docker ホストには 4 つの vCPU と 4 GB のメモリが含まれている必要があります。

compose ファイルは通常、次のような形式に従います。

    <service-name>:
    container_name:
    image: <repository>:<tag>
    ports:
        - 22
        - 9080
        - 9443
        - 161/udp
        - 35021-35030
    tty: true
    cap_add:
        - NET_ADMIN
    ulimits:
        core: -1
    volumes:
        - <host_directory_path>:/cpx
    environment:
        - EULA=yes
        - CPX_CORES=<number_processing_engine>
        - CPX_CONFIG='{"YIELD":"Yes"}'
<!--NeedCopy-->
    CPX_0:
    container_name: CPX_0
    image: cpx:12.0-53.xx
    ports:
        -  9443
        -  22
        -  9080
        -  161/udp
        -  35021-35030
    tty: true
    cap_add:
        - NET_ADMIN
    ulimits:
        core: -1
    volumes:
        - /root/test:/cpx
    environment:
        -  CPX_CORES=2
        -  EULA=yes
<!--NeedCopy-->

単一のNetScaler CPXインスタンスをプロビジョニングする場合は、composeファイルに次の行を追加する必要があります: container_name:<name_of_container>

複数のNetScaler CPXインスタンスをプロビジョニングするには、次のコマンドを実行します: docker-compose -f <compose_file_name> scale <service-name>=<number of instances> up –d docker-compose -f docker-compose.yml scale cpxlb=3 up –d

単一のNetScaler CPXインスタンスをプロビジョニングする場合は、次のコマンドを実行します: docker-compose -f <compose_file_name> up –d

DockerでのNetScaler CPXインスタンスのデプロイ