Instâncias NLB dual-stack oferecem suporte à afinidade por versão de IP. Quando ativada, requisições IPv4 são encaminhadas para servidores backend IPv4 e requisições IPv6 para servidores backend IPv6, roteando o tráfego por versão de protocolo e simplificando a arquitetura de rede.
Arquitetura
Cenário
Durante a migração de IPv4 para IPv6, é comum que ambos os serviços precisem coexistir. Quando um grupo de servidores contém servidores backend tanto IPv4 quanto IPv6, o NLB, por padrão, não diferencia a versão de IP das requisições do cliente e encaminha o tráfego exclusivamente com base no algoritmo de agendamento, como round-robin ou menor número de conexões.
Essa situação pode causar encaminhamento entre protocolos — por exemplo, uma requisição de um cliente IPv6 pode chegar a um servidor backend somente IPv4, ou o contrário. Essas incompatibilidades podem gerar os seguintes problemas:
O servidor backend não consegue obter o endereço IP real do cliente, o que afeta a análise regional baseada na origem e o controle de acesso.
Para obter o endereço IP de origem, é necessário implantar uma camada adicional de proxy, como o Nginx com Proxy Protocol habilitado, o que aumenta os custos operacionais.
Solução
Os grupos de servidores do NLB oferecem suporte à afinidade de versão de IP para encaminhamento 4-para-4 e 6-para-6.
Os servidores backend podem obter diretamente os endereços IP originais dos clientes, sem necessidade de uma camada adicional de proxy. Se todos os servidores backend de um protocolo específico falharem nas verificações de integridade, as requisições serão encaminhadas com base no melhor esforço para outros servidores dentro do mesmo grupo de protocolo, sem roteamento entre protocolos diferentes.
Pré-requisitos
Você precisa ter registered a custom domain name. Este tutorial utiliza a região China (Shanghai) para implantar a instância NLB. Portanto, é necessário solicitar um ICP filing para o seu nome de domínio.
Procedimento
Antes de começar, certifique-se de ter criado uma VPC chamada VPC1 na região China (Shanghai), criado as vSwitches VSW1 e VSW2 nas zonas de disponibilidade E e G, respectivamente, e enabled IPv6 nas vSwitches.
1. Criar instâncias ECS e implantar serviços
-
Crie duas instâncias ECS com as configurações a seguir.
Parâmetro
Região
VPC
vSwitch
Versão de IP
Imagem
ecs-ipv4
China (Shanghai)
VPC1VSW1IPv4
Alibaba Cloud Linux 3.2104 LTS 64-bit
ecs-ipv6
VSW2IPv6
Ao adquirir a instância ECS, na seção Network and Security Groups, selecione Assign IPv6 Address Free of Charge.
-
Conecte-se remotamente a
ecs-ipv4eecs-ipv6e execute os comandos a seguir para implantar os serviços Nginx.ecs-ipv4
sudo yum install -y nginx sudo systemctl start nginx echo "Hello from IPv4 backend" | sudo tee /usr/share/nginx/html/index.htmlecs-ipv6
sudo yum install -y nginx sudo systemctl start nginx echo "Hello from IPv6 backend" | sudo tee /usr/share/nginx/html/index.html -
Adicione regras de entrada aos grupos de segurança de ambas as instâncias ECS para permitir tráfego de entrada na porta 80. Certifique-se de que as regras tenham prioridade suficientemente alta.
Nome da instância
Action
Protocolo
Origem
Destino
ecs-ipv4
Allow
Custom TCP
Após selecionar
IPv4, selecioneCIDR block of this VPC.Após selecionar
Port Range, selecioneHTTP (80).ecs-ipv6
Após selecionar
IPv6, selecioneCIDR block of this VPC.
Para obter mais informações, consulte Create an instance by using the wizard , Connect to an ECS instance e Add security group rules .
2. Criar uma instância NLB dual-stack
Faça logon no console do NLB, selecione a região China (Shanghai) e clique em Create NLB.
-
Especifique os parâmetros a seguir, mantenha os valores padrão para as demais opções e clique em Create:
Network Type: selecione Public.
VPC: selecione
VPC1.Zone: selecione as zonas de disponibilidade E e G, escolha as vSwitches correspondentes
VSW1eVSW2e marque Purchase EIP.IP Version: selecione Dual-Stack.
Após a criação da instância, clique em no ID dela para acessar a página Instance Details. Na seção Basic Information, localize Network Type e clique em Change Network Type à direita de IPv6: Private. Na caixa de diálogo exibida, clique em OK. Em seguida, verifique se o tipo de rede IPv6 agora é público.
3. Criar um grupo de servidores dual-stack e ativar a afinidade
No console de Server Group, clique em Create Server Group.
-
Especifique os parâmetros a seguir e clique em Create:
Server Group Type: selecione Server.
Server Group Name: insira
sgp-dualstack.VPC: selecione
VPC1.Backend Server Protocol: selecione TCP.
IP Version: selecione IPv4/IPv6 dual-stack. Isso permite adicionar servidores backend tanto IPv4 quanto IPv6.
IP Version Affinity: selecione Affinity mode. Quando ativada, as requisições IPv4 são encaminhadas exclusivamente para servidores backend IPv4, e as requisições IPv6 são encaminhadas exclusivamente para servidores backend IPv6.
-
Na caixa de diálogo The server group is created, clique em Add Backend Server. Na coluna IP, selecione o endereço IPv4 para
ecs-ipv4e o endereço IPv6 paraecs-ipv6. Selecione ambas as instâncias e clique em Next.Ao adicionar servidores backend IPv6 em lote, clique em no ícone de configurações ao lado do cabeçalho da coluna IP e selecione Prefer IPv6 over IPv4 . O sistema então seleciona os endereços IPv6 dos servidores por padrão.
Na etapa Ports/Weights, defina a Port de ambos os servidores como
80e clique em OK.
4. Criar um listener
No console do NLB, clique em no ID da instância de destino para acessar a página Instance Details. Na aba Listener, clique em Create Listener.
Na etapa Configure Listener, defina Listener Protocol como TCP, insira
80em Listener Port e clique em Next.Na etapa Select Server Group, selecione o grupo de servidores
sgp-dualstacke clique em Next.Na etapa Configuration Review, confirme a configuração e clique em Submit.
5. configure registros DNS
Crie um registro CNAME para mapear seu nome de domínio personalizado para o nome DNS da instância NLB.
Este tutorial utiliza o Alibaba Cloud DNS como exemplo. Se o seu nome de domínio não estiver registrado na Alibaba Cloud, primeiro é necessário add the domain name to the Alibaba Cloud DNS console.
No console do NLB, copie o Domain Name da instância de destino.
Faça logon no console do Alibaba Cloud DNS. Na coluna Actions do nome de domínio de destino, clique em Settings. Na página Settings, clique em Add Record.
-
Adicione um registro CNAME com as configurações a seguir e clique em OK:
Record Type: selecione CNAME.
Hostname: insira um prefixo para o nome de domínio, como
test. Se o domínio raiz forexample.com, o nome de domínio usado para acessar a instância NLB serátest.example.com.Query Source e TTL: mantenha os valores padrão.
Record Value: insira o nome DNS da instância NLB.
Na caixa de diálogo Change Resource Record Confirmation, confirme as informações do registro DNS e clique em OK.
6. verifique o encaminhamento baseado em afinidade
Quando um cliente acessa a instância NLB dual-stack por meio de um nome de domínio personalizado, o servidor DNS retorna um registro A (IPv4) ou AAAA (IPv6) com base na versão de IP do cliente.
Testar requisições IPv4
curl -4 http://test.example.com
Após múltiplas requisições, a resposta deve ser sempre Hello from IPv4 backend. Isso indica que as requisições IPv4 são encaminhadas para o servidor backend IPv4 ecs-ipv4.
Testar requisições IPv6
curl -6 http://test.example.com
Após múltiplas requisições, a resposta deve ser sempre Hello from IPv6 backend. Isso indica que as requisições IPv6 são encaminhadas para o servidor backend IPv6 ecs-ipv6.
verifique o isolamento da afinidade
Pare o service Nginx em
ecs-ipv4executando o seguinte comando:sudo systemctl stop nginx.Teste novamente a requisição IPv4. A requisição falha e não é encaminhada para o servidor backend IPv6
ecs-ipv6.Restaure o service em
ecs-ipv4executando o seguinte comando:sudo systemctl start nginx. As requisições IPv4 voltam a funcionar normalmente.
Mais informações
Faturamento
Instância NLB: o NLB oferece dois métodos de faturamento: pagamento conforme o uso e plano de recursos. Para obter mais informações, consulte NLB billing.
Instância ECS: para obter mais informações, consulte ECS billing overview. Para testes, crie uma instância de baixa especificação com pagamento conforme o uso e libere-a após os testes para evitar cobranças desnecessárias.
Nome de domínio e taxas de resolução DNS: além da taxa de domínio cobrada pelo seu provedor, a Alibaba Cloud cobra public authoritative DNS fees pela resolução DNS.
Taxas de rede pública: aplicam-se ao EIP associado à instância NLB e à IPv6 public bandwidth da VPC onde a instância reside.
Regiões compatíveis com NLB dual-stack
|
Área |
Região |
|
China |
China (Hangzhou), China (Beijing), China (Shenzhen), China (Shanghai), China (Qingdao), China (Zhangjiakou), China (Chengdu), China (Guangzhou), China (Hong Kong), China (Heyuan), China (Ulanqab) |
|
Ásia-Pacífico |
Thailand (Bangkok), Philippines (Manila), Singapore, Japan (Tokyo), South Korea (Seoul), Malaysia (Kuala Lumpur), Indonesia (Jakarta) |
|
Europa e Américas |
Germany (Frankfurt), UK (London), US (Virginia), US (Silicon Valley), Mexico |
|
Oriente Médio |
Saudi Arabia (Riyadh) |
Considerações para ambientes de produção
Implantação de alta disponibilidade: distribua os servidores backend em múltiplas zonas de disponibilidade. Garanta redundância tanto para backends IPv4 quanto IPv6 a fim de evitar pontos únicos de falha.
Configuração de verificação de integridade: ajuste o intervalo de verificação, o período de timeout e os limiares de acordo com os requisitos do seu negócio para garantir a remoção rápida de servidores com falha.
Perguntas frequentes
As requisições IPv4 são encaminhadas para backends IPv6 no modo de afinidade?
Não. Com o modo de afinidade ativado, as requisições IPv4 são encaminhadas exclusivamente para servidores backend IPv4, e as requisições IPv6 são encaminhadas exclusivamente para servidores backend IPv6. O encaminhamento entre protocolos não ocorre.
Como as requisições IPv6 são tratadas quando há apenas backends IPv4?
Se o modo de afinidade estiver desativado, o NLB pode traduzir requisições IPv6 para IPv4 e enviá-las aos servidores backend. Se o modo de afinidade estiver ativado, as requisições IPv6 não podem ser encaminhadas. Nesse cenário, adicione servidores backend de ambas as versões de IP ao grupo de servidores para garantir o processamento tanto de requisições IPv4 quanto IPv6.
É possível modifique a versão de IP de um grupo de servidores?
Não. A versão do protocolo IP de um grupo de servidores (IPv4 ou IPv4/IPv6 dual-stack) não pode ser alterada após a criação do grupo. Para alterar a versão, exclua o grupo de servidores e crie um novo.
É possível modifique a IP version affinity de um grupo de servidores?
Sim. No console de Server Group, localize o grupo de servidores dual-stack de destino e clique em Modify Basic Information na coluna Actions para alterar a configuração.
Um grupo de servidores dual-stack pode ser associado a um NLB somente IPv4?
Não. Um grupo de servidores dual-stack só pode ser associado a um listener de uma instância NLB dual-stack.