Service Mesh ASM ofrece capacidades de distribución de tráfico y conmutación por error entre regiones para los servicios de aplicaciones. La distribución de tráfico entre regiones enruta el tráfico a varios clústeres según los pesos configurados, lo que permite equilibrar la carga en múltiples regiones. La conmutación por error entre regiones traslada el tráfico de una región con errores hacia otras regiones para lograr la recuperación ante desastres. Este tema toma como ejemplo la aplicación Bookinfo y describe cómo usar la conmutación por error y la distribución de tráfico entre regiones para implementar la recuperación ante desastres y el equilibrio de carga.
Planificación de red
Antes de empezar, planifique los bloques CIDR, los nombres y otros detalles de sus vSwitch, VPC y clústeres. En este tema se utiliza la siguiente planificación:
Para obtener más información sobre la planificación de direcciones de múltiples clústeres en el plano de datos, consulte Multi-cluster network planning.
-
Planificación de red de vSwitch y VPC
-
Planificación de red VPC
Objeto
Nombre de VPC
Región
Bloque CIDR IPv4
Clúster
vpc-hangzhou
cn-hangzhou
20.0.0.0/8
vpc-shanghai
cn-shanghai
21.0.0.0/8
Service Mesh
vpc-hangzhou2
cn-hangzhou
192.168.0.0/16
-
Planificación de red de vSwitch
ImportantePara evitar conflictos de rutas después de conectar las VPC mediante CEN, asegúrese de que los dos vSwitch no utilicen bloques CIDR superpuestos.
Objeto
Nombre del vSwitch
VPC
Bloque CIDR IPv4
Clúster
vpc-hangzhou-switch-1
vpc-hangzhou
20.0.0.0/16
vpc-shanghai-switch-1
vpc-shanghai
21.0.0.0/16
Service Mesh
vpc-hangzhou-switch-2
vpc-hangzhou2
192.168.0.0/24
-
-
Planificación de red de Pod y Service para los clústeres
Nombre del clúster
Región
VPC
CIDR de Pod
CIDR de Service
ack-hangzhou
cn-hangzhou
vpc-hangzhou
10.0.0.0/16
172.16.0.0/16
ack-shanghai
cn-shanghai
vpc-shanghai
10.1.0.0/16
172.17.0.0/16
Paso 1: Crear clústeres en diferentes regiones
Cree VPC y vSwitch en las regiones China (Hangzhou) y China (Shanghai) de acuerdo con la planificación anterior. Para obtener más información, consulte Create a vSwitch y Create a VPC and a vSwitch.
Cree clústeres en las regiones China (Hangzhou) y China (Shanghai) con las VPC y la planificación de red descritas anteriormente. Para obtener más información, consulte Create an ACK managed cluster.
Cree una instancia de ASM en la región China (Hangzhou) de acuerdo con la planificación anterior. Para obtener más información, consulte Create an ASM instance.
Paso 2: Usar CEN para conectar VPC entre regiones
Utilice CEN para conectar las redes VPC entre los clústeres y entre los clústeres y Service Mesh.
Inicie sesión en la consola de Cloud Enterprise Network y cree una instancia de CEN. Para obtener más información, consulte Create a Cloud Enterprise Network instance.
-
Cree transit routers.
En la página Cloud Enterprise Network instances, haga clic en la instancia de CEN creada en Step 1. Después, en la pestaña Basic Information, haga clic en Create Transit Router.
En el cuadro de diálogo Create Transit Router, seleccione una Region, introduzca un Name y haga clic en Confirm.
En este ejemplo se crean dos transit routers:
Region: China (Shanghai), Name: shanghai-router.
Region: China (Hangzhou), Name: hangzhou-router.
-
Agregue VPC a los transit routers. Repita los siguientes pasos tanto para el transit router de Shanghai como para el de Hangzhou con el fin de conectar sus respectivas VPC.
En la página Cloud Enterprise Network instances, haga clic en la instancia de CEN creada en Step 1. Luego, en la pestaña Basic Information, haga clic en el ID del transit router recién creado para ir a su página de detalles.
Haga clic en la pestaña Intra-region Connections y luego en Create Network Instance Connection. Establezca Instance Type en Virtual Private Cloud (VPC) y seleccione la instancia de VPC correspondiente a la región en Network Instance.
Mantenga el resto de los ajustes con sus valores predeterminados y haga clic en Create.
-
Configure el ancho de banda entre regiones.
Haga clic en el transit router creado en Step 2. En el lado derecho de la página, haga clic en Create Network Instance Connection.
-
En el cuadro de diálogo Connect Network Instance, configure los ajustes y haga clic en Create.
El siguiente ejemplo muestra la configuración de Hangzhou a Shanghai. Region hace referencia a la región actual y Peer Region a la región de destino. Para obtener más información sobre las opciones de configuración, consulte Inter-region connection. Configure los siguientes ajustes: establezca Instance Type en Inter-region Connection, Region en China (Hangzhou), Connection Name en
to-shanghai, Peer Region en China (Shanghai), Bandwidth Allocation Method en Pay-by-Data-Transfer y Bandwidth en1Mbps. Expanda Advanced Configuration y seleccione las siguientes casillas de verificación: Automatically Associate with Default Route Table of Transit Router, Automatically Propagate System Routes to Default Route Table of Transit Router y Automatically Publish Routes to Peer Region.Después de crearla, puede consultar la nueva instancia en la pestaña Inter-region Connections.
-
Agregue reglas de security group.
El siguiente ejemplo utiliza el complemento de red Flannel. Agregue el bloque CIDR de Pod del clúster par al security group de cada clúster.
NotaSi utiliza el complemento de red Terway, use el bloque CIDR del vSwitch del clúster. Inicie sesión en la consola de VPC y busque el bloque CIDR del vSwitch en la página vSwitch, dentro de la columna IPv4 CIDR.
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
-
Obtenga los bloques CIDR de Pod.
En la página Clusters, seleccione la región China (Shanghai), haga clic en el nombre del clúster ack-shanghai y, en la página Cluster Information, vaya a la pestaña Basic Information para obtener el bloque CIDR de Pod del clúster ack-shanghai.
Regrese a la página Clusters, seleccione la región China (Hangzhou), haga clic en el nombre del clúster ack-hangzhou y, en la página Cluster Information, vaya a la pestaña Basic Information para obtener el bloque CIDR de Pod del clúster ack-hangzhou.
-
Configure los security groups.
En la página Cluster Information de cada clúster, vaya a la pestaña Basic Information y haga clic en el ID del security group junto a Control Plane Security Group.
En la pestaña Security Group Details, dentro de Inbound, haga clic en Add Rule.
Establezca Protocol Type en All, defina Source con el bloque CIDR de Pod del clúster par, mantenga el resto de los ajustes con sus valores predeterminados y luego haga clic en Actions → Save.
Inicie sesión en los nodos de ambos clústeres y use el comando ping para probar la conectividad entre ellos. Para obtener más información, consulte Log on to a node.
Paso 3: Agregar clústeres a la instancia de ASM y crear una puerta de enlace de entrada administrada
Agregue los clústeres de las regiones China (Hangzhou) y China (Shanghai) a la instancia de ASM. Para obtener más información, consulte Add a cluster to an ASM instance.
-
Cree una puerta de enlace de entrada.
apiVersion: istio.alibabacloud.com/v1beta1 kind: IstioGateway metadata: annotations: asm.alibabacloud.com/managed-by-asm: 'true' name: ingressgateway namespace: istio-system spec: gatewayType: ingress dnsPolicy: ClusterFirst externalTrafficPolicy: Local hostNetwork: false ports: - name: http port: 80 protocol: TCP targetPort: 80 - name: https port: 443 protocol: TCP targetPort: 443 replicaCount: 1 resources: limits: cpu: '2' memory: 2G requests: cpu: 200m memory: 256Mi rollingMaxSurge: 100% rollingMaxUnavailable: 25% runAsRoot: true serviceType: LoadBalancer
Paso 4: Desplegar la aplicación de demostración Bookinfo
Los siguientes pasos requieren cambiar varias veces los contextos de kubeconfig. Se recomienda configurar los archivos kubeconfig de ambos clústeres en el mismo archivo y usar kubectl config use-context para alternar entre contextos. También puede utilizar kubecm o kubectx para gestionar los archivos kubeconfig de varios clústeres.
-
Despliegue la aplicación Bookinfo en los clústeres ack-hangzhou y ack-shanghai.
kubectl apply -f bookinfo.yaml -
Conéctese a la instancia de ASM mediante kubectl y cree las reglas de enrutamiento.
-
Cree el archivo asm.yaml con el siguiente contenido.
-
Cree las reglas de enrutamiento.
kubectl apply -f asm.yaml
-
-
Compruebe que la aplicación Bookinfo se haya desplegado correctamente.
Dirección de Obtain the ingress gateway.
-
En la barra de direcciones de su navegador, introduzca http://{dirección IP de la puerta de enlace de entrada}/productpage y actualice la página varias veces para observar el enrutamiento round-robin predeterminado.
Cada vez que actualiza la página, accede a una de las versiones v1, v2 o v3 del servicio reviews. Notará que el tráfico hacia las tres versiones del servicio reviews se distribuye en una proporción aproximada de 1:1:1.
La página de reviews-v1 solo muestra reseñas de texto sin calificaciones de estrellas; la de reviews-v2 muestra calificaciones con estrellas negras, y la de reviews-v3 presenta calificaciones con estrellas rojas.
Paso 5: Usar la conmutación por error y la distribución de tráfico entre regiones
Configurar la conmutación por error entre regiones
-
Deshabilite el servicio reviews en el clúster ack-hangzhou.
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en .
En la página Deployments, establezca Namespace en default y haga clic en Scale en la columna Actions, a la derecha de reviews-v1.
En el cuadro de diálogo Scale, establezca Desired Number of Pods en 0 y haga clic en OK.
-
Configure DestinationRule.
Configure DestinationRule para que, si el servicio reviews no responde en 1 segundo, se expulse durante 1 minuto.
En la página de detalles de la instancia de ASM, elija en el panel de navegación izquierdo.
En la página DestinationRule, haga clic en YAML en la columna Actions, junto a reviews.
-
En el panel Edit, agregue el siguiente contenido y haga clic en OK.
spec: ...... trafficPolicy: connectionPool: http: maxRequestsPerConnection: 1 outlierDetection: baseEjectionTime: 1m consecutive5xxErrors: 1 interval: 1smaxRequestsPerConnection: número máximo de solicitudes por conexión.
baseEjectionTime: duración mínima de la expulsión.
consecutive5xxErrors: número de errores consecutivos.
interval: intervalo entre las comprobaciones de expulsión.
-
Habilite la conmutación por error entre regiones.
En la página de detalles de la instancia de ASM, elija en el panel de navegación izquierdo.
-
Versión de instancia de ASM anterior a 1.22.6.66
En la página Base Information, haga clic en Geolocation-based Load Balancing, a la derecha de Setting.
En el cuadro de diálogo Geolocation-based Failover, configure que cuando policy source sea cn-shanghai se realice la conmutación por error a cn-hangzhou, y cuando policy source sea cn-hangzhou, se aplique fail over to cn-shanghai. Luego, haga clic en Submit.
Versión de instancia de ASM 1.22.6.66 o posterior
En la página Base Information, haga clic en Geolocation-based Load Balancing, a la derecha de Setting.
Haga clic en Specify priority rules for regions dentro de Cross-region Rules. Establezca Failed Region en
cn-shanghaiy The region to which the traffic is preferentially routed encn-hangzhou.Haga clic en Add. Después, establezca Failed Region en
cn-hangzhouy Preferred Failover Region encn-shanghai. Haga clic en Save.
-
Ejecute el siguiente comando para enviar 10 solicitudes a la aplicación Bookinfo y contar cuántas veces se enrutan a la versión v2 del servicio reviews.
for ((i=1;i<=10;i++));do curl http://<ingress gateway address on port 80 in ack-hangzhou cluster>/productpage 2>&1|grep full.stars;done|wc -lSalida esperada:
20Verá que se devuelven 20 líneas a partir de 10 solicitudes (cada solicitud enrutada al servicio reviews v2 devuelve dos líneas que contienen
full stars). Esto indica que las 10 solicitudes se dirigieron al servicio reviews v2 en el clúster ack-shanghai, por lo que la conmutación por error entre regiones funcionó correctamente.
Configurar la distribución de tráfico entre regiones
La distribución de tráfico entre regiones solo es compatible con instancias de ASM de la versión 1.22.6.66 o posterior.
Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, elija .
En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, elija .
En la página Base Information, haga clic en Geolocation-based Load Balancing, a la derecha de Configure a Geolocation-based Load Balancing.
-
Haga clic en Configure a traffic distribution rule. Establezca Source en
cn-hangzhou, Destination encn-shanghaiy Traffic Percentage en 10 %. Haga clic en Save.NotaDe forma predeterminada, el equilibrio de carga basado en geolocalización usa el modo de conmutación por error. Primero debe hacer clic en Disable en la esquina superior derecha de la página antes de poder cambiar al modo de distribución de tráfico y habilitarlo.
-
Ejecute el siguiente comando para enviar 10 solicitudes a la aplicación Bookinfo y comprobar que la distribución de tráfico entre regiones funciona correctamente.
for ((i=1;i<=10;i++));do curl http://<ingress gateway address on port 80 in ack-hangzhou cluster>/productpage 2>&1|grep full.stars;doneSalida esperada:
<!-- full stars: --> <!-- full stars: -->Verá dos líneas que contienen
full starsde un total de 10 solicitudes. Esto indica que 9 solicitudes se enroutaron al servicio reviews v1 en el clúster ack-hangzhou y 1 solicitud al servicio reviews v2 en el clúster ack-shanghai. El tráfico se distribuyó correctamente entre los clústeres según los pesos configurados.
Preguntas frecuentes
¿Por qué falla la adición de un clúster de Kubernetes a ASM aunque haya conectado las VPC del clúster mediante Cloud Enterprise Network (CEN)?
Si sus clústeres están en regiones distintas y no ha adquirido un plan de transferencia de datos entre regiones ni ha configurado correctamente el tráfico entre ellas, el plano de control de ASM no podrá conectarse a los clústeres del plano de datos, lo que provoca que falle la adición del clúster.
Para resolver este problema, vuelva a configurar el tráfico entre regiones en Cloud Enterprise Network (CEN) con el fin de conectar las VPC de los clústeres. Para obtener más información, consulte Step 2: Use CEN to connect VPCs across regions.