O Alibaba Cloud Service Mesh (ASM) oferece dois recursos de gerenciamento de tráfego baseados em geolocalização para implantações multi-cluster. Use o failover inter-região para redirecionar automaticamente o tráfego a uma região íntegra quando um serviço em determinada região ficar indisponível. Use a distribuição de tráfego inter-região para dividir o tráfego entre regiões conforme pesos configurados, permitindo o balanceamento de carga multirregional.
Este tutorial utiliza a aplicação de exemplo Bookinfo para demonstrar ambos os recursos em dois clusters ACK localizados em regiões distintas.
Como funciona
O ASM lê a região de cada workload a partir dos rótulos dos nós na nuvem e usa essa informação para tomar decisões de roteamento com base na localidade.
|
Recurso |
Comportamento |
Configuração |
|
Failover inter-região |
Redireciona solicitações para fora de uma região não íntegra seguindo regras de prioridade |
O caminho na UI depende da versão da instância ASM (consulte a Etapa 5) |
|
Distribuição de tráfego inter-região |
Divide as solicitações entre regiões de acordo com pesos definidos |
Requer ASM versão 1.22.6.66 ou posterior |
Ambos os recursos são configurados por meio de Geolocation-based Load Balancing na página Base Information da instância ASM. O failover e a distribuição de tráfego são mutuamente exclusivos: desative um antes de ativar o outro.
Pré-requisitos
Antes de começar, verifique se você possui:
Uma conta Alibaba Cloud com permissões para criar clusters ACK, instâncias ASM, VPCs e instâncias do Cloud Enterprise Network (CEN)
Familiaridade com
kubectle gerenciamento de kubeconfig para múltiplos clusters
Configuração de rede
Planeje os seguintes blocos CIDR antes de criar qualquer recurso. Todos os vSwitches no mesmo CEN devem usar blocos CIDR sem sobreposição para evitar conflitos de rota.
Para obter orientações sobre o planejamento de CIDR, consulte Planejar blocos CIDR para múltiplos clusters no plano de dados.
Configuração de VPC
|
Objeto |
Nome da VPC |
Região |
Bloco CIDR IPv4 |
|
Cluster |
vpc-hangzhou |
cn-hangzhou |
20.0.0.0/8 |
|
Cluster |
vpc-shanghai |
cn-shanghai |
21.0.0.0/8 |
|
Service Mesh |
vpc-hangzhou2 |
cn-hangzhou |
192.168.0.0/16 |
Configuração de vSwitch
|
Objeto |
Nome do vSwitch |
VPC |
Bloco CIDR IPv4 |
|
Cluster |
vpc-hangzhou-switch-1 |
vpc-hangzhou |
20.0.0.0/16 |
|
Cluster |
vpc-shanghai-switch-1 |
vpc-shanghai |
21.0.0.0/16 |
|
Service Mesh |
vpc-hangzhou-switch-2 |
vpc-hangzhou2 |
192.168.0.0/24 |
CIDRs de Pod e serviço do cluster
|
Cluster |
Região |
VPC |
CIDR de Pod |
CIDR de Serviço |
|
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: Criar clusters em diferentes regiões
Crie as VPCs e os vSwitches nas regiões de Hangzhou e Xangai utilizando os valores das tabelas de configuração de rede acima. Consulte Criar um vSwitch e Criar uma VPC e um vSwitch.
Crie um cluster gerenciado ACK em cada região usando as VPCs criadas. Consulte Criar um cluster gerenciado ACK.
Crie uma instância ASM na região de Hangzhou usando a VPC
vpc-hangzhou2. Consulte Criar uma instância ASM.
Etapa 2: Conectar redes VPC entre regiões usando CEN
Conecte as VPCs dos clusters entre si e à VPC do Service Mesh usando roteadores de trânsito do CEN.
Faça login no console do Cloud Enterprise Network (CEN) e crie uma instância CEN. Consulte Criar uma instância CEN.
-
Crie dois roteadores de trânsito, um em cada região:
Na página CEN Instances, clique em no nome da sua instância CEN. Na aba Basic Information, clique em em Create Transit Router.
Defina a Region e o Name e clique em em OK.
Nome
Região
hangzhou-router
China (Hangzhou)
shanghai-router
China (Shanghai)
-
Adicione VPCs a cada roteador de trânsito. Repita as etapas a seguir para cada VPC:
Clique em no ID do roteador de trânsito.
Na aba Intra-region Connections, clique em em Create Connection.
Defina Instance Type como Virtual Private Cloud (VPC) e selecione a VPC correspondente à região do roteador de trânsito.
Mantenha todas as outras configurações padrão e clique em em OK.
-
Configure a largura de banda para comunicação inter-região. Após a criação, a conexão aparece na aba Inter-region Connections.
Clique em no nome de um roteador de trânsito e depois em Create Connection.
Na caixa de diálogo Connection With Peer Network Instance, defina Region como a região local e Peer Region como a região remota.
Configure a largura de banda e outros parâmetros e clique em em OK. Para mais detalhes, consulte Conexões inter-região.

