Citrix ADC Ingress Controller

Bereitstellen von Citrix ADC VPX in aktiv-aktiver Hochverfügbarkeit in EKS-Umgebung mithilfe von Amazon ELB und Citrix Ingress Controller

Das Thema behandelt eine Lösung zur Bereitstellung von Citrix ADC VPX im aktiv-aktiven Hochverfügbarkeitsmodus auf mehreren Availability Zones in der AWS Elastic Container Service (EKS) -Plattform. Die Lösung kombiniert AWS Elastic Load Balancing (ELB) und Citrix ADC VPX, um den Ingress-Datenverkehr zu den im EKS-Cluster bereitgestellten Microservices zu verteilen. AWS ELB verarbeitet den Layer-4-Datenverkehr und die Citrix ADC VPXs bieten erweiterte Layer-7-Funktionen wie erweiterten Lastenausgleich, Caching und inhaltsbasiertes Routing.

Überblick über die Lösung

Eine grundlegende Architektur eines EKS-Clusters würde drei öffentliche Subnetze und drei private Subnetze umfassen, die in drei Verfügbarkeitszonen bereitgestellt werden, wie im folgenden Diagramm dargestellt:

EKS-Architektur

Mit der Lösung wäre die Architektur des EKS-Clusters wie in der folgenden Abbildung dargestellt:

Architektur der Lösung

In der AWS-Cloud verarbeitet AWS Elastic Load Balancing die Layer-4-TCP-Verbindungen und gleicht den Datenverkehr mithilfe eines Flow-Hash-Routing-Algorithmus aus. Der ELB kann entweder ein Network Load Balancer oder ein klassischer Load Balancer sein.

AWS ELB wartet auf eingehende Verbindungen, wie von seinen Listenern definiert. Jeder Listener leitet eine neue Verbindung zu einer der verfügbaren Citrix ADC VPX-Instanzen weiter. Die Citrix ADC VPX-Instanz gleicht den Datenverkehr auf die EKS-Pods aus. Es führt auch andere Layer-7-Funktionen aus, z. B. Rewrite-Richtlinie, Responder-Richtlinie, SSL-Offloading usw., die von Citrix ADC VPX bereitgestellt werden.

Für jede Citrix ADC VPX-Instanz wird im EKS-Cluster ein Citrix Ingress Controller bereitgestellt. Die Citrix Ingress-Controller sind mit derselben Eingangsklasse konfiguriert. Und es konfiguriert die Ingress-Objekte im EKS-Cluster auf den jeweiligen Citrix ADC VPX-Instanzen.

AWS Elastic Load Balancing (ELB) hat einen DNS-Namen, dem eine IP-Adresse dynamisch zugewiesen wird. Der DNS-Name kann als Alias A-Datensatz für Ihre Domäne in Route53 hinzugefügt werden, um auf die im EKS-Cluster gehostete Anwendung zuzugreifen.

Ablauf der Bereitstellung

Führen Sie die folgenden Schritte aus, um die Lösung bereitzustellen:

  1. Stellen Sie Citrix ADC VPX-Instanzenbereit.

  2. Stellen Sie den Citrix Ingress Controllerbereit.

  3. Richten Sie Amazon Elastic Load Balancingein Sie können entweder den Netzwerklastenausgleich oder den klassischen Load Balancereinrichten.

  4. Prüfen Sie die Lösung.

Bereitstellen von Citrix ADC VPX-Instanzen

Citrix ADC VPX ist als CloudFormation Templateverfügbar. Die CloudFormation-Vorlage stellt eine Instanz von Citrix ADC VPX mit einem einzelnen ENI in einem bestimmten Subnetz bereit. Außerdem werden NSIP, VIPund SNIP für die Citrix ADC VPX-Instanz konfiguriert.

Für diese Lösung müssen Sie zwei Instanzen von Citrix ADC VPX bereitstellen. Stellen Sie die Citrix ADC VPX-Instanzen in zwei Verfügbarkeitszonen bereit, indem Sie dasselbe Citrix ADC VPX und ein anderes öffentliches Subnetz angeben.

