Citrix ADC Ingress Controller

Direkte Serverrückgabe bereitstellen

In einem typischen System mit Lastausgleich fungiert ein Load Balancer als Vermittler zwischen Webservern und Clients. Eingehende Clientanforderungen werden vom Load Balancer empfangen und leitet die Anforderungen mit geringfügigen Änderungen an den Datenpaketen an den entsprechenden Server weiter. Der Server reagiert auf den Load Balancer mit den erforderlichen Daten, und dann leitet der Load Balancer die Antwort an den Client weiter.

In einer Direct Server Return (DSR) -Bereitstellung leitet der Load Balancer die Clientanfrage an den Server weiter, aber der Backend-Server sendet die Antwort direkt an den Client. Die Verwendung verschiedener Netzwerkpfade für Anfrage und Antwort hilft, zusätzliche Sprünge zu vermeiden und die Latenz zu reduzieren. Da der Server direkt auf den Client reagiert, beschleunigt DSR die Reaktionszeit zwischen dem Client und dem Server und entlastet zusätzlich den Load Balancer. Die Verwendung von DSR ist eine transparente Methode, um eine höhere Netzwerkleistung für Ihre Anwendungen ohne oder nur geringe Änderungen an der Infrastruktur zu erreichen. Weitere Informationen zu DSR mit Citrix ADC finden Sie in der Citrix ADC-Dokumentation.

Die DSR-Lösung ist in folgenden Situationen nützlich:

  • Bei der Verarbeitung von Anwendungen, die Videostreaming bereitstellen, wo es auf niedrige Latenz (Reaktionszeit) ankommt.
  • Wo intelligentes Load Balancing nicht erforderlich ist
  • Wenn die Ausgabekapazität des Load-Balancers der Engpass sein kann

Wenn Sie jedoch den DSR verwenden, werden erweiterte Layer 7-Lastausgleichsfunktionen nicht unterstützt.

DSR-Netzwerktopologie für Kubernetes mit Citrix ADC

In dieser Topologie gibt es einen externen Load-Balancer (Tier-1-ADC), der den Datenverkehr auf den eingehenden ADC (Tier 2 ADC) verteilt, der innerhalb des Kubernetes-Clusters über ein Overlay (L3 DSR IPIP) bereitgestellt wird. Tier-2-ADC nimmt das Paket auf, entkapselt das Paket und führt einen Lastenausgleich zwischen den Diensten durch. Der Tier-2-ADC sendet den Rückverkehr vom Dienst zum Client, anstatt ihn über Tier-1-ADC zu senden.

DSR_Traffic_Flow

Bereitstellen von DSR für Cloud-native Anwendungen mit Citrix ADC

Führen Sie die Schritte in den folgenden Abschnitten aus, um DSR für Anwendungen bereitzustellen, die auf dem Kubernetes-Cluster bereitgestellt werden.

Bereitstellen von Citrix ADC CPX als Tier-2-ADC

Dieser Abschnitt enthält Schritte zum Erstellen von Konfigurationen, die auf dem Eingangsgerät für die DSR-Topologie erforderlich sind.

  1. Erstellen Sie mit dem folgenden Befehl einen Namespace für DSR:

    kubectl apply -f  https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/example/dsr/KubernetesConfig/dsr_namespace.yaml
    
  2. Erstellen Sie mit dem folgenden Befehl eine ConfigMap.

    kubectl apply -f  https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/example/dsr/KubernetesConfig/cpx_config.yaml  -n dsr
    

    Hinweis:

    In diesem Beispiel ist das Citrix Node Controller-Netzwerk als 192.168.1.0/24 konfiguriert. Daher wird der Befehl zum Erstellen eines IP-Tunnels als bereitgestellt add iptunnel dsr 192.168.1.254 255.255.255.0 *. Sie müssen den Wert entsprechend Ihrer CNC-Konfiguration angeben.

  3. Stellen Sie Citrix ADC CPX auf dem Namespace bereit dsr.

    kubectl apply -f https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/example/dsr/KubernetesConfig/citrix-k8s-cpx-ingress.yml  -n dsr
    

Bereitstellen einer Beispielanwendung auf dem Kubernetes-Cluster

