Service Mesh ASM oferece recursos de distribuição de tráfego entre regiões e failover entre regiões para services de aplicação. A distribuição de tráfego entre regiões roteia o tráfego para múltiplos clusters com base em pesos configurados, habilitando o balanceamento de carga multi-região. O failover entre regiões transfere o tráfego de uma região com falha para outras regiões, implementando a recuperação de desastres entre regiões. Usando a aplicação Bookinfo como exemplo, este tópico descreve como utilizar o failover e a distribuição de tráfego entre regiões para implementar recuperação de desastres e balanceamento de carga entre regiões.
Planejamento de rede
Antes de começar, planeje os blocos CIDR, nomes e outros detalhes dos seus vSwitches, VPCs e clusters. Este tópico utiliza o seguinte plano:
Para mais informações sobre o planejamento de endereços multi-cluster para o plano de dados, consulte Multi-cluster network planning.
-
Planejamento de rede de vSwitch e VPC
-
Planejamento de rede VPC
Objeto
Nome da VPC
Região
Bloco CIDR IPv4
Cluster
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
-
Planejamento de rede de vSwitch
ImportantePara evitar conflitos de rota após conectar as VPCs via CEN, certifique-se de que os dois vSwitches não utilizem blocos CIDR sobrepostos.
Objeto
Nome do vSwitch
VPC
Bloco CIDR IPv4
Cluster
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
-
-
Planejamento de rede de Pod e Service para os clusters
Nome do cluster
Região
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
Etapa 1: Crie clusters em regiões diferentes
Crie VPCs e vSwitches nas regiões China (Hangzhou) e China (Shanghai) conforme o plano descrito anteriormente. Para mais informações, consulte Create a vSwitch e Create a VPC and a vSwitch.
Crie clusters nas regiões China (Hangzhou) e China (Shanghai) utilizando as VPCs e o plano de rede descritos anteriormente. Para mais informações, consulte Create an ACK managed cluster.
Crie uma instância ASM na região China (Hangzhou) conforme o plano descrito anteriormente. Para mais informações, consulte Create an ASM instance.
Etapa 2: Use o CEN para conectar VPCs entre regiões
Use o CEN para conectar as redes VPC entre os clusters e entre os clusters e o Service Mesh.
Acesse o Cloud Enterprise Network console e crie uma instância CEN. Para mais informações, consulte Create a Cloud Enterprise Network instance.
-
Crie transit routers.
Na página Cloud Enterprise Network instances, clique em na instância CEN criada em Step 1. Em seguida, na aba Basic Information, clique em Create Transit Router.
Na caixa de diálogo Create Transit Router, selecione uma Region, insira um Name e clique em Confirm.
Este exemplo cria dois transit routers:
Region: China (Shanghai), Name: shanghai-router.
Region: China (Hangzhou), Name: hangzhou-router.
-
Adicione VPCs aos transit routers. Repita as etapas a seguir para os transit routers de Shanghai e Hangzhou para conectar as respectivas VPCs.
Na página Cloud Enterprise Network instances, clique em na instância CEN criada em Step 1. Em seguida, na aba Basic Information, clique no ID do transit router recém-criado para acessar a página de detalhes.
Clique em na aba Intra-region Connections e, em seguida, clique em Create Network Instance Connection. Defina Instance Type como Virtual Private Cloud (VPC) e selecione a instância VPC correspondente à região em Network Instance.
Mantenha as demais configurações com os valores padrão e clique em Create.
-
Configure a largura de banda entre regiões.
Clique em no transit router criado em Step 2. No lado direito da página, clique em Create Network Instance Connection.
-
Na caixa de diálogo Connect Network Instance, defina as configurações e clique em Create.
O exemplo a seguir apresenta a configuração de Hangzhou para Shanghai. Region refere-se à região atual e Peer Region refere-se à região de destino. Para mais informações sobre as opções de configuração, consulte Inter-region connection. Defina as seguintes configurações: Instance Type como Inter-region Connection, Region como China (Hangzhou), Connection Name como
to-shanghai, Peer Region como China (Shanghai), Bandwidth Allocation Method como Pay-by-Data-Transfer e Bandwidth como1Mbps. Expanda Advanced Configuration e marque as seguintes caixas de seleção: Automatically Associate with Default Route Table of Transit Router, Automatically Propagate System Routes to Default Route Table of Transit Router e Automatically Publish Routes to Peer Region.Após a criação, visualize a nova instância na aba Inter-region Connections.
-
Adicione regras de grupo de segurança.
O exemplo a seguir utiliza o plug-in de rede Flannel. Adicione o bloco CIDR de Pod do cluster remoto ao grupo de segurança de cada cluster.
NotaSe você utilizar o plug-in de rede Terway, use o bloco CIDR do vSwitch do cluster. Acesse o VPC console e localize o bloco CIDR do vSwitch na página vSwitch, na coluna IPv4 CIDR.
Acesse o ACK console. No painel de navegação à esquerda, clique em Clusters.
-
Obtenha os blocos CIDR de Pod.
Na página Clusters, selecione a região China (Shanghai), clique no nome do cluster ack-shanghai e, na página Cluster Information, acesse a aba Basic Information para obter o bloco CIDR de Pod do cluster ack-shanghai.
Volte à página Clusters, selecione a região China (Hangzhou), clique no nome do cluster ack-hangzhou e, na página Cluster Information, acesse a aba Basic Information para obter o bloco CIDR de Pod do cluster ack-hangzhou.
-
Configure os grupos de segurança.
Na página Cluster Information de cada cluster, acesse a aba Basic Information e clique em no ID do grupo de segurança ao lado de Control Plane Security Group.
Na aba Security Group Details, em Inbound, clique em Add Rule.
Defina Protocol Type como All, defina Source como o bloco CIDR de Pod do cluster remoto, mantenha as demais configurações com os valores padrão e clique em Actions → Save.
Acesse os nós de ambos os clusters e use o comando ping para testar a conectividade entre eles. Para mais informações, consulte Log on to a node.
Etapa 3: Adicionar clusters à instância do ASM e criar um ingress gateway gerenciado
Adicione os clusters das regiões China (Hangzhou) e China (Shanghai) à instância do ASM. Para mais informações, consulte Add a cluster to an ASM instance.
-
Crie um ingress gateway.
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
Etapa 4: Implantar a aplicação de demonstração Bookinfo
As etapas a seguir exigem a alternância de contextos do kubeconfig várias vezes. Recomendamos configurar os dois kubeconfigs de cluster no mesmo arquivo de configuração e usar kubectl config use-context para alternar entre os contextos. Também é possível utilizar kubecm ou kubectx para gerenciar arquivos kubeconfig de múltiplos clusters.
-
Implante a aplicação Bookinfo nos clusters ack-hangzhou e ack-shanghai.
kubectl apply -f bookinfo.yaml -
Conecte-se à instância do ASM via kubectl e crie as regras de roteamento.
-
Crie o arquivo asm.yaml com o conteúdo a seguir.
-
Crie as regras de roteamento.
kubectl apply -f asm.yaml
-
-
Verifique se a aplicação Bookinfo foi implantada com sucesso.
Obtain the ingress gateway address.
-
Na barra de endereços do navegador, insira http://{endereço IP do ingress gateway}/productpage e atualize a página várias vezes para observar o roteamento round-robin padrão.
A cada atualização, uma das versões v1, v2 ou v3 do service reviews é acessada. O tráfego entre as três versões é distribuído em uma proporção aproximada de 1:1:1.
A página reviews-v1 exibe apenas avaliações em texto, sem estrelas; a página reviews-v2 exibe estrelas pretas; e a página reviews-v3 exibe estrelas vermelhas.
Etapa 5: Usar failover entre regiões e distribuição de tráfego entre regiões
Configure o failover entre regiões
-
Desative o service reviews no cluster ack-hangzhou.
Acesse o ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em o nome do seu cluster. No painel de navegação à esquerda, clique em .
Na página Deployments, defina o Namespace como default e clique em Scale na coluna Actions à direita de reviews-v1.
Na caixa de diálogo Scale, defina Desired Number of Pods como 0 e clique em OK.
-
Configure a DestinationRule.
Configure a DestinationRule para que, caso o service reviews não seja alcançável em 1 segundo, ele seja ejetado por 1 minuto.
Na página de detalhes da instância ASM, escolha no painel de navegação à esquerda.
Na página DestinationRule, clique em YAML na coluna Actions ao lado de reviews.
-
No painel Edit, adicione o conteúdo a seguir e clique em OK.
spec: ...... trafficPolicy: connectionPool: http: maxRequestsPerConnection: 1 outlierDetection: baseEjectionTime: 1m consecutive5xxErrors: 1 interval: 1smaxRequestsPerConnection: número máximo de requisições por conexão.
baseEjectionTime: duração mínima da ejeção.
consecutive5xxErrors: número de erros consecutivos.
interval: intervalo entre verificações de ejeção.
-
Ative o failover entre regiões.
Na página de detalhes da instância ASM, escolha no painel de navegação à esquerda.
-
ASM instance version earlier than 1.22.6.66
Na página Base Information, clique em Geolocation-based Load Balancing à direita de Setting.
Na caixa de diálogo Geolocation-based Failover, configure para que, quando a policy source for cn-shanghai, o failover seja direcionado para cn-hangzhou, e quando a policy source for cn-hangzhou, o fail over to seja cn-shanghai. Em seguida, clique em Submit.
ASM instance version 1.22.6.66 or later
Na página Base Information, clique em Geolocation-based Load Balancing à direita de Setting.
Clique em Specify priority rules for regions em Cross-region Rules. Defina Failed Region como
cn-shanghaie The region to which the traffic is preferentially routed comocn-hangzhou.Clique em Add. Em seguida, defina Failed Region como
cn-hangzhoue Preferred Failover Region comocn-shanghai. Clique em Save.
-
Execute o comando a seguir para enviar 10 requisições ao aplicativo Bookinfo e contar quantas vezes a requisição foi roteada para a versão v2 do service 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 -lSaída esperada:
20Serão retornadas 20 linhas provenientes de 10 requisições (cada requisição roteada para o service reviews v2 retorna duas linhas contendo
full stars), indicando que todas as 10 requisições foram roteadas para o service reviews v2 no cluster ack-shanghai. O failover entre regiões foi concluído com êxito.
Configure a distribuição de tráfego entre regiões
A distribuição de tráfego entre regiões é suportada apenas em instâncias ASM de versão 1.22.6.66 ou posterior.
Acesse o ASM console. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em o nome da instância ASM. No painel de navegação à esquerda, escolha .
Na página Base Information, clique em Geolocation-based Load Balancing à direita de Configure a Geolocation-based Load Balancing.
-
Clique em Configure a traffic distribution rule. Defina Source como
cn-hangzhou, Destination comocn-shanghaie Traffic Percentage como 10%. Clique em Save.NotaPor padrão, o balanceamento de carga baseado em geolocalização utiliza o modo de failover. Antes de alternar para o modo de distribuição de tráfego e ativá-lo, clique em Disable no canto superior direito da página.
-
Execute o comando a seguir para enviar 10 requisições ao aplicativo Bookinfo e verifique se a distribuição de tráfego entre regiões está funcionando.
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;doneSaída esperada:
<!-- full stars: --> <!-- full stars: -->Serão exibidas duas linhas contendo
full starsentre as 10 requisições, indicando que 9 foram roteadas para o service reviews v1 no cluster ack-hangzhou e 1 foi roteada para o service reviews v2 no cluster ack-shanghai. O tráfego foi distribuído entre os clusters com base nos pesos configurados.
Perguntas frequentes
Por que a adição de um cluster Kubernetes ao ASM falha mesmo após conectar os VPCs dos clusters usando Cloud Enterprise Network (CEN)?
Se os clusters estiverem em regiões diferentes e você não tiver adquirido um plano de transferência de dados entre regiões nem configurado corretamente o tráfego entre regiões, o plano de controle do ASM não conseguirá se conectar aos clusters do plano de dados, causando falha na adição do cluster.
Para resolver esse problema, reconfigure o tráfego entre regiões no Cloud Enterprise Network (CEN) para conectar os VPCs dos clusters. Para mais informações, consulte Step 2: Use CEN to connect VPCs across regions.