Solución multinube y GSLB con clústeres de Amazon EKS y Microsoft AKS

Last published : Oct 02, 2026
Puede implementar varias instancias de la misma aplicación en varias nubes proporcionadas por diferentes proveedores de la nube. Esta estrategia multinube le ayuda a garantizar la resiliencia, la alta disponibilidad y la proximidad. Un enfoque multinube también le permite aprovechar lo mejor de cada proveedor de la nube, reduciendo riesgos como el bloqueo de proveedor y las interrupciones de la nube.
NetScaler, con la ayuda del NetScaler Ingress Controller, puede realizar el equilibrio de carga multinube. NetScaler puede dirigir el tráfico a clústeres alojados en diferentes sitios de proveedores de la nube. La solución realiza el equilibrio de carga distribuyendo el tráfico de forma inteligente entre las cargas de trabajo que se ejecutan en clústeres de Amazon EKS (Elastic Kubernetes Service) y Microsoft AKS (Azure Kubernetes Service).
Puede implementar la solución multinube y GSLB con Amazon EKS y Microsoft AKS.

Topología de implementación

El siguiente diagrama explica una topología de implementación de la solución de entrada y equilibrio de carga multinube para el servicio de Kubernetes proporcionado por Amazon EKS y Microsoft AKS.
Topología de implementación

Requisitos previos

  • Debe estar familiarizado con AWS y Azure.
  • Debe estar familiarizado con NetScaler y redes de NetScaler.
  • Las instancias de la misma aplicación deben implementarse en clústeres de Kubernetes en Amazon EKS y Microsoft AKS.
Para implementar la solución multinube y GSLB, debe realizar las siguientes tareas.
  1. Implemente NetScaler VPX en AWS.
  2. Implemente NetScaler VPX en Azure.
  3. Configure el servicio ADNS en NetScaler VPX implementado en AWS y AKS.
  4. Configure el servicio GSLB en NetScaler VPX implementado en AWS y AKS.
  5. Aplique CRD de GTP y GSE en clústeres de Kubernetes de AWS y Azure.
  6. Implemente el controlador GSLB.

Implementación de NetScaler VPX en AWS

Debe asegurarse de que las instancias de NetScaler VPX estén instaladas en la misma nube privada virtual (VPC) en el clúster EKS. Esto permite que NetScaler VPX se comunique con las cargas de trabajo de EKS. Puede usar una subred EKS existente o crear una subred para instalar las instancias de NetScaler VPX.
Además, puede instalar las instancias de NetScaler VPX en una VPC diferente. En ese caso, debe asegurarse de que la VPC para EKS pueda comunicarse mediante el emparejamiento de VPC. Para obtener más información sobre el emparejamiento de VPC, consulte la documentación de emparejamiento de VPC.
Para alta disponibilidad (HA), puede instalar dos instancias de NetScaler VPX en modo HA.
  1. Instale NetScaler VPX en AWS. Para obtener información sobre cómo instalar NetScaler VPX en AWS, consulte Implementar instancia de NetScaler VPX en AWS.
    NetScaler VPX requiere una dirección IP pública secundaria, además de la NSIP, para ejecutar la sincronización del servicio GSLB y el servicio ADNS.
  2. Abra la consola de AWS y elija EC2 > Network Interfaces > VPX primary ENI ID > Manage IP addresses. Haga clic en Assign new IP Address.
    Manage-ip-address
    Una vez que la dirección IP pública secundaria se haya asignado a la ENI de VPX, asocie una dirección IP elástica a ella.
  3. Elija EC2 > Network Interfaces > VPX ENI ID - Actions , haga clic en Associate IP Address. Seleccione una dirección IP elástica para la dirección IP secundaria y haga clic en Associate.
    Associate-elastic-ipaddress
  4. Inicie sesión en la instancia de NetScaler VPX y agregue la dirección IP secundaria como SNIP y habilite el acceso de administración mediante el siguiente comando:
    add ip 192.168.211.73 255.255.224.0 -mgmtAccess ENABLED -type SNIP
    Nota:
    • Para iniciar sesión en NetScaler VPX usando SSH, debe habilitar el puerto SSH en el grupo de seguridad. Las tablas de rutas deben tener una puerta de enlace de Internet configurada para el tráfico predeterminado y la NACL debe permitir el puerto SSH.
    • Si está ejecutando el NetScaler VPX en modo de alta disponibilidad (HA), debe realizar esta configuración en ambas instancias de NetScaler VPX.
  5. Habilite las funciones de Conmutación de Contenido (CS), Equilibrio de Carga (LB), Equilibrio de Carga de Servidor Global (GSLB) y SSL en NetScaler VPX usando el siguiente comando:
    enable feature *feature*
    Nota:
    Para habilitar GSLB, debe tener una licencia adicional.
  6. Habilite el puerto 53 para UDP y TCP en el grupo de seguridad de VPX para que NetScaler VPX reciba tráfico DNS. Habilite también el puerto TCP 22 para SSH y el rango de puertos TCP 3008–3011 para el intercambio de métricas GSLB.
    Para obtener información sobre cómo añadir reglas al grupo de seguridad, consulte Adición de reglas a un grupo de seguridad.
  7. Añada un servidor de nombres a NetScaler VPX usando el siguiente comando:
    add nameserver *nameserver IP*

