在 Docker 中部署 NetScaler CPX 实例
NetScaler CPX 实例在 Quay 容器注册表中作为 Docker 映像文件提供。要部署实例,请从 Quay 容器注册表下载 NetScaler CPX 映像,然后使用 docker run
命令或 Docker 撰写工具部署实例。
必备条件
请确保:
- Docker 主机系统至少具有:
-
1 个 CPU
-
2 GB RAM
注意:为了获得更好的 NetScaler CPX 性能,您可以定义希望 NetScaler CPX 实例启动的处理引擎数量。对于您添加的每个附加处理引擎,请确保 Docker 主机包含相应数量的 vCPU 和内存量 (GB)。例如,如果您要添加 4 个处理引擎,则 Docker 主机必须包含 4 个 vCPU 和 4 GB 内存。
-
-
Docker 主机系统运行 Linux Ubuntu 版本 14.04 或更高版本。
-
Docker 版本 1.12 安装在主机系统上。有关在 Linux 上安装 Docker 的信息,请参阅 Docker 文档。
-
Docker 主机有 Internet 连接。
注意:NetScaler CPX 在 ubuntu 版本 16.04.5、内核版本 4.4.0-131-generic 上运行时出现问题。因此,不建议在 ubuntu 版本 16.04.5 内核版本 4.4.0-131-generic 上运行 NetScaler CPX。
从 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
注意:建议使用来自 Quay 容器注册表的最新 NetScaler CPX 映像来使用 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 实例时接受最终用户许可协议。
使用以下 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
参数是必需的。它让 Docker 映射 NetScaler CPX 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 在主机模式下启动,它会在主机上配置四条默认 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 和 4 GB 内存。
-e EULA = yes
是必需的 NetScaler CPX 特定的环境变量,这是验证您已阅读并理解此处提供的最终用户许可协议 (EULA) 所必需的:https://www.citrix.com/products/netscaler-adc/cpx-express.html。
-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 容器的吞吐量性能。需要以 JSON 格式向 CPX_CONFIG
环境变量提供以下值:
- 如果您希望 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
。
如果您购买了许可证或具有评估版许可证,则可以将许可证上载到许可证服务器,并使用 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
<!--NeedCopy-->
其中:
-
LS_IP_ADDRESS
是许可证服务器的 IP 地址。 -
LS_PORT
是许可证服务器的端口。
可以使用以下命令来查看您的系统上运行的映像以及映射到标准端口的端口:docker ps
使用 Docker Compose 部署 NetScaler CPX 实例
可以使用 Docker Compose 工具来预配一个 NetScaler CPX 实例或多个 NetScaler CPX 实例。要使用 Compose 配置 NetScaler CPX 实例,必须先编写一个撰写文件。此文件指定了 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> 指示 Docker 主机上要为 NetScaler CPX 实例装载的目录。
- <number_processing_engine> 是您希望 NetScaler CPX 实例启动的处理引擎数。对于每个附加处理引擎,请确保 Docker 主机包含相应数量的 vCPU 和内存量 (GB)。例如,如果您要添加 4 个处理引擎,则 Docker 主机必须包含 4 个 vCPU 和 4 GB 内存。
编写文件的格式通常类似于:
<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 实例,则必须在撰写文件中添加以下行: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