Nachdem Sie die Citrix ADC VPX-Instanzen bereitgestellt haben, können Sie die Bereitstellung überprüfen, indem Sie die Ausgabe der CloudFormation-Vorlage überprüfen, wie im folgenden Screenshot gezeigt. Die Ausgabe muss die verschiedenen IP-Adressen (VIP, SNIP und NSIP) anzeigen, die für die Citrix VPX-Instanzen konfiguriert sind:

CloudFormation Template Ausgabe

Hinweis:

Die CloudFormation-Vorlage stellt die Citrix ADC VPX-Instanz mit der primären IP-Adresse der Citrix ADC VPX EC2-Instanz als VIP und sekundärer IP-Adresse als Verwaltungs-IP-Adresse bereit.

Nachdem die Citrix ADC VPX-Instanzen erfolgreich bereitgestellt wurden, müssen Sie die Sicherheitsgruppen bearbeiten, um Datenverkehr von der Sicherheitsgruppe der EKS-Knotengruppe zuzulassen. Außerdem müssen Sie die Sicherheitsgruppe der EKS-Knotengruppe ändern, um Datenverkehr von VPX-Instanzen zuzulassen.

Citrix Ingress Controller bereitstellen

Stellen Sie für jede Citrix ADC VPX-Instanz eine separate Instanz des Citrix Ingress Controllers bereit. Befolgen Sie die Bereitstellungsanweisungen, um den Citrix Ingress Controller bereitzustellen.

Nachdem die Citrix ADC VPX-Instanz eingerichtet wurde, müssen Sie ein Systembenutzerkonto in den Citrix ADC VPX-Instanzen einrichten. Das Systembenutzerkonto wird vom Citrix Ingress Controller verwendet, um sich bei den Citrix ADC VPX-Instanzen anzumelden. Anweisungen zum Einrichten des Systembenutzerkontos finden Sie unter Erstellen eines Systembenutzerkontos für CIC in Citrix ADC.

  1. Bearbeiten Sie die Citrix Ingress Controller-Bereitstellung YAML (citrix-ingress-controller.yaml).

    Ersetzen Sie NS_IP durch die Adresse Private NSIP der jeweiligen Citrix ADC VPX-Instanz. Geben Sie außerdem den Benutzernamen und das Kennwort des Systembenutzerkontos an, die Sie auf der Citrix ADC VPX-Instanz erstellt haben. Nachdem Sie die Datei citrix-ingress-controller.yaml bearbeitet haben, stellen Sie die aktualisierte YAML-Datei mit dem folgenden Befehl bereit:

    kubectl apply -f citrix-ingress-controller .yaml
    
  2. Führen Sie Schritt 1 auf der zweiten Citrix Ingress Controller-Instanz aus.

  3. Stellen Sie sicher, dass beide Pods betriebsbereit sind. Überprüfen Sie außerdem, ob der Citrix Ingress Controller mithilfe der Protokolle eine Verbindung zur entsprechenden Citrix ADC VPX-Instanz herstellen kann:

    kubectl logs <cic_pod_name>
    

Nachdem die Citrix Ingress Controller-Pods bereitgestellt wurden und im EKS-Cluster ausgeführt werden. Jede Kubernetes Ingress-Ressource, die mit der citrix Eingangsklasse konfiguriert ist, wird automatisch auf beiden Citrix ADC VPX-Instanzen konfiguriert.

Elastisches Lastenausgleich einrichten

Je nach Anforderung können Sie einen der folgenden Load Balancer konfigurieren:

  • Netzwerklastenausgleich
  • Klassische Load Balancer

Netzwerklastenausgleich einrichten

Der Network Load Balancer (NLB) ist eine gute Option für den Lastenausgleich von TCP-Verbindungen. In dieser Lösung wird NLB verwendet, um den eingehenden Datenverkehr zu akzeptieren und an eine der Citrix ADC VPX-Instanzen weiterzuleiten. NLB-Lastausgleich mithilfe des Flow-Hash-Algorithmus basierend auf dem Protokoll, der Quell-IP-Adresse, dem Quellport, der Ziel-IP-Adresse, dem Zielport und der TCP-Sequenznummer.