Implementación de NetScaler VPX en Azure

Puede ejecutar una instancia de NetScaler VPX independiente en un clúster de AKS o ejecutar dos instancias de NetScaler VPX en modo de alta disponibilidad en el clúster de AKS.
Durante la instalación, asegúrese de que el clúster de AKS debe tener conectividad con las instancias de VPX. Para garantizar la conectividad, puede instalar el NetScaler VPX en la misma red virtual (VNet) en el clúster de AKS en un grupo de recursos diferente.
Al instalar el NetScaler VPX, seleccione la VNet donde está instalado el clúster de AKS. Alternativamente, puede usar el emparejamiento de VNet para asegurar la conectividad entre AKS y NetScaler VPX si el VPX se implementa en una VNet diferente a la del clúster de AKS.
  1. Instale NetScaler VPX en AWS. Para obtener información sobre la instalación de NetScaler VPX en AKS, consulte Implementar una instancia de NetScaler VPX en Microsoft Azure.
    Debe tener un SNIP con IP pública para la sincronización GSLB y el servicio ADNS. Si ya existe un SNIP, asocie una dirección IP pública a él.
  2. Para asociar, elija Inicio > Grupo de recursos > Instancia VPX > Instancia NIC VPX. Asocie una dirección IP pública como se muestra en la siguiente imagen. Haga clic en Guardar para guardar los cambios.
    captura de pantalla
  3. Inicie sesión en la instancia de Azure NetScaler VPX y añada la IP secundaria como SNIP con el acceso de administración habilitado mediante el siguiente comando:
    add ip 10.240.0.11 255.255.0.0 -type SNIP -mgmtAccess ENABLED
    Si el recurso existe, puede usar el siguiente comando para habilitar el acceso de administración en el recurso existente.
    set ip 10.240.0.11 -mgmtAccess ENABLED
  4. Habilite las funciones CS, LB, SSL y GSLB en NetScaler VPX mediante el siguiente comando:
    enable feature *feature*
    Para acceder a la instancia de NetScaler VPX a través de SSH, debe habilitar la regla de puerto de entrada para el puerto SSH en el grupo de seguridad de red de Azure que está asociado a la interfaz principal de NetScaler VPX.
  5. Habilite la regla de entrada para los siguientes puertos en el grupo de seguridad de red en el portal de Azure.
    • TCP: 3008–3011 para el intercambio de métricas GSLB
    • TCP: 22 para SSH
    • TCP y UDP: 53 para DNS
  6. Añada un servidor de nombres a NetScaler VPX mediante el siguiente comando:
    add nameserver *nameserver IP*

Configurar el servicio ADNS en NetScaler VPX implementado en AWS y Azure