-
Adicione regras de entrada no grupo de segurança para permitir tráfego entre clusters:
Faça login no console ACK. No painel de navegação à esquerda, clique em em Clusters.
-
Obtenha o CIDR de Pod de cada cluster:
Selecione a região de Xangai, clique em em ack-shanghai e, na página Cluster Information, clique em na aba Basic Information para encontrar o CIDR de Pod.
Repita o processo para ack-hangzhou na região de Hangzhou.
-
Adicione uma regra de entrada no grupo de segurança de cada cluster:
Na página Cluster Information, clique em em Basic Information e depois no ID do grupo de segurança ao lado de Control Plane Security Group.
Na aba Inbound, clique em em Add Rule.
Defina Protocol Type como All e Source como o CIDR de Pod do cluster par. Mantenha todas as outras configurações padrão e clique em em Save.
Acesse um nó em cada cluster e execute
pingpara confirmar a conectividade com o outro cluster. Consulte Fazer login nos nós.
Para o plugin de rede Flannel , adicione o CIDR de Pod do cluster par como origem. Para o plugin de rede Terway , adicione o CIDR do vSwitch do cluster par. Para encontrar o CIDR do vSwitch, faça login no console VPC e verifique a coluna IPv4 CIDR Block na página vSwitch .
Etapa 3: Adicionar clusters ao ASM e criar um gateway de entrada
Adicione os clusters ack-hangzhou e ack-shanghai à sua instância ASM. Consulte Adicionar um cluster a uma instância ASM.
-
Crie um gateway de entrada gerenciado aplicando o seguinte manifesto:
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 Bookinfo
-
Implante a aplicação Bookinfo em ambos os clusters:
kubectl apply -f bookinfo.yaml -
Conecte o kubectl à instância ASM e aplique as regras de roteamento. Crie um arquivo chamado
asm.yamlcom o seguinte conteúdo:Aplique as regras de roteamento:
kubectl apply -f asm.yaml -
Verifique a implantação:
Abra
http://<ingress-gateway-IP>/productpageem um navegador e atualize a página 10 vezes. A aplicação Bookinfo distribui as solicitações entre as versões v1, v2 e v3 do serviço reviews. Após 10 atualizações, a proporção de tráfego entre as três versões deve ser próxima de 1:1:1.
Etapa 5: Configurar failover inter-região e distribuição de tráfego
Configurar failover inter-região
Quando o serviço reviews no ack-hangzhou fica indisponível, o ASM redireciona as solicitações para o serviço reviews no ack-shanghai. Isso requer duas configurações: detecção de outliers (para que o proxy saiba quando um endpoint não está íntegro) e uma política de failover baseada em geolocalização (para que o proxy saiba para onde redirecionar o tráfego).
Roteamento esperado após a ativação do failover:
|
Região de origem |
Roteamento normal |
Após failover |
|
cn-hangzhou |
reviews (ack-hangzhou) |
reviews (ack-shanghai) |
|
cn-shanghai |
reviews (ack-shanghai) |
reviews (ack-hangzhou) |
Simular uma interrupção de serviço
Dimensione o Deployment reviews no ack-hangzhou para zero réplicas:
Faça login no console ACK. No painel de navegação à esquerda, clique em em Clusters.
Clique em no nome do cluster ack-hangzhou. No painel esquerdo, escolha Workloads > Deployments.
Na página Deployments, defina Namespace como
defaulte clique em em Scale na coluna Actions referente ao Deployment reviews.Defina Desired Number Of Pods como
0e clique em em OK.
Configurar detecção de outliers
A detecção de outliers informa aos proxies sidecar quando um endpoint não está íntegro e o remove do pool de balanceamento de carga. A configuração atende a três propósitos:
Detecção de outliers: instrui cada proxy a ejetar um endpoint após detectar falhas consecutivas
Pool de conexões: força cada solicitação HTTP a usar uma nova conexão, acionando o failover imediatamente após a detecção de uma falha (apenas para fins de demonstração)
Recuperação de ejeção: mantém o endpoint ejetado fora de rotação por uma duração mínima antes de ser reconsiderado
Na página de detalhes da instância ASM, escolha Traffic Management Center > DestinationRule.
Na coluna Actions referente a
reviews, clique em em Edit YAML.-
Adicione o seguinte bloco
trafficPolicyaospece clique em em OK:spec: # ... existing subsets configuration ... trafficPolicy: connectionPool: http: maxRequestsPerConnection: 1 # Each request uses a new connection; # this triggers ejection immediately after # a failure. For demonstration only. outlierDetection: interval: 1s # Check for unhealthy endpoints every second consecutive5xxErrors: 1 # Eject after 1 consecutive 5xx error baseEjectionTime: 1m # Keep the endpoint ejected for at least 1 minute
Ativar a política de failover baseada em geolocalização
O caminho na UI depende da versão da sua instância ASM.
ASM versão 1.22.6.66 e posterior
Na página de detalhes da instância ASM, escolha ASM Instance > Base Information.
Clique em em Configure a Geolocation-based Load Balancing ao lado de Geolocation-based Load Balancing.
Clique em em Specify priority rules for regions.
Defina Region in which the failure occurs como
cn-shanghaie The region to which the traffic is preferentially routed comocn-hangzhou. Clique em em Add.Defina Region in which the failure occurs como
cn-hangzhoue The region to which the traffic is preferentially routed comocn-shanghai. Clique em em Save Configuration.
Versões do ASM anteriores à 1.22.6.66
Na página de detalhes da instância ASM, escolha ASM Instance > Base Information.
Clique em em Setting ao lado de Geolocation-based Load Balancing.
Na caixa de diálogo Geolocation-based Failover, defina Failover to como
cn-hangzhouquando a Policy for decn-shanghai, e defina Failover to comocn-shanghaiquando a Policy for decn-hangzhou. Clique em em Confirm.
Verificar o failover
Envie 10 solicitações para o gateway de entrada do ack-hangzhou e conte quantas chegam ao serviço reviews v2 (que executa no ack-shanghai):
for ((i=1;i<=10;i++)); do
curl http://<Port 80 of the IP address of the ingress gateway in the ack-hangzhou cluster>/productpage 2>&1 | grep full.stars
done | wc -l
Saída esperada:
20
A saída 20 confirma que todas as 10 solicitações foram roteadas para o serviço reviews v2 no ack-shanghai. Cada solicitação para a versão v2 retorna duas linhas contendo full stars, portanto, 10 solicitações produzem 20 linhas.
Configurar distribuição de tráfego inter-região
A distribuição de tráfego inter-região requer a versão 1.22.6.66 ou posterior da instância ASM.
A distribuição de tráfego e o failover são mutuamente exclusivos. Se você configurou o failover na seção anterior, desative-o antes de ativar a distribuição de tráfego.
Roteamento alvo após a configuração da distribuição de tráfego:
|
Região de origem |
Destino |
Porcentagem de tráfego |
|
cn-hangzhou |
cn-hangzhou (local) |
90% |
|
cn-hangzhou |
cn-shanghai (remoto) |
10% |
Faça login no console ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.
Clique em no nome da sua instância ASM. No painel de navegação à esquerda, escolha ASM Instance > Base Information.
Clique em em Configure a Geolocation-based Load Balancing ao lado de Geolocation-based Load Balancing.
Se o modo de failover estiver ativado, clique em em Disable no canto superior direito para alternar para o modo de distribuição de tráfego.
Clique em em Configure a traffic distribution rule. Defina Source como
cn-hangzhou, Destination comocn-shanghaie Traffic Percentage como10%. Clique em em Save Configuration.
Verificar a distribuição de tráfego
Envie 10 solicitações e inspecione qual versão do serviço reviews responde:
for ((i=1;i<=10;i++)); do
curl http://<Port 80 of the IP address of the ingress gateway in the ack-hangzhou cluster>/productpage 2>&1 | grep full.stars
done
Saída esperada:
<!-- full stars: -->
<!-- full stars: -->
Duas linhas de full stars em 10 solicitações confirmam que a distribuição está funcionando. Nove solicitações foram para o serviço reviews v1 no ack-hangzhou (sem estrelas) e uma solicitação foi para o serviço reviews v2 no ack-shanghai (duas linhas de full stars), correspondendo à divisão configurada de 90%/10%.
Perguntas frequentes
Por que a adição de um cluster ao ASM falha mesmo após conectar as VPCs via CEN?
Quando os clusters estão em regiões diferentes, o plano de controle do ASM precisa se comunicar com os clusters do plano de dados pela conexão inter-região. Se você não adquiriu um plano de transferência de dados inter-região ou não configurou corretamente a largura de banda inter-região no CEN, essa conexão não pode ser estabelecida e a adição do cluster falha.
Reconfigure as definições de tráfego inter-região no CEN. Consulte Etapa 2: Conectar redes VPC entre regiões usando CEN.