DockerでのNetScaler CPXインスタンスの展開
NetScaler CPXインスタンスは、Docker StoreでDockerイメージファイルの形式で提供されます。インスタンスを展開するには、NetScaler CPXイメージをDocker Storeからダウンロードし、docker run
コマンドまたはDocker Composeツールを使用してインスタンスを展開します。
前提条件
以下の点について確認してください。
- Dockerホストシステムが少なくとも次のものを備えていること:
- CPU 1つ
-
2GBのRAM
注: NetScaler CPXのパフォーマンスを向上させるために、NetScaler CPXインスタンスを起動する処理エンジンの数を定義できます。処理エンジンを追加するごとに、Dockerホストにエンジンと同じ数のvCPUとGBのメモリが備えられていることを確認してください。たとえば、4つの処理エンジンを追加する場合は、Dockerホストは4つのvCPUと4GBのメモリを備えている必要があります。
- DockerホストシステムがLinux Ubuntuのバージョン14.04以降を実行している。
- Dockerバージョン1.12がLinuxホストシステムにインストールされている。LinuxでのDockerのインストールについて詳しくは、次を参照してください。https://docs.docker.com/engine/installation/ubuntulinux/
- Dockerホストからインターネットに接続できる。
Docker StoreからのNetScaler CPXイメージのダウンロード
Docker Storeから最新のNetScaler CPX Dockerイメージファイルをダウンロードし、NetScaler CPX Dockerイメージをロードします。そのためには、Dockerホストで次のコマンドを実行します:
docker pull store/citrix/netscalercpx:12.0-53.xx
NetScaler CPX Dockerイメージのダウンロード後に次のコマンドを使用すると、イメージの詳細を表示できます:
docker images
次に例を示します:
root@ubuntu:~# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
cpx 12.0-53.xx 2e97aadf918b 43 hours ago 414 MB
この例の出力にある、次のフィールドに注意します。
- REPOSITORY:イメージが格納されている名前空間を指定します。
- TAG:インストールされているNetScaler CPXイメージのバージョンを示します。
- IMAGE ID:Dockerホストに含まれるイメージの一意のIDを示します。
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コマンドを使用して、NetScaler CPXインスタンスをDockerコンテナにインストールします:
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>
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.0-51.xx
この例では、NetScaler CPX Dockerイメージに基づいて、「mycpx」という名前のコンテナを作成します。
-P
パラメーターは必ず指定する必要があります。これによりDockerは、コンテナ内でNetScaler CPX Dockerイメージによって公開されるポート(ポート80、22、443、161/UDP)を、ユーザー定義範囲からランダムに選択されたDockerホスト上のポートにマッピングします。後で同じDockerホストに複数のNetScaler CPXコンテナを作成すると、競合を避けるためにこれが行われます。ポートマッピングは動的であり、コンテナが起動または再起動するごとに設定されます。ポートは次のように使用されます。
- 80はHTTP用
- 443はHTTPs用
- 22はSSH用
- 161/UDPはSNMP用。
静的なポートマッピングを行う場合は、-pパラメーターを使用して手動でポートを設定します。
--privileged=true
オプションは、特権モードでコンテナを実行するために使用されます。複数のコアでNetScaler CPXを実行している場合、システムのすべての特権をNetScaler CPXに付与する必要があります。1つのコアでNetScaler CPXを実行する場合は、このオプションではなく、完全なネットワーク特権でNetScaler CPXコンテナを実行できるようにする --cap-add=NET_ADMIN
オプションを使用する必要があります。
--net=host
は標準的なdocker runコマンドオプションで、コンテナがホストネットワークスタックで実行され、すべてのネットワークデバイスへのアクセス権を持つよう指定します。
注
ブリッジまたはネットワークのない状態でNetScaler CPXを実行する場合、このオプションは使用しません。
-e NS_NETMODE="HOST"
は、NetScaler CPXをホストモードで起動するよう指定するNetScaler CPX固有の環境変数です。NetScaler CPXをホストモードで起動すると4つのデフォルトiptable規則がホストマシン上に構成され、NetScaler CPXに管理アクセスを行うために使用されます。この場合は次のポートを使用します:
- 9995はHTTP用
- 9996はHTTPS用
- 9997はSSH用
- 9998はSNMP用
異なるポートを指定する場合は、次の環境変数を使用できます。
- -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を実行しており、コンテナに別のネットワーク接続を構成したり既存のネットワークを削除したりするなどしてDockerまたはコンテナネットワークを変更する場合は、更新したネットワークを使用するために必ず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
-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
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
–v
パラメーターは、NetScaler CPXマウントディレクトリ/cpx
のマウントポイントを指定するオプションパラメーターです。マウントポイントはホスト上のディレクトリであり、そこに/cpx
ディレクトリをマウントします。/cpx
ディレクトリには、ログ、構成ファイル、SSL証明書、コアダンプファイルが保存されています。この例では、マウントポイントは/var/cpx
で、NetScaler CPXマウントディレクトリは/cpx
です。
ライセンスを購入した場合、または評価ライセンスを所有している場合は、そのライセンスをライセンスサーバーにアップロードして、docker runコマンドを-e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT>
パラメーターを使用してライセンスサーバーの場所を指定できます。この場合は、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
各オプションの意味は次のとおりです:
-
は、ライセンスサーバーのIPアドレスです。 -
は、ライセンスサーバーのポートです。
次のコマンドを使用すると、システムで実行されているイメージと、標準ポートにマップされたポートを表示できます: docker ps
Docker Composeを使用したNetScaler CPXインスタンスの展開
Docker Composeツールを使用して、単一または複数のNetScaler CPXインスタンスをプロビジョニングできます。Composeを使用してNetScaler CPXインスタンスをプロビジョニングするには、最初にComposeファイルを作成して、NetScaler CPXイメージ、NetScaler CPXインスタンス用に開くポート、およびNetScaler CPXインスタンスの特権を指定する必要があります。
重要
Docker Composeツールをホストにインストールしていることを確認してください。
複数のNetScaler CPXインスタンスをプロビジョニングするには:
- 次の場所にComposeファイルを作成します:
- <service-name> は、プロビジョニングするサービスの名前です。
- image:<repository>:<tag>は、NetScaler CPXイメージのリポジトリとバージョンを示します。
- privileged: trueは、NetScaler CPXインスタンスのすべてのroot特権を提供します。
- cap_add は、NetScaler CPXインスタンスにネットワーク特権を提供します。
- <host_directory_path> は、NetScaler CPXインスタンスをマウントするDockerホストのディレクトリを指定します。
- <number_processing_engine> は、NetScaler CPXインスタンスを起動する処理エンジンの数です。処理エンジンを追加するごとに、Dockerホストにエンジンと同じ数のvCPUとGBのメモリが備えられていることを確認してください。たとえば、4つの処理エンジンを追加する場合は、Dockerホストは4つのvCPUと4GBのメモリを備えている必要があります。
Composeファイルは、一般的に次のような形式に従います:
<service-name>:
container_name:
image: <repository>:<tag>
ports:
- 22
- 80
- 443
- 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"}'
CPX_0:
container_name: CPX_0
image: cpx:12.0-53.xx
ports:
- 443
- 22
- 80
- 161/udp
- 35021-35030
tty: true
cap_add:
- NET_ADMIN
ulimits:
core: -1
volumes:
- /root/test:/cpx
environment:
- CPX_CORES=2
- EULA=yes
注: 単一の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