El servicio ADNS en NetScaler VPX actúa como un DNS autoritativo para su dominio. Para obtener más información sobre el servicio ADNS, consulte Servicio DNS autoritativo.
  1. Inicie sesión en AWS NetScaler VPX y configure el servicio ADNS en la dirección IP secundaria y el puerto 53 mediante el siguiente comando:
    add service Service-ADNS-1 192.168.211.73 ADNS 53
    verificar la configuración mediante el siguiente comando:
    show service Service-ADNS-1
  2. Inicie sesión en Azure NetScaler VPX y configure el servicio ADNS en la dirección IP secundaria y el puerto 53 utilizando el siguiente comando:
    add service Service-ADNS-1 10.240.0.8 ADNS 53
    verificar la configuración utilizando el siguiente comando:
    show service Service-ADNS-1
  3. Después de crear dos servicios ADNS para el dominio, actualice el registro NS del dominio para que apunte a los servicios ADNS en el registrador de dominios.
    Por ejemplo, cree un registro 'A' ns1.domain.com que apunte a la dirección IP pública del servicio ADNS. El registro NS del dominio debe apuntar a ns1.domain.com.

Configurar el servicio GSLB en NetScaler VPX implementado en AWS y Azure

Debe crear sitios GSLB en NetScaler VPX implementados en AWS y Azure.
  1. Inicie sesión en AWS NetScaler VPX y configure los sitios GSLB en la dirección IP secundaria utilizando el siguiente comando. Además, especifique la dirección IP pública utilizando el argumento –publicIP. Por ejemplo:
    add gslb site aws_site 192.168.197.18 -publicIP 3.139.156.175

    add gslb site azure_site 10.240.0.11 -publicIP 23.100.28.121
  2. Inicie sesión en Azure NetScaler VPX y configure los sitios GSLB. Por ejemplo:
    add gslb site aws_site 192.168.197.18 -publicIP 3.139.156.175

    add gslb site azure_site 10.240.0.11 -publicIP 23.100.28.121
  3. verificar que la sincronización de GSLB se ha realizado correctamente iniciando una sincronización desde cualquiera de los sitios utilizando el siguiente comando:
    sync gslb config –debug
Nota:
Si la sincronización inicial falla, revise los grupos de seguridad tanto en AWS como en Azure para permitir los puertos necesarios.

Aplicar CRD de GTP y GSE en clústeres de Kubernetes de AWS y Azure

Las CRD de política de tráfico global (GTP) y entrada de servicio global (GSE) ayudan a configurar NetScaler para realizar GSLB en aplicaciones de Kubernetes. Estas CRD están diseñadas para configurar el controlador GSLB de NetScaler para aplicaciones implementadas en clústeres de Kubernetes distribuidos.

CRD de GTP

La CRD de GTP acepta los parámetros para configurar GSLB en NetScaler, incluido el tipo de implementación (canary, conmutación por error y local-first), el dominio GSLB, el monitor de estado para el ingreso y el tipo de servicio.
Para la definición de CRD de GTP, consulte el CRD de GTP. Aplique la definición de CRD de GTP en los clústeres de Kubernetes de AWS y Azure utilizando el siguiente comando:
kubectl apply -f https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/gslb/Manifest/gtp-crd.yaml

CRD de GSE

El CRD de GSE especifica la información del punto final (información sobre cualquier objeto de Kubernetes que enruta el tráfico al clúster) en cada clúster. La entrada de servicio global selecciona automáticamente la dirección IP externa de la aplicación, que enruta el tráfico al clúster. Si la dirección IP externa de las rutas cambia, la entrada de servicio global selecciona una dirección IP recién asignada y configura los puntos finales GSLB de NetScalers en consecuencia.
Para la definición de CRD de GSE, consulte el CRD de GSE. Aplique la definición de CRD de GSE en los clústeres de Kubernetes de AWS y Azure utilizando el siguiente comando:
kubectl apply -f https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/gslb/Manifest/gse-crd.yaml

Implementar el controlador GSLB