So richten Sie NLB ein:

  1. Melden Sie sich bei der AWS Management Console für EC2an.

  2. Klicken Sie in der linken Navigationsleiste auf Zielgruppe. Erstellen Sie zwei verschiedene Zielgruppen. Eine Zielgruppe (Zielgruppe-80) für das Routing des Datenverkehrs auf Port 80 und die andere Zielgruppe (Zielgruppe-443) für das Routing des Datenverkehrs auf 443.

    Zielgruppe

  3. Erstellen Sie eine Zielgruppe mit dem Namen “ *Target-Gruppe-80”. Führen Sie folgende Schritte aus:

    1. Geben Sie im Feld Zielgruppenname den Zielgruppennamen als Zielgruppen-80ein.
    2. Wählen Sie im Feld Zieltyp die Option Instanz aus.
    3. Wählen Sie in der Liste Protokoll die Option TCPaus.
    4. Geben Sie im Feld Port80ein.
    5. Wählen Sie aus der VCP-Liste Ihre VPC aus, in der Sie Ihren EKS-Cluster bereitgestellt haben.
    6. Verwenden Sie im Abschnitt Einstellungen für die Integritätsprüfung TCP für die Integritätsprüfung.
    7. Optional. Sie können die Einstellungen der erweiterten Integritätsprüfung ändern, um Integritätsprüfungen zu konfigurieren.

      Zielgruppe 80

  4. Erstellen Sie eine Zielgruppe mit dem Namen *Target-Gruppe-443. Führen Sie folgende Schritte aus:

    1. Geben Sie im Feld Zielgruppenname den Zielgruppennamen als Zielgruppen-443ein.
    2. Wählen Sie im Feld Zieltyp die Option Instanz aus.
    3. Wählen Sie in der Liste Protokoll die Option TCPaus.
    4. Geben Sie im Feld Port443ein.
    5. Wählen Sie aus der VCP-Liste Ihre VPC aus, in der Sie Ihren EKS-Cluster bereitgestellt haben.
    6. Verwenden Sie im Abschnitt Einstellungen für die Integritätsprüfung TCP für die Integritätsprüfung.
    7. Optional. Sie können die Einstellungen der erweiterten Integritätsprüfung ändern, um Integritätsprüfungen zu konfigurieren.

      Zielgruppe 80

  5. Nachdem Sie die Zielgruppen erstellt haben, müssen Sie die Zielinstanzen registrieren.
    1. Wählen Sie auf der Listenseite die erstellte Zielgruppe aus, klicken Sie auf die Registerkarte Ziel und wählen Sie Bearbeitenaus.
    2. Wählen Sie auf der Registerkarte Instanzen die beiden Citrix ADC VPX-Instanzen aus und klicken Sie auf Zu registriert hinzufügen.
  6. Wiederholen Sie Schritt 5 für die andere Zielgruppe, die Sie erstellt haben.

  7. Erstellen Sie den Netzwerklastenausgleich.

    1. Wählen Sie in der linken Navigationsleiste Load Balanceraus und klicken Sie dann auf Load Balancer erstellen.
    2. Klicken Sie im Fenster Load Balancer-Typ auswählen im Bereich Netzwerklastenausgleich auf Erstellen.

      Erstellen eines Netzwerklastenausgleichs

  8. Gehen Sie auf der Seite Load Balancer konfigurieren wie folgt vor:

    1. Geben Sie im Feld Name einen Namen für den Load Balancer ein.
    2. Wählen Sie im Feld Schema die Option Internetanschluss aus.
    3. Klicken Sie im Abschnitt Listener auf Listener hinzufügen und fügen Sie zwei Einträge mit TCP dem Load-Balancer-Protokoll bzw. 80 bzw. 443 als Load Balancer-Port hinzu, wie in der folgenden Abbildung gezeigt:

      Listener hinzufügen

    4. Wählen Sie im Abschnitt Availability Zones die VPC, Availability Zones und Subnetze aus, in denen die Citrix ADC VPX-Instanzen bereitgestellt werden.

      Verfügbarkeitsz

  9. Gehen Sie auf der Seite Routing konfigurieren. wie folgt vor:

    1. Klicken Sie in der Liste Zielgruppe auf Bestehende Zielgruppe.
    2. Geben Sie im Feld NameTarget-Group-80ein.
    3. Wählen Sie im Feld Zieltyp die Option Instanzaus.
    4. Wählen Sie in der Liste Protokoll die Option TCPaus.
    5. Geben Sie im Feld Port80ein.
    6. Wählen Sie TCP aus der Protokollliste im Abschnitt Integritätsprüfungen aus, wie in der folgenden Abbildung dargestellt:

      Routing konfigurieren

  10. Überprüfen Sie auf der Seite Prüfen Ihre Konfiguration und klicken Sie auf Erstellen.

    Bewertung

  11. Nachdem der Netzwerklastenausgleich erstellt wurde, wählen Sie den Load Balancer aus, den Sie für die Listenseite erstellt haben. Wählen Sie die Registerkarte Listeners aus, wählen Sie TCP: 444 und klicken Sie dann auf Bearbeiten.

    Listener-Reiter

  12. Löschen Sie auf der Listener-Seite die Standardaktion und wählen Sie dann Zielgruppen-443 in der Liste Weiterleiten an aus.

    Vorwärts zu

  13. Klicken Sie auf Update.

