Bereitstellen einer NetScaler CPX-Instanz in Docker
NetScaler CPX-Instanzen sind als Docker-Image-Datei in der Quay-Container-Registrierung verfügbar. Um eine Instanz bereitzustellen, laden Sie das NetScaler CPX-Image aus der Quay-Container-Registrierung herunter und stellen Sie die Instanz dann mit dem Befehl docker run oder dem Docker Compose-Tool bereit.
Voraussetzungen
Stellen Sie sicher, dass:
- Das Docker-Hostsystem mindestens Folgendes aufweist:
-
1 CPU
-
2 GB RAM
Hinweis:
Für eine bessere NetScaler CPX-Leistung können Sie die Anzahl der Verarbeitungseinheiten definieren, die die NetScaler CPX-Instanz starten soll. Stellen Sie für jede zusätzliche Verarbeitungseinheit, die Sie hinzufügen, sicher, dass der Docker-Host die entsprechende Anzahl an vCPUs und die entsprechende Menge an Arbeitsspeicher in GB enthält. Wenn Sie beispielsweise 4 Verarbeitungseinheiten hinzufügen möchten, muss der Docker-Host 4 vCPUs und 4 GB Arbeitsspeicher enthalten.
-
-
Auf dem Docker-Hostsystem Linux Ubuntu Version 14.04 oder höher ausgeführt wird.
-
Docker Version 1.12 auf dem Hostsystem installiert ist. Informationen zur Docker-Installation unter Linux finden Sie in der Docker-Dokumentation.
-
Der Docker-Host über Internetkonnektivität verfügt.
Hinweis: NetScaler CPX hat Probleme beim Ausführen unter Ubuntu Version 16.04.5, Kernel Version 4.4.0-131-generic. Es wird daher nicht empfohlen, NetScaler CPX unter Ubuntu Version 16.04.5 Kernel Version 4.4.0-131-generic auszuführen.
Hinweis: Die folgenden kubelet- und kube-proxy-Versionen weisen einige Sicherheitslücken auf, und es wird nicht empfohlen, NetScaler CPX mit diesen Versionen zu verwenden:
- kubelet/kube-proxy v1.18.0-1.18.3
- kubelet/kube-proxy v1.17.0-1.17.6
- kubelet/kube-proxy <=1.16.10
Informationen zur Behebung dieser Sicherheitslücke finden Sie unter Diese Sicherheitslücke beheben.
NetScaler CPX-Image von Quay herunterladen
Sie können das NetScaler CPX-Image aus der Quay-Container-Registrierung mit dem Befehl docker pull herunterladen und in Ihrer Umgebung bereitstellen. Verwenden Sie den folgenden Befehl, um das NetScaler CPX-Image aus der Quay-Container-Registrierung herunterzuladen:
docker pull quay.io/citrix/citrix-k8s-cpx-ingress:13.0-xx.xx
Wenn Sie beispielsweise die Version 13.0-64.35 herunterladen möchten, verwenden Sie den folgenden Befehl:
docker pull quay.io/citrix/citrix-k8s-cpx-ingress:13.0-64.35
Verwenden Sie den folgenden Befehl, um zu überprüfen, ob das NetScaler CPX-Image in Docker-Images installiert ist:
root@ubuntu:~# docker images | grep 'citrix-k8s-cpx-ingress'
quay.io/citrix/citrix-k8s-cpx-ingress 13.0-64.35 952a04e73101 2 months ago 469 MB
Sie können das neueste NetScaler CPX-Image aus der Quay-Container-Registrierung bereitstellen.
Bereitstellen der NetScaler CPX-Instanz mithilfe des Befehls docker run
Auf dem Host können Sie eine NetScaler CPX-Instanz im Docker-Container installieren, indem Sie das NetScaler CPX Docker-Image verwenden, das Sie auf den Host geladen haben. Installieren Sie mithilfe des Befehls docker run die NetScaler CPX-Instanz mit der Standardkonfiguration von NetScaler CPX.
Installieren Sie die NetScaler CPX-Instanz auf dem Docker-Container mithilfe des folgenden Befehls 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 --name <cpx_container_name> <REPOSITORY>:<CPX-IMAGE_TAG_IN_QUAY>
<!--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 quay.io/citrix/citrix-k8s-cpx-ingress:14.1-x.x
<!--NeedCopy-->
Dieses Beispiel erstellt einen Container namens mycpx basierend auf dem NetScaler CPX Docker-Image.
Der Parameter -P ist obligatorisch. Er weist Docker an, die im Container durch das NetScaler CPX Docker-Image verfügbar gemachten Ports zuzuordnen. Das bedeutet, dass die Ports 9080, 22, 9443 und 161/UDP den Ports auf dem Docker-Host zugeordnet werden, die zufällig aus dem benutzerdefinierten Bereich ausgewählt werden. Diese Zuordnung erfolgt, um Konflikte zu vermeiden, falls Sie später mehrere NetScaler CPX-Container auf demselben Docker-Host erstellen. Die Portzuordnungen sind dynamisch und werden jedes Mal festgelegt, wenn der Container gestartet oder neu gestartet wird. Die Ports werden wie folgt verwendet:
- 9080 wird für HTTP verwendet
- 9443 wird für HTTPS verwendet
- 22 wird für SSH verwendet
- 161/UDP wird für SNMP verwendet.
Wenn Sie statische Portzuordnungen wünschen, verwenden Sie den Parameter -p, um diese manuell festzulegen.
Die Option --privileged=true wird verwendet, um den Container im privilegierten Modus auszuführen. Wenn Sie NetScaler CPX im Host-Bereitstellungsmodus ausführen, müssen Sie NetScaler CPX alle Systemberechtigungen erteilen.
Um NetScaler CPX im Bridge-Modus mit einem oder mehreren Kernen auszuführen, können Sie die Option --cap-add=NET_ADMIN anstelle des privilegierten Modus verwenden. Die Option --cap-add=NET_ADMIN ermöglicht es Ihnen, den NetScaler CPX-Container mit vollen Netzwerkprivilegien auszuführen. Verwenden Sie mit der Option --cap-add=NET_ADMIN die Option --sysctl kernel.shmmax=1073741824 --sysctl net.ipv6.conf.default.accept_dad=0 --sysctl kernel.core_pattern=/var/crash/core.%e.%p.%s im Docker-Run-Befehl, um die zusätzlichen Systemsteuerungseinstellungen manuell vorzunehmen. Diese zusätzlichen Systemsteuerungseinstellungen werden in keinem nicht-privilegierten Modus automatisch vorgenommen.
Die **--net=host ist eine Standard-Docker-Run-Befehlsoption, die angibt, dass der Container im Host-Netzwerk-Stack ausgeführt wird und Zugriff auf alle Netzwerkgeräte hat.
Hinweis
Ignorieren Sie diese Option, wenn Sie NetScaler CPX im Bridge- oder None-Netzwerk ausführen.
Die -e NS_NETMODE="HOST" ist eine NetScaler CPX-spezifische Umgebungsvariable, mit der Sie angeben können, dass NetScaler CPX im Host-Modus gestartet wird. Sobald NetScaler CPX im Host-Modus startet, konfiguriert es 4 Standard-iptables-Regeln auf einer Hostmaschine für den Verwaltungszugriff auf NetScaler CPX. Es verwendet die folgenden Ports:
- 9995 für HTTP
- 9996 für HTTPS
- 9997 für SSH
- 9998 für SNMP
Wenn Sie andere Ports angeben möchten, können Sie die folgenden Umgebungsvariablen verwenden:
- -e NS_HTTP_PORT=
- -e NS_HTTPS_PORT=
- -e NS_SSH_PORT=
- -e NS_SNMP_PORT=
Hinweis
Ignorieren Sie diese Umgebungsvariable, wenn Sie NetScaler CPX in einem Bridge- oder None-Netzwerk betreiben.
Die -e CPX_CORES ist eine optionale, NetScaler CPX-spezifische Umgebungsvariable. Sie können sie verwenden, um die Leistung der NetScaler CPX-Instanz zu verbessern, indem Sie die Anzahl der Verarbeitungseinheiten definieren, die der NetScaler CPX-Container starten soll.
Hinweise:
Für jede zusätzliche Verarbeitungseinheit, die Sie hinzufügen, stellen Sie sicher, dass der Docker-Host die entsprechende Anzahl an vCPUs und die entsprechende Menge an Arbeitsspeicher in GB enthält. Wenn Sie beispielsweise 4 Verarbeitungseinheiten hinzufügen möchten, muss der Docker-Host 4 vCPUs und 4 GB Arbeitsspeicher enthalten.
NetScaler CPX unterstützt 1 bis 16 Kerne.
Die -e EULA = yes ist eine obligatorische, NetScaler CPX-spezifische Umgebungsvariable, die erforderlich ist, um zu bestätigen, dass Sie die Endbenutzer-Lizenzvereinbarung (EULA) gelesen und verstanden haben, die unter folgender Adresse verfügbar ist: Die Komponenten des Citrix Lizenzierungssystems.
Der Parameter -e PLATFORM=CP1000 gibt den NetScaler CPX-Lizenztyp an.
Wenn Sie Docker in einem Host-Netzwerk betreiben, können Sie dem NetScaler CPX-Container dedizierte Netzwerkschnittstellen mithilfe der Umgebungsvariablen -e CPX_NW_DEV zuweisen. Sie müssen die Netzwerkschnittstellen durch ein Leerzeichen getrennt definieren. Die von Ihnen definierten Netzwerkschnittstellen werden vom NetScaler CPX-Container beibehalten, bis Sie den NetScaler CPX-Container deinstallieren. Wenn der NetScaler CPX-Container bereitgestellt wird, werden alle zugewiesenen Netzwerkschnittstellen zum NetScaler-Netzwerk-Namespace hinzugefügt.
Hinweis
Wenn Sie NetScaler CPX in einem Bridge-Netzwerk betreiben, können Sie das Container-Netzwerk ändern, z. B. eine andere Netzwerkverbindung zum Container konfigurieren oder ein vorhandenes Netzwerk entfernen. Stellen Sie dann sicher, dass Sie den NetScaler CPX-Container neu starten, um das aktualisierte Netzwerk zu verwenden.
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:13.0-x.x
<!--NeedCopy-->
Die -e CPX_CONFIG ist eine NetScaler CPX-spezifische Umgebungsvariable, mit der Sie die Durchsatzleistung des NetScaler CPX-Containers steuern können. Wenn der NetScaler CPX keinen eingehenden Datenverkehr zur Verarbeitung empfängt, gibt er die CPU während dieser Leerlaufzeit frei, was zu einer geringen Durchsatzleistung führt. Sie können die Umgebungsvariable CPX_CONFIG verwenden, um die Durchsatzleistung des NetScaler CPX-Containers in solchen Szenarien zu steuern. Sie müssen der Umgebungsvariablen CPX_CONFIG die folgenden Werte im JSON-Format bereitstellen:
- Wenn der NetScaler CPX-Container in Leerlaufszenarien CPU-Ressourcen freigeben soll, definieren Sie
{"YIELD” : “Yes”} - Wenn der NetScaler CPX-Container in Leerlaufszenarien die CPU nicht freigeben soll, um eine hohe Durchsatzleistung zu erzielen, definieren Sie
{“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:13.0-x.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:13.0-x.x
<!--NeedCopy-->
Der Parameter –v ist ein optionaler Parameter, der den Mountpunkt des NetScaler CPX-Mountverzeichnisses, /cpx, angibt. Ein Mountpunkt ist ein Verzeichnis auf dem Host, in das Sie das Verzeichnis /cpx mounten. Das Verzeichnis /cpx speichert die Protokolle, Konfigurationsdateien, SSL-Zertifikate und Core-Dump-Dateien. Im Beispiel ist der Mountpunkt /var/cpx und das NetScaler CPX-Mountverzeichnis /cpx.
Wenn Sie eine Lizenz erworben haben oder über eine Evaluierungslizenz verfügen, können Sie die Lizenz auf einen Lizenzserver hochladen und den Speicherort des Lizenzservers mit dem Befehl docker run unter Verwendung des Parameters -e LS_IP=<LS_IP_ADDRESS> -e LS_PORT=<LS_PORT> angeben. In diesem Fall müssen Sie die EULA nicht akzeptieren.
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:13.0-x.x
<!--NeedCopy-->
Dabei gilt:
-
LS_IP_ADDRESSist die IP-Adresse des Lizenzservers. -
LS_PORTist der Port des Lizenzservers.
Sie können die auf Ihrem System ausgeführten Images und die den Standardports zugeordneten Ports mit dem Befehl anzeigen: docker ps
Bereitstellen einer leichteren Version von NetScaler CPX mit dem Befehl docker run
NetScaler bietet eine leichtere Version von NetScaler CPX, die weniger Laufzeitspeicher verbraucht. Die leichtere Version von NetScaler CPX kann als Sidecar in Service-Mesh-Bereitstellungen eingesetzt werden.
Die leichtere Version von NetScaler CPX unterstützt die folgenden Funktionen:
- Anwendungsverfügbarkeit
- L4-Lastverteilung und L7-Inhaltsumschaltung
- SSL-Offloading
- IPv6-Protokollübersetzung
- Anwendungssicherheit
- L7-Rewrite und Responder
- Einfache Verwaltbarkeit
- Web-Logging
- AppFlow®
Um die leichtere Version von NetScaler CPX zu instanziieren, legen Sie die Umgebungsvariable NS_CPX_LITE fest, während Sie den Befehl Docker run ausführen.
docker run -dt -P --privileged=true -e NS_CPX_LITE=1 -e EULA=yes --name <container_name> --ulimit core=-1 <REPOSITORY>:<TAG>
<!--NeedCopy-->
Das folgende Beispiel erstellt einen schlanken Container basierend auf dem NetScaler CPX-Image.
docker run –dt -P --privileged=true -e NS_CPX_LITE=1 -e EULA=yes -–name lightweight --ulimit core=-1 cpx:latest
<!--NeedCopy-->
Standardmäßig ist die Protokollierung mit newnslog in der leichteren Version von NetScaler CPX deaktiviert. Um sie zu aktivieren, müssen Sie die Umgebungsvariable NS_ENABLE_NEWNSLOG auf 1 setzen, während Sie die leichtere Version von NetScaler CPX starten.
Das folgende Beispiel zeigt, wie die Protokollierung mit newnslog aktiviert wird, während die leichtere Version von NetScaler CPX bereitgestellt wird.
docker run -dt --privileged=true --ulimit core=-1 -e EULA=yes -e NS_CPX_LITE=1 -e NS_ENABLE_NEWNSLOG=1 cpx:<tag>
<!--NeedCopy-->
Hinweis: Die leichtere Version von CPX unterstützt nur einen einzelnen Kern (CPX_CORES=1).
Bereitstellen von NetScaler CPX-Instanzen mit Docker Compose
Sie können das Compose-Tool von Docker verwenden, um eine einzelne NetScaler CPX-Instanz oder mehrere NetScaler CPX-Instanzen bereitzustellen. Um NetScaler CPX-Instanzen mit Docker Compose bereitzustellen, müssen Sie zuerst eine Compose-Datei schreiben. Diese Datei gibt das NetScaler CPX-Image, die Ports, die Sie für die NetScaler CPX-Instanz öffnen möchten, und die Berechtigungen für Ihre NetScaler CPX-Instanz an.
Wichtig
Stellen Sie sicher, dass Sie das Docker Compose-Tool auf dem Host installiert haben.
So stellen Sie mehrere NetScaler CPX-Instanzen bereit:
- Schreiben Sie eine Compose-Datei, wobei:
- <service-name> ist der Name des Dienstes, den Sie bereitstellen möchten.
- image:<repository>:<tag> bezeichnet das Repository und die Versionen des NetScaler CPX-Images.
- privileged: true gewährt der NetScaler CPX-Instanz alle Root-Berechtigungen.
- cap_add gewährt der NetScaler CPX-Instanz Netzwerkberechtigungen.
- <host_directory_path> bezeichnet das Verzeichnis auf dem Docker-Host, das Sie für die NetScaler CPX-Instanz mounten möchten.
- <number_processing_engine> ist die Anzahl der Verarbeitungseinheiten, die die NetScaler CPX-Instanz starten soll. Stellen Sie für jede zusätzliche Verarbeitungseinheit sicher, dass der Docker-Host die entsprechende Anzahl an vCPUs und die entsprechende Menge an Arbeitsspeicher in GB enthält. Wenn Sie beispielsweise 4 Verarbeitungseinheiten hinzufügen möchten, muss der Docker-Host 4 vCPUs und 4 GB Arbeitsspeicher enthalten.
Die Compose-Datei folgt im Allgemeinen einem ähnlichen Format wie:
<container_name>:
image: <repository>:<tag>
ports:
- 9443
- 22
- 9080
- 161/udp
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:
image: quay.io/citrix/citrix-k8s-cpx-ingress:13.1-37.38
ports:
- 9443
- 22
- 9080
- 161/udp
tty: true
cap_add:
- NET_ADMIN
ulimits:
core: -1
volumes:
- /root/test:/cpx
environment:
- CPX_CORES=2
- EULA=yes
<!--NeedCopy-->