El controlador GSLB le ayuda a garantizar la alta disponibilidad de las aplicaciones en todos los clústeres en un entorno multinube.
Puede instalar el controlador GSLB en los clústeres de AWS y Azure. El controlador GSLB escucha los CRD de GTP y GSE y configura el NetScaler para GSLB, lo que proporciona alta disponibilidad en varias regiones en un entorno multinube.
Para implementar el controlador GSLB, realice los siguientes pasos:
  1. Cree un RBAC para el controlador GSLB en los clústeres de Kubernetes de AWS y Azure.
    kubectl apply -f https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/gslb/Manifest/gslb-rbac.yaml
  2. Cree los secretos en los clústeres de AWS y Azure utilizando el siguiente comando:
    Nota:
    Los secretos permiten que el controlador GSLB se conecte y envíe la configuración a los dispositivos GSLB.
    kubectl create secret generic secret-1 --from-literal=username=<username> --from-literal=password=<password>
    Nota:
    Puede añadir un usuario a NetScaler utilizando el comando add system user.
  3. Descargue el archivo YAML del controlador GSLB desde gslb-controller.yaml.
  4. Aplique el gslb-controller.yaml en un clúster de AWS usando el siguiente comando:
    kubectl apply -f  gslb-controller.yaml
    Para el entorno de AWS, edite el gslb-controller.yaml para definir las variables de entorno LOCAL_REGION, LOCAL_CLUSTER y SITENAMES.
    El siguiente ejemplo define la variable de entorno LOCAL_REGION como us-east-2 y LOCAL_CLUSTER como eks-cluster, y la variable de entorno SITENAMES como aws_site,azure_site.
    name: "LOCAL_REGION"
    value: "us-east-2"
    name: "LOCAL_CLUSTER"
    value: "eks-cluster"
    name: "SITENAMES"
    value: "aws_site,azure_site"
    name: "aws_site_ip"
    value: "NSIP of aws VPX(internal IP)"
    name: "aws_site_region"
    value: "us-east-2"
    name: "azure_site_ip"
    value: "NSIP of azure_VPX(public IP)"
    name: "azure_site_region"
    value: "central-india"
    name: "azure_site_username"
    valueFrom:
      secretKeyRef:
       name: secret-1
       key: username
    name: "azure_site_password"
    valueFrom:
      secretKeyRef:
       name: secret-1
       key: password
    name: "aws_site_username"
    valueFrom:
      secretKeyRef:
       name: secret-1
       key: username
    name: "aws_site_password"
    valueFrom:
      secretKeyRef:
       name: secret-1
       key: password
    Aplique el gslb-controller.yaml en el clúster de Azure usando el siguiente comando:
    kubectl apply -f  gslb-controller.yaml
  5. Para el sitio de Azure, edite el gslb-controller.yaml para definir las variables de entorno LOCAL_REGION, LOCAL_CLUSTER y SITENAMES.
    El siguiente ejemplo define la variable de entorno LOCAL_REGION como central-india, LOCAL_CLUSTER como azure-cluster, y SITENAMES como aws_site, azure_site.
    name: "LOCAL_REGION"
    value: "central-india"
    name: "LOCAL_CLUSTER"
    value: "aks-cluster"
    name: "SITENAMES"
    value: "aws_site,azure_site"
    name: "aws_site_ip"
    value: "NSIP of AWS VPX(public IP)"
    name: "aws_site_region"
    value: "us-east-2"
    name: "azure_site_ip"
    value: "NSIP of azure VPX(internal IP)"
    name: "azure_site_region"
    value: "central-india"
    name: "azure_site_username"
    valueFrom:
      secretKeyRef:
       name: secret-1
       key: username
    name: "azure_site_password"
    valueFrom:
      secretKeyRef:
       name: secret-1
       key: password
    name: "aws_site_username"
    valueFrom:
      secretKeyRef:
       name: secret-1
       key: username
    name: "aws_site_password"
    valueFrom:
      secretKeyRef:
       name: secret-1
       key: password
    Nota: El orden de la información del sitio GSLB debe ser el mismo en todos los clústeres. El primer sitio en el orden se considera el sitio maestro para enviar la configuración. Siempre que el sitio maestro se caiga, el siguiente sitio en la lista se convierte en el nuevo maestro. Por lo tanto, el orden de los sitios debe ser el mismo en todos los clústeres de Kubernetes.

Implementar una aplicación de ejemplo