Führen Sie die Schritte in diesem Abschnitt aus, um eine Beispielanwendung auf einem Kubernetes-Cluster bereitzustellen.

  1. Stellen Sie die Guestbook-Anwendung mit dem folgenden Befehl bereit.

    kubectl apply -f https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/example/dsr/KubernetesConfig/guestbook-all-in-one.yaml  -n dsr 
    
  2. Stellen Sie die Gästebuch-Anwendung mithilfe von Ingress bereit.

    1. Laden Sie die YAML-Datei für das Gästebuch mit dem folgenden Befehl herunter.

      wget https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/example/dsr/KubernetesConfig/guestbook-all-in-one.yaml
      
    2. Bearbeiten und geben Sie die DSR-IP oder die öffentliche IP-Adresse an, über die Sie mithilfe der ingress.citrix.com/frontend-ip: Anmerkungen auf Ihre Anwendung zugreifen.

      ingress.citrix.com/frontend-ip: "<ip-address>"
      
    3. Speichern Sie die YAML-Datei und stellen Sie die Ingress-Ressource mit dem folgenden Befehl bereit.

      kubectl apply -f guestbook-ingress.yaml -n dsr
      

Herstellen der Netzwerkkonnektivität zwischen Tier-1- und Tier-2-ADCs

Führen Sie die Schritte in diesem Abschnitt aus, um die Netzwerkkonnektivität zwischen Tier-1- und Tier-2-ADCs herzustellen.

  1. Laden Sie die YAML herunter, um Citrix Node Controller mit dem folgenden Befehl bereitzustellen.

    wget https://raw.githubusercontent.com/citrix/citrix-k8s-node-controller/master/deploy/citrix-k8s-node-controller.yaml
    
  2. Bearbeiten Sie die YAML-Datei und geben Sie die Werte für die Argumente NS_IP, NS_USER, NS_PASSWORD und REMOTE_VTEPIP an. Ausführliche Informationen finden Sie unter Citrix Node Controller.

  3. Speichern Sie die YAML-Datei und stellen Sie den Citrix Node Controller bereit.

       kubectl create -f citrix-k8s-node-controller.yaml -n dsr
    

Stellen Sie den Citrix Ingress Controller für Tier-1-ADC bereit und stellen Sie Citrix ADC CPX als Dienst bereit

Führen Sie die folgenden Schritte aus, um den Citrix Ingress Controller als eigenständigen Pod bereitzustellen und eine Ingress-Ressource für Tier-2 Citrix ADC CPX zu erstellen.

  1. Laden Sie die Citrix Ingress Controller-YAML-Datei mit dem folgenden Befehl herunter.

        wget https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/example/dsr/KubernetesConfig/citrix-k8s-ingress-controller.yaml
    
  2. Bearbeiten Sie die YAML-Datei und aktualisieren Sie die folgenden Werte für Citrix Ingress Controller.

    • NS_IP
    • NS_USER
    • NS_PASSWORD

    Weitere Informationen finden Sie unter Bereitstellen des Citrix Ingress Controller mit YAML.

  3. Speichern Sie die YAML-Datei und stellen Sie den Citrix Ingress Controller bereit.

       kubectl create -f citrix-k8s-ingress-controller.yaml -n dsr
    
  4. Erstellen Sie eine DSR-Konfiguration auf Tier-1-ADC, indem Sie eine Eingangsressource für den Tier-2-Citrix ADC CPX erstellen.

      wget https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/example/dsr/KubernetesConfig/vpx-ingress.yaml 
    
  5. Bearbeiten Sie die YAML-Datei und geben Sie den DSR oder die öffentliche IP-Adresse an, über die der Benutzer mithilfe der ingress.citrix.com/frontend-ip: Anmerkung auf Ihre Anwendung zugreift. Diese IP-Adresse muss mit der IP-Adresse übereinstimmen, die Sie in Schritt 2 angegeben haben.

      kubectl apply -f vpx-ingress.yaml  -n dsr
    

Testen der DSR-Bereitstellung

Um die DSR-Bereitstellung zu testen, greifen Sie über einen Browser mit der für die ingress.citrix.com/frontend-ip: Anmerkung angegebenen IP-Adresse auf die Anwendung zu. Eine Gästebuchseite ist ausgefüllt.

Eine Beispielausgabe wird wie folgt gegeben:

ApplicationOutput

Problembehandlung

Wenn Sie die Anwendung testen, werden möglicherweise keine Seiten gefüllt, obwohl alle erforderlichen Konfigurationen erstellt wurden. Dies liegt an den rp_filter<!--NeedCopy--> Regeln für den Host. Wenn ein solches Problem auftritt, verwenden Sie die folgenden Befehle auf allen Hosts, um die Regeln zu deaktivieren.

    sysctl -w net.ipv4.conf.all.rp_filter=0
    sysctl -w net.ipv4.conf.cni0.rp_filter=0
    sysctl -w net.ipv4.conf.eth0.rp_filter=0
    sysctl -w net.ipv4.conf.cni0.rp_filter=0
    sysctl -w net.ipv4.conf.default.rp_filter=0
Direkte Serverrückgabe bereitstellen