Criação de um balanceador de carga de rede privada com modo de roteamento
Os dispositivos de função de rede virtual (VNF) são serviços de rede virtualizados (como roteadores e firewalls) que executam em máquinas virtuais. Com o IBM Cloud VPC, é possível fornecer dispositivos VNF para obter escalabilidade melhor e mais suportável financeiramente do que comprando dispositivos de rede física.
O tráfego destinado a servidores no IBM Cloud VPC deve ser entregue a dispositivos VNF funcionais; caso contrário, ocorrerá interrupção do tráfego. É possível usar balanceadores de carga de rede com o modo de roteamento para executar verificações de funcionamento e para assegurar que as cargas de trabalho passem somente por dispositivos VNF funcionais. Por causa disso, os balanceadores de carga de rede com o modo de roteamento suportam somente dispositivos VNF como destinos de back-end.
Para obter exemplos detalhados de várias maneiras você pode implementar o seu NLB com o modo de roteamento, consulte as implementações do HA VNF.
Antes de Iniciar
Para configurar um balanceador de carga de rede com o modo de roteamento ativado, certifique-se de que os seguintes pré-requisitos tenham sido atendidos:
-
Se você não tiver uma VPC, crie uma VPC na região em que deseja criar seu NLB.
-
Crie uma sub-rede em sua zona preferencial em seu VPC.
-
Para suportar o modo de roteamento, deve-se primeiro criar uma política de autenticação de serviço para serviço para o NLB. Para fazer isso, siga estas etapas:
- Nonavegador, efetue login no IBM Access Management.
- Clique em Autorizações e, em seguida, clique em Criar.
- Para o serviço de origem, selecione Serviços de infraestrutura de VPC. Para acessar o escopo, selecione “Recursos com base nos atributos selecionados ” > “Tipo de recurso ” > “Equilibrador de carga para VPC ”.
- Para o serviço de destino, selecione Serviços de infraestrutura de VPC. Para acessar o escopo, selecione “Recursos com base nos atributos selecionados ” > “Tipo de recurso ” > “Nuvem Privada Virtual ”.
- Selecione a caixa de seleção Editor para dar a si mesmo acesso de Editor e, em seguida, clique em Autorizar.
A lista a seguir detalha algumas considerações importantes sobre o balanceador de carga de rede com modo de roteamento ativado:
- O modo de rota NLB tem dois endereços IP (Ativo / Espera).
- O modo de rota do NLB foi projetado para ser transparente Quando ocorre um failover, o modo de rota atualiza todas as regras de roteamento criadas sob o mesmo VPC com o
next_hopdo IP do dispositivo de espera Como resultado, ambos os IPs podem ser usados durante o tempo de vida de seu NLB com o modo de rota - No caso de uma configuração de VPC do Transit, talvez você queira implementar o NLB no
vpc-hube configurar a rota de egresso novpc-spokeIsso forçará os dados de volta para o NLB com o modo de rota novpc-hubCertifique-se de que você também adicione as regras de entrada equivalentes das regras de saídavpc-spokeavpc-hubpara que as regras de saída não precisem ser alteradas. Depois que o tráfego chega avpc-hub, a regra de roteamento de entrada substitui onext_hope o envia para o dispositivo primário.
Criando um balanceador de carga de rede com o modo de roteamento usando a IU
Para criar e configurar um “ Network Load Balancer for VPC ” no modo de roteamento usando o console “ IBM Cloud ”, siga estas etapas:
-
No seu navegador, abra o console do IBM Cloud e faça login na sua conta.
-
Selecione o
do menu de navegação e clique no
de infraestrutura > Rede > Balanceadores de carga.
-
Clique em Novo balanceador de carga + na parte superior direita da página.
-
No formulário de pedido, conclua as informações a seguir:
- Digite um nome exclusivo para o seu balanceador de carga e selecione uma VPC.
- Selecione um grupo de recursos. Use o grupo padrão ou selecione na lista (se definido para a sua conta). Não é possível alterar o grupo de recursos depois de criar o balanceador de carga.
- Selecione o quadro Balanceador de carga de rede (NLB) e a sub-rede na qual você deseja implementar o balanceador de carga.
- Selecione o tipo Privado.
- Opcionalmente, inclua tags.
-
Revise as instruções da lista de verificação na janela de modo de roteamento, em seguida, clique no botão para ativá-la.
Não é possível modificar a configuração de um NLB de modo de roteamento após ele concluir o fornecimento.
-
Clique em Novo conjunto e especifique as informações a seguir para criar um conjunto de back-end.
-
Digite um nome para o conjunto, como
my-pool. -
Insira um protocolo para suas instâncias neste conjunto. O protocolo do conjunto deve corresponder ao protocolo de seu listener associado. Por exemplo, se o listener for TCP, o protocolo do conjunto deverá ser TCP.
-
Selecione o método, que é o algoritmo de balanceamento de carga. São exibidas as seguintes opções:
- Round-robin - Encaminhar solicitações para cada instância em sequência. Todas as instâncias recebem aproximadamente um número igual de conexões do cliente.
- Round-robin ponderado - Encaminhar solicitações para cada instância na proporção à sua ponderação designada. Por exemplo, se você tiver as instâncias A, B e C, e seus pesos estiverem definidos como 60, 60 e 30, as instâncias A e B receberão o mesmo número de conexões, enquanto a instância C receberá metade desse número.
- Menor número de conexões - Encaminhar solicitações para a instância com o menor número de conexões no momento atual.
- Encaminhamento ponderado — Encaminhar solicitações utilizando um algoritmo de hash de IP para distribuir os pacotes entre os destinos com base nos pesos atribuídos. Cada pacote é encaminhado com base em seus cabeçalhos, suportando tanto o tráfego simétrico quanto o assimétrico.
-
Escolha a permanência de sessão e selecione Nenhum.
-
Nas verificações de funcionamento, as opções a seguir são mostradas.
- Caminho da verificação de integridade — O caminho da verificação de integridade só é aplicável se você selecionar HTTP como protocolo de verificação de integridade. O caminho de verificação de funcionamento especifica a URL utilizada pelo balanceador de carga para enviar as solicitações de verificação de funcionamento HTTP para as instâncias no conjunto. Por padrão, as verificações de funcionamento são enviadas para o caminho raiz (/).
- Protocolo de funcionamento - O protocolo usado pelo balanceador de carga para enviar mensagens de verificação de funcionamento para as instâncias no conjunto.
- Porta de integridade — A porta pela qual o balanceador de carga envia solicitações de verificação de integridade. Por padrão, as verificações de funcionamento são enviadas na mesma porta em que o tráfego é enviado para a instância.
- Intervalo - O intervalo, em segundos, entre duas tentativas de verificação de funcionamento consecutivas. Por padrão, as verificações de funcionamento são enviadas a cada 5 segundos.
- Tempo limite (segundos) — O tempo máximo que o sistema aguarda por uma resposta a uma solicitação de verificação de integridade. Por padrão, o balanceador de carga aguarda 2 segundos por uma resposta.
- Número máximo de tentativas — O número máximo de tentativas de verificação de integridade que o balanceador de carga realiza antes que uma instância seja declarada como não estável. Por padrão, uma instância não é mais considerada funcional após duas verificações de funcionamento com falha.
Embora um balanceador de carga pare de enviar conexões para instâncias com problemas, ele continua monitorando o estado dessas instâncias e retoma seu uso caso elas sejam consideradas em bom estado novamente (ou seja, se passarem com sucesso por duas tentativas consecutivas de verificação de integridade).
Se as instâncias no pool estiverem com o estado de integridade comprometido e você acreditar que seu aplicativo está funcionando corretamente, verifique novamente os valores do protocolo de integridade e do caminho de integridade. Além disso, verifique os grupos de segurança que estão anexados às instâncias para assegurar que as regras permitam tráfego entre o balanceador de carga e as instâncias.
-
-
Clique em Novo listener e especifique o conjunto de back-end para o qual este listener encaminha o tráfego.
O protocolo para recebimento de solicitações, bem como a porta de escuta em que as solicitações são recebidas, já estão selecionados para você.
-
Um resumo de pedido mostra as estimativas de precificação. Revise os termos dos Cloud Services. Em seguida, clique em Criar para concluir seu pedido.
Criando um balanceador de carga de rede com o modo de roteamento usando a CLI
Para criar um balanceador de carga de rede usando a CLI, siga estas etapas:
-
Configure seu ambiente da CLI.
-
Efetue login na sua conta. Depois de inserir a senha, o sistema pergunta qual conta e região você deseja usar:
ibmcloud login --sso -
Crie um balanceador de carga:
ibmcloud is load-balancer-create nlb-test public --subnet 0896-b1f24514-89dc-4afd-b0e2-5489a43cf45c --family network --route-mode trueSaída de amostra:
Creating load balancer vnf under account CNS Development Account - netsvs as user ibm@us.ibm.com... ID r014-c7cadd8e-9e8b-4965-bee3-5d9ff95b3512 Name vnf CRN crn:v1:bluemix:public:is:us-east-2:a/be636a7a6e4d4b6296bedf669ce8f757::load-balancer:r014-c7cadd8e-9e8b-4965-bee3-5d9ff95b3512 Family Network Routing Mode Enabled true Host name c7cadd8e-us-east.lb.appdomain.cloud Subnets ID Name 0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024 nlb-subnet Public IPs Private IPs Provision status create_pending Operating status offline Is public false Listeners Pools ID Name Resource group ID Name 42c4f51adc3147b4b4049ad9826c30a1 Default Created 2021-09-14T17:54:24.584-05:00 Security groups supported false -
Espere até que o NLB esteja em um estado ativo, depois, execute o comando a seguir:
ibmcloud is load-balancer r014-c7cadd8e-9e8b-4965-bee3-5d9ff95b3512Saída de amostra:
Getting load balancer r014-c7cadd8e-9e8b-4965-bee3-5d9ff95b3512 under account CNS Development Account - netsvs as user ibm@us.ibm.com... ID r014-c7cadd8e-9e8b-4965-bee3-5d9ff95b3512 Name vnf CRN crn:v1:bluemix:public:is:us-east-2:a/be636a7a6e4d4b6296bedf669ce8f757::load-balancer:r014-c7cadd8e-9e8b-4965-bee3-5d9ff95b3512 Family Network Routing Mode Enabled true Host name c7cadd8e-us-east.lb.appdomain.cloud Subnets ID Name 0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024 nlb-subnet Public IPs Private IPs 10.241.64.16, 10.241.64.17 Provision status active Operating status online Is public false Listeners Pools ID Name Resource group ID Name 42c4f51adc3147b4b4049ad9826c30a1 Default Created 2021-09-14T17:54:24.584-05:00 Security groups supported falseAnote o primeiro endereço IP listado em IPs privados. Você precisa disso ao definir rotas personalizadas.
-
Incluir um conjunto.
ibmcloud is load-balancer-pool-create example-pool r006-df4c0e10-e882-4ade-a668-b2e518325d6a round_robin tcp 20 2 5 tcpSaída de amostra:
Creating pool example-pool of load balancer r014-c7cadd8e-9e8b-4965-bee3-5d9ff95b3512 under account CNS Development Account - netsvs as user ibm@us.ibm.com ID r014-474dca7d-aece-48a3-a636-fe8c3e654a3b Name example-pool Protocol tcp Algorithm round_robin Instance group ID Name - - Proxy protocol disabled Health monitor Type Port Health monitor URL Delay Retries Timeout tcp - 20 2 5 Session persistence Type Cookie name - - Members Provision status active Created 2021-09-14T18:03:56.274-05:00 -
Incluir um membro.
ibmcloud is load-balancer-pool-member-create r014-c7cadd8e-9e8b-4965-bee3-5d9ff95b3512 r014-474dca7d-aece-48a3-a636-fe8c3e654a3b 200 0767_5545cfb3-febc-4f09-b9ea-0aeb66074edfSaída de amostra:
Creating member of pool r014-474dca7d-aece-48a3-a636-fe8c3e654a3b under account CNS Development Account - netsvs as user ibm@us.ibm.com... ID r014-1fdb900f-81a4-4204-839a-fcdee6c28e8a Port 200 Target 0767_5545cfb3-febc-4f09-b9ea-0aeb66074edf Weight 50 Health unknown Created 2021-09-14T19:27:11.077-05:00 Provision status create_pending
Criação de um balanceador de carga de rede no modo de roteamento por meio da API
Para criar um balanceador de carga de rede com modo de roteamento com a API, siga estas etapas:
-
Configure o seu Ambiente de API.
-
Crie sua carga útil de solicitação de API usando o modelo a seguir. Modifique o nome e a sub-rede com seus próprios valores.
{ "name": "nlb-vnf", "is_public": false, "profile": { "name": "network-fixed" }, "route_mode": true, "subnets": [ { "id": "0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024" } ] }Salve esta carga útil em um arquivo JSON. Nos exemplos a seguir, o arquivo é denominado
create.json. -
Faça a solicitação para criar o seu NLB com o comando a seguir. As seguintes propriedades devem ser definidas primeiro na carga útil:
route_modeétrueis_publicéfalse- O nome do perfil é
network_fixed
curl -s -H "Authorization: Bearer $IAM_TOKEN" -X POST -d @create.json "https://us-east.iaas.cloud.ibm.com/v1/load_balancers?version=2021-07-30&generation=2" | jqO exemplo utiliza o
jqcomo analisador sintático, uma ferramenta de terceiros licenciada sob a licença MIT. Ojqpode não vir pré-instalado em todas as imagens de VPC disponíveis no momento da criação de uma instância. Talvez seja necessário instalar ojqantes de usá-lo ou utilizar outro analisador de sua preferência.Saída de amostra:
{ "id": "r014-020f4f34-bb49-4699-98a7-a53384cd649d", "name": "nlb-vnf", "href": "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d", "crn": "crn:v1:bluemix:public:is:us-east-2:a/be636a7a6e4d4b6296bedf669ce8f757::load-balancer:r014-020f4f34-bb49-4699-98a7-a53384cd649d", "is_public": false, "created_at": "2021-09-14T21:45:06.377862525Z", "hostname": "020f4f34-us-east.lb.appdomain.cloud", "listeners": [], "operating_status": "offline", "pools": [], "private_ips": [], "provisioning_status": "create_pending", "public_ips": [], "subnets": [ { "id": "0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024", "href": "https://us-east.iaas.cloud.ibm.com/v1/subnets/0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024", "crn": "crn:v1:bluemix:public:is:us-east-2:a/be636a7a6e4d4b6296bedf669ce8f757::subnet:0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024", "name": "nlb-subnet" } ], "resource_group": { "id": "42c4f51adc3147b4b4049ad9826c30a1", "href": "https://resource-controller.cloud.ibm.com/v1/resource_groups/42c4f51adc3147b4b4049ad9826c30a1", "name": "Default" }, "resource_type": "load_balancer", "logging": { "datapath": { "active": false } }, "profile": { "href": "https://us-east.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed", "family": "Network" }, "security_groups": [], "security_group_supported": false, "route_mode": true } -
Depois que o NLB estiver em um estado ativo, execute uma chamada
GETpara buscar seu status.curl -s -H "Authorization: Bearer $IAM_TOKEN" -X GET "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d?version=2021-07-30&generation=2" | jqSaída de amostra:
{ "id": "r014-020f4f34-bb49-4699-98a7-a53384cd649d", "name": "nlb-vnf", "href": "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d", "crn": "crn:v1:bluemix:public:is:us-east-2:a/be636a7a6e4d4b6296bedf669ce8f757::load-balancer:r014-020f4f34-bb49-4699-98a7-a53384cd649d", "is_public": false, "created_at": "2021-09-14T21:45:06.377863Z", "hostname": "020f4f34-us-east.lb.appdomain.cloud", "listeners": [], "operating_status": "online", "pools": [], "private_ips": [ { "address": "10.241.64.13" }, { "address": "10.241.64.14" } ], "provisioning_status": "active", "public_ips": [], "subnets": [ { "id": "0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024", "href": "https://us-east.iaas.cloud.ibm.com/v1/subnets/0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024", "crn": "crn:v1:bluemix:public:is:us-east-2:a/be636a7a6e4d4b6296bedf669ce8f757::subnet:0767-064498f3-4df5-4fa5-b2ed-de5a3bfea024", "name": "nlb-subnet" } ], "resource_group": { "id": "42c4f51adc3147b4b4049ad9826c30a1", "href": "https://resource-controller.cloud.ibm.com/v1/resource_groups/42c4f51adc3147b4b4049ad9826c30a1", "name": "Default" }, "resource_type": "load_balancer", "logging": { "datapath": { "active": false } }, "profile": { "href": "https://us-east.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-fixed", "name": "network-fixed", "family": "Network" }, "security_groups": [], "security_group_supported": false, "route_mode": true }Observe o primeiro endereço IP listado em
Private IPs. Você precisa disso ao definir rotas personalizadas. -
Incluir um conjunto.
Primeiro, crie sua carga útil de solicitação de API usando o modelo a seguir.
{ "algorithm": "round_robin", "protocol": "tcp", "health_monitor": { "delay": 10, "max_retries": 2, "timeout": 5, "type": "tcp" } }Em seguida, execute o comando a seguir:
curl -s -H "Authorization: Bearer $IAM_TOKEN" -X POST -d @create.json "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d/pools?version=2021-07-30&generation=2" | jqSaída de amostra:
{ "id": "r014-0b8f4cde-4684-484b-bd3c-64f55a917328", "name": "flashbulb-marvelous-gainfully-skydiver", "href": "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d/pools/r014-0b8f4cde-4684-484b-bd3c-64f55a917328", "algorithm": "round_robin", "health_monitor": { "delay": 10, "max_retries": 2, "timeout": 5, "type": "tcp" }, "protocol": "tcp", "created_at": "2021-09-14T21:56:08.202217034Z", "provisioning_status": "active", "proxy_protocol": "disabled" } -
Aguarde até que o NLB esteja em um estado ativo e, em seguida, inclua um listener.
A faixa de portas para o listener deve ser definida da seguinte forma:
port_miné1port_maxé65535
Crie uma carga útil de solicitação de API usando o modelo a seguir:
{ "default_pool": { "id": "r014-0b8f4cde-4684-484b-bd3c-64f55a917328" }, "port_min": 1, "port_max": 65535, "protocol": "tcp" }Execute o comando a seguir:
curl -s -H "Authorization: Bearer $IAM_TOKEN" -X POST -d @create_vnf.json "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d/listeners?version=2021-07-30&generation=2" | jqSaída de amostra:
{ "id": "r014-0ce87b15-9530-4624-a574-92495631f75d", "href": "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d/listeners/r014-0ce87b15-9530-4624-a574-92495631f75d", "protocol": "tcp", "port": 1, "port_min": 1, "port_max": 65535, "default_pool": { "id": "r014-0b8f4cde-4684-484b-bd3c-64f55a917328", "href": "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d/pools/r014-0b8f4cde-4684-484b-bd3c-64f55a917328", "name": "flashbulb-marvelous-gainfully-skydiver" }, "provisioning_status": "create_pending", "created_at": "2021-09-14T22:01:13.523172702Z", "accept_proxy_protocol": false, "https_redirect": null } -
Incluir o membro do grupo.
Primeiro, crie uma carga útil de solicitação de API usando o modelo a seguir:
{ "port": 90, "target": { "id": "0767_5545cfb3-febc-4f09-b9ea-0aeb66074edf" } }Em seguida, execute o comando a seguir:
curl -s -H "Authorization: Bearer $IAM_TOKEN" -X POST -d @add_member.json "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d/pools/r014-0b8f4cde-4684-484b-bd3c-64f55a917328/members?version=2021-07-30&generation=2" | jqSaída de amostra:
{ "id": "r014-c625efe0-6f69-4ae7-a2ef-9bf33c811a2c", "href": "https://us-east.iaas.cloud.ibm.com/v1/load_balancers/r014-020f4f34-bb49-4699-98a7-a53384cd649d/pools/r014-0b8f4cde-4684-484b-bd3c-64f55a917328/members/r014-c625efe0-6f69-4ae7-a2ef-9bf33c811a2c", "port": 90, "target": { "id": "0767_5545cfb3-febc-4f09-b9ea-0aeb66074edf", "href": "https://us-east.iaas.cloud.ibm.com/v1/instances/0767_5545cfb3-febc-4f09-b9ea-0aeb66074edf", "crn": "crn:v1:bluemix:public:is:us-east-2:a/be636a7a6e4d4b6296bedf669ce8f757::instance:0767_5545cfb3-febc-4f09-b9ea-0aeb66074edf" }, "weight": 50, "health": "unknown", "created_at": "2021-09-14T22:07:46.898295306Z", "provisioning_status": "create_pending" }
Próximas etapas
Depois que o NLB com modo de roteamento estiver em um estado ativo, siga estas etapas para finalizar a configuração do NLB:
-
Reúna as informações a seguir:
-
Seus CIDRs de sub-rede (sub-redes onde residem os VSIs da carga de trabalho, que serão os IPs a serem usados como IPs de destino).
-
Na resposta do balanceador de carga, você encontrará dois IPs privados listados. Anote o primeiro.
É possível gerar essa resposta executando a etapa 4 dos procedimentos da CLI ou da API.
O primeiro IP listado é o IP primário, e o segundo é o secundário, para fins de backup. Ambos são listados para que, no futuro, se ocorrer um failover, você saiba quais são os IPs ativo e passivo.
-
Seu CIDR de sub-rede da carga de trabalho de back-end.
-
-
Configure suas rotas customizadas da seguinte forma:
- Para todo o tráfego destinado à sub-rede de carga de trabalho do cliente de back-end, configure o próximo hop para o IP privado do NLB.
- Para todo o tráfego destinado à sub-rede do cliente, configure o próximo hop para o IP privado do NLB.
-
As instâncias de VNF (VNIs) devem residir na mesma sub-rede que o NLB e devem ser adicionadas como membros ao seu pool.