Richten Sie den klassischen Load Balancer ein

Alternativ zum Amazon Network Load Balancer können Sie den Classic Load Balancer (CLB) als Tier-1-TCP-Lastausgleichsdienst einrichten.

  1. Melden Sie sich bei der AWS Management Console für EC2an.

  2. Wählen Sie in der linken Navigationsleiste Load Balanceraus und klicken Sie dann auf Load Balancer erstellen.

    Klassische Load Balancer-Einrichtung

  3. Klicken Sie im Fenster Load Balancer-Typ auswählen im Fenster Classic Load Balancer auf Erstellen .

    Klassisches Load Balancer erstellen

  4. Gehen Sie auf der Seite Define Load Balancer wie folgt vor:

    1. Geben Sie im Feld Load Balancer-Name einen Namen für den Load Balancer ein.

    2. Wählen Sie in der Liste LB Inside erstellen Ihren Citrix ADC VPX aus.

    3. Klicken Sie im Abschnitt Listener-Konfiguration auf Hinzufügen und fügen Sie zwei Einträge mit TCP als Load Balancer-Protokoll 80 bzw. 443 als Load Balancer-Port hinzu. Wählen Sie außerdem TCP als Instanzprotokoll bzw. 80 und 443 als Instanzport aus, wie in der folgenden Abbildung gezeigt:

      Klassischer Define Load Balancer

    4. Wählen Sie im Abschnitt Subnetze auswählen zwei öffentliche Subnetze in zwei verschiedenen Availability Zones aus, damit der Classic Load Balancer den Datenverkehr weiterleitet. Diese Subnetze entsprechen denen, in denen Sie die Citrix ADC VPX-Instanzen bereitgestellt haben.

      Klassisches Subnetz auswählen

    5. Wählen Sie auf der Seite Sicherheitsgruppen zuweisen eine Sicherheitsgruppe für die ELB-Instanz aus. Die Sicherheitsgruppe kann mit der Sicherheitsgruppe identisch sein, die an Citrix ADC VPX ENI angeschlossen ist, oder es kann sich um eine neue Sicherheitsgruppe handeln. Wenn Sie eine neue Sicherheitsgruppe verwenden, stellen Sie sicher, dass Sie Datenverkehr zur Citrix ADC VPX-Sicherheitsgruppe von der ELB-Sicherheitsgruppe und umgekehrt zulassen.

      Classic Sicherheitsgruppe zuweisen

    6. Wählen Sie auf der Seite Configure Health Check die Konfiguration für die Integritätsprüfung aus. Standardmäßig ist die Integritätsprüfung als TCP am Port 80festgelegt. Optional können Sie auch die Zustandsprüfung am Port 443 durchführen.

      Klassischer Health Check

    7. Wählen Sie auf der Seite EC2-Instanzen hinzufügen zwei Citrix ADC VPX-Instanzen aus, die zuvor bereitgestellt wurden.

      ![Classic ADD EC2 Instances](/en-us/citrix-k8s-ingress-controller/media/classic-add-ec2.png)
      
    8. Fügen Sie auf der Seite “Tags hinzufügen” Tags gemäß Ihren Anforderungen hinzu.

    9. Überprüfen Sie auf der Seite Prüfen Ihre Konfigurationen.

    10. Klicken Sie auf Erstellen.

Prüfen Sie die Lösung

Nachdem Sie Citrix ADC VPX, AWS ELB und Citrix Ingress Controller erfolgreich bereitgestellt haben, können Sie die Lösung mithilfe eines Beispielservices überprüfen.

