Implementación de una instancia de NetScaler CPX en Docker
Las instancias de NetScaler CPX están disponibles como un archivo de imagen de Docker en el registro de contenedores de Quay. Para implementar una instancia, descargue la imagen de NetScaler CPX del registro de contenedores de Quay y, a continuación, implemente la instancia mediante el comando docker run o la herramienta Docker Compose.
Requisitos previos
Asegúrese de que:
- El sistema host de Docker tiene al menos:
-
1 CPU
-
2 GB de RAM
Nota: Para un mejor rendimiento de NetScaler CPX, puede definir el número de motores de procesamiento que desea que inicie la instancia de NetScaler CPX. Por cada motor de procesamiento adicional que agregue, asegúrese de que el host de Docker contenga el número equivalente de vCPU y la cantidad de memoria en GB. Por ejemplo, si desea agregar 4 motores de procesamiento, el host de Docker debe contener 4 vCPU y 4 GB de memoria.
-
-
El sistema host de Docker ejecuta la versión 14.04 o posterior de Linux Ubuntu.
-
Docker versión 1.12 está instalado en el sistema host. Para obtener información sobre la instalación de Docker en Linux, consulte la Documentación de Docker.
-
El host de Docker tiene conectividad a Internet.
Nota: NetScaler CPX tiene problemas al ejecutarse en Ubuntu versión 16.04.5, versión de kernel 4.4.0-131-generic. Por lo tanto, no se recomienda ejecutar NetScaler CPX en Ubuntu versión 16.04.5, versión de kernel 4.4.0-131-generic.
Descarga de la imagen de NetScaler CPX desde Quay
Puede descargar la imagen de NetScaler CPX del registro de contenedores de Quay mediante el comando docker pull e implementarla en su entorno. Utilice el siguiente comando para descargar la imagen de NetScaler CPX del registro de contenedores de Quay:
docker pull quay.io/citrix/citrix-k8s-cpx-ingress:tag
En este comando, la etiqueta especifica la imagen de Citrix NetScaler CPX.
Por ejemplo, si desea descargar la versión 12.1-51.16, utilice el siguiente comando:
docker pull quay.io/citrix/citrix-k8s-cpx-ingress:12.1-51.16
Utilice el siguiente comando para verificar si la imagen de NetScaler CPX está instalada en las imágenes de 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
Nota: Se recomienda utilizar la última imagen de NetScaler CPX del registro de contenedores de Quay para aprovechar las últimas funciones de NetScaler CPX.
Implementación de la instancia de NetScaler CPX mediante el comando docker run
En el host, puede instalar una instancia de NetScaler CPX en el contenedor de Docker utilizando la imagen de Docker de NetScaler CPX que cargó en el host. Utilizando el comando docker run, instale la instancia de NetScaler CPX con la configuración predeterminada de NetScaler CPX.
Importante:
Si ha descargado NetScaler CPX Express desde https://www.citrix.com/products/netscaler-adc/cpx-express.html, asegúrese de leer y comprender el Contrato de licencia de usuario final (EULA) disponible en: https://www.citrix.com/products/netscaler-adc/cpx-express.html y de aceptar el EULA al implementar la instancia de NetScaler CPX.
Instale la instancia de NetScaler CPX en el contenedor de Docker utilizando el siguiente comando docker run:
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-->
Este ejemplo crea un contenedor llamado mycpx basado en la imagen de Docker de NetScaler CPX.
El parámetro -P es obligatorio. Indica a Docker que asigne los puertos expuestos en el contenedor por la imagen de Docker de NetScaler CPX. Esto significa asignar los puertos 9080, 22, 9443 y 161/UDP a los puertos del host de Docker que se seleccionan aleatoriamente de un rango definido por el usuario. Esta asignación se realiza para evitar conflictos si posteriormente crea varios contenedores de NetScaler CPX en el mismo host de Docker. Las asignaciones de puertos son dinámicas y se establecen cada vez que se inicia o reinicia el contenedor. Los puertos se utilizan de la siguiente manera:
- 9080 se utiliza para HTTP
- 9443 se utiliza para HTTPS
- 22 se utiliza para SSH
- 161/UDP se utiliza para SNMP.
Si desea asignaciones de puertos estáticas, utilice el parámetro -p para configurarlas manualmente.
La opción --privileged=true se utiliza para ejecutar el contenedor en modo privilegiado. Si está ejecutando NetScaler CPX con varios núcleos, debe proporcionar todos los privilegios del sistema a NetScaler CPX. Si desea ejecutar NetScaler CPX con un solo núcleo, en lugar de esta opción, debe usar la opción --cap-add=NET_ADMIN. La opción --cap-add=NET_ADMIN le permite ejecutar el contenedor de NetScaler CPX con privilegios de red completos.
**--net=host es una opción estándar del comando docker run que especifica que el contenedor se está ejecutando en la pila de red del host y tiene acceso a todos los dispositivos de red.
Nota
Si está ejecutando NetScaler CPX en una red de tipo bridge o none, ignore esta opción.
La -e NS_NETMODE="HOST" es una variable de entorno específica de NetScaler CPX que le permite especificar que NetScaler CPX se inicie en modo host. Una vez que NetScaler CPX se inicia en modo host, configura cuatro reglas iptable predeterminadas en la máquina host para el acceso de administración a NetScaler CPX. Utiliza los siguientes puertos:
- 9995 para HTTP
- 9996 para HTTPS
- 9997 para SSH
- 9998 para SNMP
Si desea especificar puertos diferentes, puede usar las siguientes variables de entorno:
- -e NS_HTTP_PORT=
- -e NS_HTTPS_PORT=
- -e NS_SSH_PORT=
- -e NS_SNMP_PORT=
Nota
Si está ejecutando NetScaler CPX en una red bridge o none, ignore esta variable de entorno.
La -e CPX_CORES es una variable de entorno opcional específica de NetScaler CPX. Puede usarla para mejorar el rendimiento de la instancia de NetScaler CPX definiendo el número de motores de procesamiento que desea que inicie el contenedor de NetScaler CPX.
Nota
Por cada motor de procesamiento adicional que añada, asegúrese de que el host de Docker contenga el número equivalente de vCPU y la cantidad de memoria en GB. Por ejemplo, si desea añadir 4 motores de procesamiento, el host de Docker debe contener 4 vCPU y 4 GB de memoria.
La -e EULA = yes es una variable de entorno obligatoria específica de NetScaler CPX, que es necesaria para verificar que ha leído y comprendido el Contrato de licencia de usuario final (EULA) disponible en: https://www.citrix.com/products/netscaler-adc/cpx-express.html.
El parámetro -e PLATFORM=CP1000 especifica el tipo de licencia de NetScaler CPX.
Si está ejecutando Docker en una red de host, puede asignar interfaces de red dedicadas al contenedor de NetScaler CPX utilizando la variable de entorno -e CPX_NW_DEV. Debe definir las interfaces de red separadas por un espacio en blanco. Las interfaces de red que defina serán retenidas por el contenedor de NetScaler CPX hasta que desinstale el contenedor de NetScaler CPX. Cuando se aprovisiona el contenedor de NetScaler CPX, todas las interfaces de red asignadas se añaden al espacio de nombres de red de NetScaler.
Nota
Si está ejecutando NetScaler CPX en una red bridge, puede cambiar la red del contenedor, por ejemplo, configurar otra conexión de red al contenedor o eliminar una red existente. Luego, asegúrese de reiniciar el contenedor de NetScaler CPX para usar la red actualizada.
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-->
La -e CPX_CONFIG es una variable de entorno específica de NetScaler CPX que le permite controlar el rendimiento del rendimiento del contenedor de NetScaler CPX. Cuando NetScaler CPX no recibe tráfico entrante para procesar, cede la CPU durante este tiempo de inactividad, lo que resulta en un bajo rendimiento. Puede usar la variable de entorno CPX_CONFIG para controlar el rendimiento del contenedor de NetScaler CPX en tales escenarios. Debe proporcionar los siguientes valores a la variable de entorno CPX_CONFIG en formato JSON:
- Si desea que el contenedor de NetScaler CPX ceda la CPU en escenarios de inactividad, defina
{"YIELD” : “Yes”} - Si desea que el contenedor de NetScaler CPX evite ceder la CPU en escenarios de inactividad para obtener un alto rendimiento, defina
{“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-->
El parámetro –v es un parámetro opcional que especifica el punto de montaje del directorio de montaje de NetScaler CPX, /cpx. Un punto de montaje es un directorio en el host, en el que se monta el directorio /cpx. El directorio /cpx almacena los registros, los archivos de configuración, los certificados SSL y los archivos de volcado de memoria. En el ejemplo, el punto de montaje es /var/cpx y el directorio de montaje de NetScaler CPX es /cpx.
Si ha adquirido una licencia o tiene una licencia de evaluación, puede cargar la licencia en un servidor de licencias y especificar la ubicación del servidor de licencias con el comando docker run, utilizando el parámetro -e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT>. En este caso, no es necesario que acepte el 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-->
Donde:
-
LS_IP_ADDRESSes la dirección IP del servidor de licencias. -
LS_PORTes el puerto del servidor de licencias.
Puede ver las imágenes que se ejecutan en su sistema y los puertos asignados a los puertos estándar mediante el comando: docker ps
Implementación de instancias de NetScaler CPX mediante Docker Compose
Puede usar la herramienta Compose de Docker para aprovisionar una única instancia de NetScaler CPX o varias instancias de NetScaler CPX. Para aprovisionar instancias de NetScaler CPX mediante Compose, primero debe escribir un archivo compose. Este archivo especifica la imagen de NetScaler CPX, los puertos que desea abrir para la instancia de NetScaler CPX y los privilegios para su instancia de NetScaler CPX.
Importante
Asegúrese de haber instalado la herramienta Docker Compose en el host.
Para aprovisionar varias instancias de NetScaler CPX:
- Escriba un archivo compose, donde:
- <service-name> es el nombre del servicio que desea aprovisionar.
- image:<repository>:<tag> denota el repositorio y las versiones de la imagen de NetScaler CPX.
- privileged: true proporciona todos los privilegios de root a la instancia de NetScaler CPX.
- cap_add proporciona privilegios de red a la instancia de NetScaler CPX.
- <host_directory_path> denota el directorio en el host de Docker que desea montar para la instancia de NetScaler CPX.
- <number_processing_engine> es el número de motores de procesamiento que desea que inicie la instancia de NetScaler CPX. Por cada motor de procesamiento adicional, asegúrese de que el host de Docker contenga el número equivalente de vCPU y la cantidad de memoria en GB. Por ejemplo, si desea agregar 4 motores de procesamiento, el host de Docker debe contener 4 vCPU y 4 GB de memoria.
El archivo compose generalmente sigue un formato similar a:
<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-->
Si desea aprovisionar una única instancia de NetScaler CPX, debe añadir la siguiente línea al archivo compose: container_name:<name_of_container>
Ejecute el siguiente comando para aprovisionar varias instancias de 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
Si desea aprovisionar una única instancia de NetScaler CPX, ejecute el siguiente comando: docker-compose -f <compose_file_name> up –d