En este escenario de implementación de aplicación de ejemplo, se utiliza una imagen https de apache. Sin embargo, puede elegir la aplicación de ejemplo de su preferencia.
La aplicación se expone como tipo LoadBalancer tanto en clústeres de AWS como de Azure. Debe ejecutar los comandos en ambos clústeres de Kubernetes de AWS y Azure.
  1. Cree una implementación de una aplicación apache de ejemplo usando el siguiente comando:
    kubectl create deploy apache --image=httpd:latest port=80
  2. Exponga la aplicación apache como un servicio de tipo LoadBalancer usando el siguiente comando:
    kubectl expose deploy apache --type=LoadBalancer --port=80
  3. verificar que se asigna una dirección IP externa para el servicio de tipo LoadBalancer usando el siguiente comando:
    kubectl get svc apache
    NAME     TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)        AGE
    apache   LoadBalancer   10.0.16.231   20.62.235.193   80:32666/TCP   3m2s
Después de implementar la aplicación en clústeres de AWS y Azure, debe configurar el recurso personalizado GTE para configurar la alta disponibilidad en los clústeres multinube.
Cree un recurso GTP YAML gtp_isntance.yaml como se muestra en el siguiente ejemplo.
apiVersion: "citrix.com/v1beta1"
 kind: globaltrafficpolicy
 metadata:
   name: gtp-sample-app
   namespace: default
 spec:
   serviceType: 'HTTP'
   hosts:
   - host: <domain name>
     policy:
       trafficPolicy: 'FAILOVER'
       secLbMethod: 'ROUNDROBIN'
       targets:
       - destination: 'apache.default.us-east-2.eks-cluster'
         weight: 1
       - destination: 'apache.default.central-india.aks-cluster'
         primary: false
         weight: 1
       monitor:
       - monType: http
         uri: ''
         respCode: 200
   status:
     {}
En este ejemplo, la política de tráfico está configurada como FAILOVER. Sin embargo, el controlador de clústeres múltiples admite varias políticas de tráfico. Para obtener más información, consulte la documentación de las políticas de tráfico.
Aplique el recurso GTP en ambos clústeres mediante el siguiente comando:
kubectl apply -f gtp_instance.yaml
Puede verificar que el recurso GSE se crea automáticamente en ambos clústeres con la información de punto final requerida derivada del estado del servicio. verificar usando el siguiente comando:
kubectl get gse
kubectl get gse *name* -o yaml
Además, inicie sesión en NetScaler VPX y verificar que la configuración de GSLB se ha creado correctamente mediante el siguiente comando:
show gslb runningconfig
Dado que el CRD de GTP está configurado para la política de tráfico como FAILOVER, las instancias de NetScaler VPX sirven el tráfico desde el clúster principal (clúster EKS en este ejemplo).
curl -v http://*domain_name*
Sin embargo, si un punto final no está disponible en el clúster EKS, las aplicaciones se sirven automáticamente desde el clúster de Azure. Puede asegurarse de ello configurando el recuento de réplicas en 0 en el clúster principal.

NetScaler VPX como dispositivo de entrada y GSLB para clústeres de Amazon EKS y Microsoft AKS

Puede implementar la solución de entrada y equilibrio de carga multinube y multiclúster con Amazon EKS y Microsoft AKS con NetScaler VPX como GSLB y el mismo NetScaler VPX también como dispositivo de entrada.
Para implementar la entrada y el equilibrio de carga multinube y multiclúster con NetScaler VPX como dispositivo de entrada, debe completar las siguientes tareas descritas en las secciones anteriores:
Después de completar las tareas anteriores, realice las siguientes tareas:
  1. Configurar NetScaler VPX como dispositivo de entrada para AWS
  2. Configurar NetScaler VPX como dispositivo de entrada para Azure

Configurar NetScaler VPX como dispositivo de entrada para AWS