Führen Sie folgende Schritte aus:

  1. Stellen Sie mithilfe von app.yamleinen Beispieldienst und Ingress bereit.

    kubectl apply -f app.yaml
    
  2. Melden Sie sich bei der Citrix ADC VPX-Instanz an und überprüfen Sie, ob der Content Switching vserver sowohl auf der Citrix ADC VPX-Instanz erfolgreich konfiguriert wurde. Führen Sie folgende Schritte aus:

    1. Melden Sie sich bei der Citrix ADC VPX-Instanz an. Führen Sie folgende Schritte aus:
      1. Verwenden Sie einen SSH-Client wie PuTTY, um eine SSH-Verbindung zur Citrix ADC VPX-Instanz zu öffnen.

      2. Melden Sie sich mit den Administratoranmeldeinformationen bei der Instanz an.

    2. Überprüfen Sie mit dem folgenden Befehl, ob der Content Switching (cs) -vserver auf der Instanz konfiguriert ist:

          sh cs vserver
      

      Ausgang:

         1) k8s-10.0.139.87:80:http (10.0.139.87:80) - HTTP Type: CONTENT
                  State: UP
                  Last state change was at Fri Apr 12 14:24:13 2019
                  Time since last state change: 3 days, 03:09:18.920
                  Client Idle Timeout: 180 sec
                  Down state flush: ENABLED
                  Disable Primary Vserver On Down : DISABLED
                  Comment: uid=NNJRYQ54VM2KWCXOERK6HRJHR4VEQYRI7U3W4BNFQLTIAENMTHWA====
                  Appflow logging: ENABLED
                  Port Rewrite : DISABLED
                  State Update: DISABLED
                  Default:  Content Precedence: RULE
                  Vserver IP and Port insertion: OFF
                  L2Conn: OFF Case Sensitivity: ON
                  Authentication: OFF
                  401 Based Authentication: OFF
                  Push: DISABLED Push VServer:
                  Push Label Rule: none
                  Listen Policy: NONE
                  IcmpResponse: PASSIVE
                  RHIstate:  PASSIVE
                  Traffic Domain: 0 
      
    3. Greifen test.example.com Sie mit dem DNS-Namen der ELB-Instanz auf die Anwendung zu.

          # curl -H 'Host: test.example.com' <DNS name of the ELB>
      

      Beispiel:

          % curl -H 'Host: test.example.com' http://VPX-HA-829787521.us-west-2.elb.amazonaws.com
      
    4. Verwenden Sie den folgenden Befehl, um die Bereitstellung zu löschen:

          kubectl delete -f app.yaml
      

Problembehandlung

Problem Auflösung
CloudFormation-Stack-Ausfall Stellen Sie sicher, dass der IAM-Benutzer oder die IAM-Rolle ausreichende Berechtigungen zum Erstellen von EC2-Instanzen und Lambda-Konfigurationen besitzt.
  Stellen Sie sicher, dass Sie das Ressourcenkontingent nicht überschritten haben.
Citrix Ingress Controller kann nicht mit den Citrix ADC VPX-Instanzen kommunizieren. Stellen Sie sicher, dass Benutzername und Kennwort in der citrix-ingress-controller.yaml Datei korrekt sind.
  Stellen Sie sicher, dass die Sicherheitsgruppe Citrix ADC VPX den Datenverkehr am Port 80 und 443 von der Sicherheitsgruppe der EKS-Knotengruppe zulässt.
Die Dienste sind in den Citrix ADC VPX-Instanzen DOWN. Stellen Sie sicher, dass der Citrix ADC VPX-Verkehr den EKS-Cluster erreichen kann. Ändern Sie die Sicherheitsgruppe der EKS-Knotengruppe, um Datenverkehr von der Citrix ADC VPX-Sicherheitsgruppe zuzulassen.
Datenverkehr, der nicht von ELB an die Citrix ADC VPX-Instanz weitergeleitet wird. Stellen Sie sicher, dass die Sicherheitsgruppe von Citrix ADC VPX Datenverkehr von der ELB-Sicherheitsgruppe zulässt.
Bereitstellen von Citrix ADC VPX in aktiv-aktiver Hochverfügbarkeit in EKS-Umgebung mithilfe von Amazon ELB und Citrix Ingress Controller