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 Verarbeitungs-Engines definieren, die die NetScaler CPX-Instanz starten soll. Stellen Sie für jede zusätzliche Verarbeitungs-Engine, die Sie hinzufügen, sicher, dass der Docker-Host die entsprechende Anzahl von vCPUs und die Speichermenge in GB enthält. Wenn Sie beispielsweise 4 Verarbeitungs-Engines hinzufügen möchten, muss der Docker-Host 4 vCPUs und 4 GB Speicher enthalten.

  • Das Docker-Hostsystem läuft unter Linux Ubuntu Version 14.04 oder höher.

  • Docker Version 1.12 ist auf dem Hostsystem installiert. Informationen zur Docker-Installation unter Linux finden Sie in der Docker-Dokumentation.

  • Der Docker-Host verfügt über Internetkonnektivität.

    Hinweis: NetScaler CPX hat Probleme beim Ausführen unter Ubuntu Version 16.04.5, Kernel-Version 4.4.0-131-generic. Daher wird nicht empfohlen, NetScaler CPX unter Ubuntu Version 16.04.5 Kernel-Version 4.4.0-131-generic auszuführen.

Herunterladen des NetScaler CPX-Images von Quay

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:tag

In diesem Befehl gibt Tag das Citrix NetScaler CPX-Image an.

Wenn Sie beispielsweise die Version 12.1-51.16 herunterladen möchten, verwenden Sie den folgenden Befehl:

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

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                  12.1-51.16          952a04e73101        2 months ago        469 MB

Hinweis: Es wird empfohlen, das neueste NetScaler CPX-Image aus der Quay-Container-Registrierung zu verwenden, um die neuesten Funktionen von NetScaler CPX nutzen zu können.

Bereitstellen der NetScaler CPX-Instanz mit dem Befehl 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. Verwenden Sie den Befehl docker run, um die NetScaler CPX-Instanz mit der Standardkonfiguration von NetScaler CPX zu installieren.

Wichtig:

Wenn Sie NetScaler CPX Express von https://www.citrix.com/products/netscaler-adc/cpx-express.html heruntergeladen haben, stellen Sie sicher, dass Sie die Endbenutzer-Lizenzvereinbarung (EULA) unter: https://www.citrix.com/products/netscaler-adc/cpx-express.html gelesen und verstanden haben und die EULA bei der Bereitstellung der NetScaler CPX-Instanz akzeptieren.

Installieren Sie die NetScaler CPX-Instanz im Docker-Container mit dem folgenden Befehl 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-->

Dieses Beispiel erstellt einen Container namens mycpx, der auf dem NetScaler CPX Docker-Image basiert.

Der Parameter -P ist obligatorisch. Er weist Docker an, die im Container durch das NetScaler CPX Docker-Image freigegebenen Ports zuzuordnen. Das bedeutet, die Ports 9080, 22, 9443 und 161/UDP den Ports auf dem Docker-Host zuzuordnen, 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 mit mehreren Kernen ausführen, müssen Sie NetScaler CPX alle Systemberechtigungen erteilen. Wenn Sie NetScaler CPX mit einem einzelnen Kern ausführen möchten, müssen Sie stattdessen die Option --cap-add=NET_ADMIN verwenden. Die Option --cap-add=NET_ADMIN ermöglicht es Ihnen, den NetScaler CPX-Container mit vollen Netzwerkberechtigungen auszuführen.

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

Wenn Sie NetScaler CPX in einem Bridge- oder None-Netzwerk ausführen, ignorieren Sie diese Option.

-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 gestartet wird, konfiguriert es vier Standard-iptable-Regeln auf der Hostmaschine für den Verwaltungszugriff auf NetScaler CPX. Es werden die folgenden Ports verwendet:

  • 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

Wenn Sie NetScaler CPX in einem Bridge- oder None-Netzwerk ausführen, ignorieren Sie diese Umgebungsvariable.

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 Verarbeitungsprozessoren definieren, die der NetScaler CPX-Container starten soll.

Hinweis

Stellen Sie für jeden zusätzlichen Verarbeitungsprozessor, den 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 Verarbeitungsprozessoren hinzufügen möchten, muss der Docker-Host 4 vCPUs und 4 GB Arbeitsspeicher enthalten.

Die -e EULA = yes ist eine obligatorische NetScaler CPX-spezifische Umgebungsvariable, die erforderlich ist, um zu überprüfen, ob Sie die Endbenutzer-Lizenzvereinbarung (EULA) gelesen und verstanden haben, die unter https://www.citrix.com/products/netscaler-adc/cpx-express.html verfügbar ist.

Der Parameter -e PLATFORM=CP1000 gibt den NetScaler CPX-Lizenztyp an.

Wenn Sie Docker in einem Host-Netzwerk ausführen, 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 gehalten, 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 ausführen, 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:12.0-53.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 die folgenden Werte für die Umgebungsvariable CPX_CONFIG im JSON-Format angeben:

  • Wenn der NetScaler CPX-Container die CPU in Leerlaufszenarien freigeben soll, definieren Sie {"YIELD” : “Yes”}
  • Wenn der NetScaler CPX-Container die CPU in Leerlaufszenarien 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: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-->

Der Parameter –v ist ein optionaler Parameter, der den Mountpunkt des NetScaler CPX-Mount-Verzeichnisses /cpx angibt. Ein Mountpunkt ist ein Verzeichnis auf dem Host, in dem 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-Mount-Verzeichnis /cpx.

Wenn Sie eine Lizenz erworben oder eine Evaluierungslizenz haben, können Sie die Lizenz auf einen Lizenzserver hochladen und den Lizenzserverstandort 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:12.0-51.xx
<!--NeedCopy-->

Dabei gilt:

  • LS_IP_ADDRESS ist die IP-Adresse des Lizenzservers.
  • LS_PORT ist der Port des Lizenzservers.

Sie können die auf Ihrem System ausgeführten Images und die auf die Standardports abgebildeten Ports mit dem Befehl anzeigen: docker ps

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 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:

  1. Schreiben Sie eine Compose-Datei, wobei gilt:
  • <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:

    <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-->

Wenn Sie eine einzelne NetScaler CPX-Instanz bereitstellen möchten, müssen Sie die folgende Zeile zur Compose-Datei hinzufügen: container_name:<name_of_container>

Führen Sie den folgenden Befehl aus, um mehrere NetScaler CPX-Instanzen bereitzustellen: 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

Wenn Sie eine einzelne NetScaler CPX-Instanz bereitstellen möchten, führen Sie den folgenden Befehl aus: docker-compose -f <compose_file_name> up –d

Bereitstellen einer NetScaler CPX-Instanz in Docker