Realice los siguientes pasos:
  1. Crear credenciales de inicio de sesión de NetScaler VPX utilizando el secreto de Kubernetes
    kubectl create secret  generic nslogin --from-literal=username='nsroot' --from-literal=password='&lt;instance-id-of-vpx>'
    La contraseña de NetScaler VPX suele ser el ID de instancia del VPX si no la ha cambiado.
  2. Configure SNIP en el NetScaler VPX conectándose al NetScaler VPX mediante SSH. SNIP es la dirección IP secundaria de un Citrix VPX a la que no se le asigna la dirección IP elástica.
    add ns ip 192.168.84.93 255.255.224.0
    Este paso es necesario para que NetScaler interactúe con los pods dentro del clúster de Kubernetes.
  3. Actualice la dirección IP de administración y la VIP de NetScaler VPX en el manifiesto del NetScaler Ingress Controller.
    wget https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/deployment/aws/quick-deploy-cic/manifest/cic.yaml
    Nota:
    Si no tiene wget instalado, puede usar fetch o curl.
  4. Actualice la dirección IP principal de NetScaler VPX en el cic.yaml en el siguiente campo.
    # Set NetScaler NSIP/SNIP, SNIP in case of HA (mgmt has to be enabled)
     - name: "NS_IP"
       value: "X.X.X.X"
  5. Actualice la VIP de NetScaler VPX en el cic.yaml en el siguiente campo. Esta es la dirección IP privada a la que ha asignado una dirección IP elástica
    # Set NetScaler® VIP for the data traffic
    - name: "NS_VIP"
      value: "X.X.X.X"
  6. Una vez que haya editado el archivo YAML con los valores requeridos, implemente NetScaler Ingress Controller.
    kubectl create -f cic.yaml

Configurar NetScaler VPX como dispositivo Ingress para Azure

Realice los siguientes pasos:
  1. Cree credenciales de inicio de sesión de NetScaler VPX utilizando secretos de Kubernetes.
    kubectl create secret  generic nslogin --from-literal=username='&lt;azure-vpx-instance-username>' --from-literal=password='&lt;azure-vpx-instance-password>'
    Nota:
    El nombre de usuario y la contraseña de NetScaler VPX deben ser los mismos que las credenciales establecidas al crear NetScaler VPX en Azure.
  2. Mediante SSH, configure una SNIP en el NetScaler VPX, que es la dirección IP secundaria del NetScaler VPX. Este paso es necesario para que NetScaler interactúe con los pods dentro del clúster de Kubernetes.
    add ns ip &lt;snip-vpx-instance-private-ip> &lt;vpx-instance-primary-ip-subnet>
    • snip-vpx-instance-private-ip es la dirección IP privada dinámica asignada al agregar una SNIP durante la creación de la instancia de NetScaler VPX.
    • vpx-instance-primary-ip-subnet es la subred de la dirección IP privada principal de la instancia de NetScaler VPX.
    Para verificar la subred de la dirección IP privada, conéctese por SSH a la instancia de NetScaler VPX y utilice el siguiente comando.
    show ip &lt;primary-private-ip-addess>
  3. Actualice la URL de la imagen de NetScaler VPX, la dirección IP de administración y la VIP en el archivo YAML del NetScaler Ingress Controller.
    1. Descargue el archivo YAML del NetScaler Ingress Controller.
      wget https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/deployment/azure/manifest/azurecic/cic.yaml
      Nota:
      Si no tiene wget instalado, puede usar el comando fetch o curl.
    2. Actualice la imagen del NetScaler Ingress Controller con la URL de la imagen de Azure en el archivo cic.yaml.
      - name: cic-k8s-ingress-controller
        # CIC Image from Azure
        image: "&lt;azure-cic-image-url>"
    3. Actualice la dirección IP principal del NetScaler VPX en el cic.yaml con la dirección IP privada principal de la instancia de Azure VPX.
      # Set NetScaler NSIP/SNIP, SNIP in case of HA (mgmt has to be enabled)
      - name: "NS_IP"
        value: "X.X.X.X"
    4. Actualice el VIP de NetScaler VPX en el cic.yaml con la dirección IP privada del VIP asignado durante la creación de la instancia de VPX en Azure.
      # Set NetScaler VIP for the data traffic
      - name: "NS_VIP"
        value: "X.X.X.X"
  4. Una vez que haya configurado NetScaler Ingress Controller con los valores requeridos, implemente el NetScaler Ingress Controller utilizando el siguiente comando.
    kubectl create -f cic.yaml