Criando um balanceador de carga de rede pública ou privada

É possível criar um IBM Cloud® Network Load Balancer for VPC (NLB) com o console, a CLI ou a API.

Antes de Iniciar

Para configurar um NLB público ou privado, certifique-se de ter atendido os pré-requisitos a seguir:

  • Se você não tiver um VPC, crie um na região na qual você deseja criar o seu NLB.
  • Crie uma sub-rede na zona de sua preferência na sua VPC.

O serviço NLB pode adicionar regras às tabelas de roteamento personalizadas para garantir a disponibilidade do serviço em determinadas situações de falha. Como resultado, quando o cliente está fora da zona e/ou da VPC do NLB, deve-se incluir uma tabela de roteamento customizada de ingresso na VPC na qual o NLB reside com a origem de tráfego adequada selecionada.

Para o NLB privado, dependendo da localização dos clientes, deve-se garantir que as tabelas de roteamento de ingresso existam (conforme descrito na Tabela 1).

Fontes de tráfego que exigem tabelas de roteamento personalizadas de entrada.
Local do cliente Tipo de tabela de roteamento Origem de tráfego
No local Ingresso Direct Link
Outra VPC ou infraestrutura clássica Ingresso Transit Gateway
Outra Zona de Disponibilidade da mesma VPC Ingresso Zona da VPC

Para obter mais informações, consulte Sobre tabelas de roteamento e rotas.

Criação de um balanceador de carga de rede no console

Para criar e configurar um balanceador de carga de rede no console do IBM Cloud, siga estas etapas:

  1. No seu navegador, abra a console do IBM Cloud e faça login na sua conta.

  2. Selecione o ícone Menu do menu de navegação e clique no ícone VPC de infraestrutura > Rede > Balanceadores de carga.

  3. Clique em “Criar +” no canto superior direito da página.

  4. Para o tipo de balanceador de carga, selecione o ladrilho Network Load Balancer (NLB).

  5. Para Local, edite os seguintes campos, se necessário.

    • Geografia- Indica a região geográfica onde você deseja que o balanceador de carga seja criado.
    • Região- Indica a região onde você deseja que o balanceador de carga seja criado.
  6. Para obter mais detalhes, preencha as seguintes informações:

    • Nome- Digite um nome para o balanceador de carga, como my-load-balancer.

    • Grupo de recursos- Selecione um grupo de recursos para o balanceador de carga.

    • Tags- (Opcional) Adicione tags para ajudar a organizar e localizar seus recursos. É possível incluir mais tags posteriormente. Para obter mais informações, consulte Trabalhando com tags.

    • Tags de gerenciamento de acesso-(Opcional) Inclua tags de gerenciamento de acesso aos recursos para ajudar a organizar relacionamentos de controle de acesso. O único formato suportado para as tags de gerenciamento de acesso é key:value. Para obter mais informações, consulte Controlando o acesso aos recursos usando tags.

    • Nuvem privada virtual- Selecione sua VPC.

    • Para o tipo. selecione Público ou Privado.

      Apenas para o tipo Privado, é possível ativar o modo de roteamento, que é utilizado para implantar funções de rede virtual (VNFs) de alta disponibilidade. Para casos de uso e instruções de ponta a ponta, consulte Sobre implementações de função de rede virtual HA.

    • Para o tipo DNS, selecione Público ou Privado. As zonas DNS privadas só podem ser resolvidas no IBM Cloud e apenas a partir de redes explicitamente autorizadas em uma conta ou com acesso entre contas.

      Somente para tipo Privado, clique em Ligar + para inserir suas informações de instância e zona de DNS e, em seguida, clique em Ligar.

    • Selecione as sub-redes nas quais deseja criar seu balanceador de carga. Para maximizar a disponibilidade de seu aplicativo, selecione sub-redes em zonas diferentes.

  7. Para grupos de back-end, clique em “Criar grupo” e especifique as seguintes informações para criar um grupo de back-end. Quando terminar, clique em Criar.

    É possível criar um ou mais conjuntos.

    • Digite um nome para o conjunto, como my-pool.

    • Selecione 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. Ou, se o listener for UDP, o protocolo do conjunto também deverá ser UDP.

    • Escolha a permanência da sessão e selecione Nenhum ou IP de origem. Se você escolher IP de origem, todas as solicitações durante sua sessão serão enviadas à mesma instância.

    • 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, então as instâncias A e B receberão o mesmo número de conexões, e 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.
    • Para verificação de Funcionamento, as opções a seguir são mostradas:

      • Caminho da verificação de integridade- Um caminho de 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.
      • Interval - o intervalo em segundos entre duas tentativas consecutivas de verificação de funcionamento. 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.

      É possível anexar instâncias de servidor depois de criar seu conjunto de back-end.

  8. Opcionalmente, você pode criar um backup para qualquer um dos pools existentes. Isso permite que o pool de backup gerencie o tráfego em caso de falha de um membro. Para isso, você deve criar uma política à prova de falhas:

    Seu balanceador de carga deve ter pelo menos um pool para que seja possível atribuir um pool de backup.

    • Depois que o status do balanceador de carga mudar para Ativo, selecione a guia Pools de back-end.
    • Na página da lista de grupos, clique em Editar e, em seguida, forneça as seguintes informações:
      • Ação: Selecione avançar para criar um pool de backup. Isso torna a seção Target ativa.
      • Destino: Selecione um pool na lista de pools compatíveis para criar seu pool de backup.

    Para balanceadores de carga de rede, não é possível atribuir um pool para ser um pool de backup se ele já estiver conectado a um ouvinte. Além disso, os ouvintes não podem ser anexados a um pool de backup.

    Embora o balanceador de carga pare de enviar conexões para instâncias inoperantes, ele continua monitorando o funcionamento dessas instâncias e continuará seu uso se elas se tornarem funcionais novamente (ou seja, se elas passarem com sucesso por duas tentativas de verificação de funcionamento consecutivas).

    Se as instâncias no conjunto estiverem inoperantes e você achar que o seu aplicativo está sendo executado adequadamente, verifique novamente o protocolo de funcionamento e os valores do caminho de funcionamento. 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.

  9. Clique em “Criar ouvinte” e especifique as seguintes informações:

    • Pool de back-end padrão- O pool de back-end padrão para o qual este ouvinte encaminha o tráfego.
    • Protocolo - O protocolo a ser usado para receber solicitações de entrada.
    • Porta de escuta- A porta na qual as solicitações são recebidas. As opções são:
      • Porta de escuta única- A porta pela qual o balanceador de carga recebe o tráfego de entrada dos clientes.
      • Intervalo de portas do listener-O intervalo de portas em que o balanceador de carga recebe o tráfego de entrada do cliente.

    Em seguida, clique em Criar. É possível criar um ou mais listeners.

  10. Em “Grupos de segurança”, selecione os grupos de segurança que deseja associar ao seu balanceador de carga ou clique em “Criar” para criar um novo grupo de segurança a ser associado ao seu NLB.

    Certifique-se de que o grupo de segurança permita o tráfego de balanceamento de carga (portas do listener, dos destinos e de verificação de integridade). Ao não especificar um grupo de segurança, o grupo de segurança padrão da VPC é conectado como alternativa.

  11. Clique em Incluir na estimativa para revisar a precificação para seu balanceador de carga e criá-la.

Criação de um balanceador de carga de rede pela CLI

O exemplo a seguir ilustra o uso da CLI para criar um Network Load Balancer for VPC (NLB). Neste exemplo, ele está na frente de uma instância de servidor virtual VPC (ID 0716_6acdd058-4607-4463-af08-d4999d983945) que está executando um servidor TCP que atende na porta 9090. O balanceador de carga tem um listener de front-end que permite acesso seguro ao servidor TCP.

Para criar um balanceador de carga de rede usando a CLI, siga estas etapas:

  1. Configure seu ambiente da CLI.

  2. Faça login na sua conta pela CLI. Depois de digitar a senha, o sistema solicita que você indique qual conta e região deseja usar.

    ibmcloud login --sso
    
  3. Criar um balanceador de carga.

    ibmcloud is load-balancer-create nlb-test public --subnet 0896-b1f24514-89dc-4afd-b0e2-5489a43cf45c --family network
    

    Saída de amostra:

    Creating load balancer nlb-test in resource group under account IBM Cloud Network Services as user test@ibm.com...
    
     ID                 r006-99b5ab45-6357-42db-8b32-5d2c8aa62776
     Name               nlb-test
     CRN                crn:v1:public:is:us-south-1:a/123456::load-balancer:r006-99b5ab45-6357-42db-8b32-5d2c8aa62776
     Family             Network
     Host name          99b5ab45-us-south.lb.test.appdomain.cloud
     Subnets            ID                                          Name
                        0896-b1f24514-89dc-4afd-b0e2-5489a43cf45c   nlb
     Security Groups    ID                                          Name
                        0581-a1336811-39dc-5aff-a0e6-6489a43ca62v   nlb1
    
     Public IPs
     Private IPs
     Provision status   create_pending
     Operating status   offline
     Is public          true
     Listeners
     Pools              ID   Name
    
     Resource group     ID                                 Name
                        3021f90279574ce287dd5fba82c08899   Default
    
     Created            2020-08-27T14:34:34.732-05:00
    

    Crie um balanceador de carga de rede privada.

    ibmcloud is load-balancer-create nlb-test private --subnet 07a7-37b4dcfc-841e-4d4a-9f9f-9e45ffbd0285 --family network
    

    Saída de amostra:

    Creating load balancer nlb-test in resource group  under account CNS Development Account - netsvs as user test@us.ibm.com...
    
    ID                 r018-8a994baa-21ba-428c-ac3f-e3fd91fa92c9
    Name               nlb-test
    CRN                crn:v1:bluemix:public:is:eu-gb-3:a/123456::load-balancer:r018-8a994baa-21ba-428c-ac3f-e3fd91fa92c9
    Family             Network
    Host name          8a994baa-eu-gb.lb.appdomain.cloud
    Subnets            ID                                          Name
                       07a7-37b4dcfc-841e-4d4a-9f9f-9e45ffbd0285   nlb1
    Security Groups    ID                                          Name
                       0581-a1336811-39dc-5aff-a0e6-6489a43ca626
    
    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-03-22T11:34:57.34-05:00
    
  4. Crie uma piscina.

    ibmcloud is load-balancer-pool-create nlb-pool r006-99b5ab45-6357-42db-8b32-5d2c8aa62776  weighted_round_robin tcp 10  --failsafe-policy-action forward --failsafe-policy-target pool2
    

    Saída de amostra:

    Creating pool nlb-pool of load balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776  under account IBM Cloud Network Services as user test@ibm.com...
    
    ID                         r006-3b66d605-6aa5-4166-9f66-b16054da3cb0
    Name                       nlb-pool
    Protocol                   tcp
    Algorithm                  weighted_round_robin
    Instance group             ID   Name
                               -    -
    
    Health monitor             Type   Port   Health monitor URL   Delay   Retries   Timeout
                               http   8080   /                    10      2         5
    
    Failsafe policy            Action    Target ID                                   Target name   Healthy Member Threshold Count
                                forward   r006-815e16e7-8729-4d9e-9203-936a6b615ee1   pool2         0
    
    Session persistence type   source_ip
    Members
    Provision status           active
    Created                    2020-08-27T14:45:42.038-05:00
    
  5. Crie um membro..

    ibmcloud is load-balancer-pool-member-create r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 r006-3b66d605-6aa5-4166-9f66-b16054da3cb0 9090 0716_6acdd058-4607-4463-af08-d4999d983945 --weight 70
    

    Saída de amostra:

    Creating member of pool r006-3b66d605-6aa5-4166-9f66-b16054da3cb0 under account IBM Cloud Network Services as user test@ibm.com...
    
    ID                 r006-61f8b000-a90d-4abe-909e-c507dffec565
    Port               9090
    Target             0716_6acdd058-4607-4463-af08-d4999d983945
    Weight             70
    Health             unknown
    Created            2020-08-27T14:59:55.446-05:00
    Provision status   create_pending
    
  6. Crie um ouvinte

    ibmcloud is load-balancer-listener-create r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 7070 tcp --default-pool r006-3b66d605-6aa5-4166-9f66-b16054da3cb0
    

    Saída de amostra:

    Creating listener of load balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 under account IBM Cloud Network Services as user test@ibm.com...
    
    ID                     r006-2847a948-f9b6-4fc1-91c6-f1c49dac3eba
    Certificate instance   -
    Connection limit       -
    Port                   7070
    Protocol               tcp
    Default pool           r006-3b66d605-6aa5-4166-9f66-b16054da3cb0
    Provision status       create_pending
    Created                2020-08-27T15:16:08.643-05:00
    
  7. Veja os detalhes do seu balanceador de carga.

    ibmcloud is load-balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776
    

    Saída de amostra:

    Getting load balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 under account IBM Cloud Network Services as user test@ibm.com...
    
    ID                 r006-99b5ab45-6357-42db-8b32-5d2c8aa62776
    Name               nlb-test
    CRN                crn:v1:public:is:us-south-1:a/123456::load-balancer:r006-99b5ab45-6357-42db-8b32-5d2c8aa62776
    Family             Network
    Host name          99b5ab45-us-south.lb.test.appdomain.cloud
    Subnets            ID                                          Name
                       0896-b1f24514-89dc-4afd-b0e2-5489a43cf45c   nlb
    
    Public IPs         150.238.50.78, 150.238.54.95
    Private IPs        10.240.0.58, 10.240.0.59
    Provision status   active
    Operating status   online
    Is public          true
    Listeners          r006-2847a948-f9b6-4fc1-91c6-f1c49dac3eba
    Pools              ID                                          Name
                       r006-3b66d605-6aa5-4166-9f66-b16054da3cb0   nlb-pool
    
    Resource group     ID                                 Name
                       3021f90279574ce287dd5fba82c08899   Default
    
    Created            2020-08-27T14:34:34.732-05:00
    

Criação de um balanceador de carga de rede usando a API

O exemplo a seguir ilustra a criação de um balanceador de carga de rede na frente de duas instâncias de servidor virtual VPC (192.168.100.5 e 192.168.100.6) que executam uma aplicação web que escuta na porta 80. O balanceador de carga tem um listener de front-end, que permite acesso seguro ao aplicativo da web usando HTTPS.

O exemplo ignora as etapas de pré-requisito para usar a API para provisionar uma VPC, sub-redes e instâncias.

Para criar um balanceador de carga de rede usando a API, siga estas etapas:

  1. Configure o seu Ambiente de API.

  2. Armazene os seguintes valores em variáveis para serem usados no comando da API.

    • ResourceGroupId- Primeiro, obtenha seu grupo de recursos e, em seguida, preencha a variável.
    export ResourceGroupId=<your_resourcegroup_id>
    
  3. Crie um balanceador de carga com um ouvinte, um pool e instâncias de servidor associadas (membros do pool).

    curl -H "Authorization: Bearer $iam_token" -X POST
    "$vpc_api_endpoint/v1/load_balancers?version=$api_version&generation=2" \
        -d '{
            "name": "example-balancer",
            "is_public": true,
            "profile": {
                "name": "network-fixed"
            },
            "listeners": [
                {
                    "certificate_instance": {
                      "crn": "crn:v1:bluemix:public:cloudcerts:us-south:a/123456:b8877ea4-b8eg-467e-912a-da1eb7f031cg:certificate:43219c4c97d013fb2a95b21dddde1234"
                    },
                    "port": 443,
                    "protocol": "tcp",
                    "default_pool": {
                        "name": "example-pool"
                    }
                }
            ],
            "pools": [
                {
                    "algorithm": "round_robin",
                    "health_monitor": {
                        "delay": 5,
                        "max_retries": 2,
                        "timeout": 2,
                        "type": "tcp",
                        "url_path": "/"
                    },
                    "name": "example-pool",
                    "protocol": "tcp",
                    "session_persistence": {
                        "cookie_name": "string",
                        "type": "source_ip"
                    },
                    "members": [
                        {
                            "port": 80,
                            "target": {
                                "address": "192.168.100.5"
                            },
                            "weight": 50
                        },
                        {
                            "port": 80,
                            "target": {
                                "address": "192.168.100.6"
                            },
                            "weight": 50
                        }
                    ]
                }
            ],
            "subnets": [
                {
                    "id": "7ec87131-1c7e-4990-b4f0-a26f2e61f98e"
                }
            ]
            }'
    

    Saída de amostra:

    {
        "created_at": "2018-07-12T23:17:07.5985381Z",
        "crn": "crn:v1:bluemix:public:is:us-south:a/123456::load-balancer:dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
        "hostname": "ac34687d.lb.appdomain.cloud",
        "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
        "id": "0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
        "is_public": true,
        "profile": {
            "name": "network-fixed",
            "family": "network"
        },
        "listeners": [
            {
                "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
                "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/70294e14-4e61-11e8-bcf4-0242ac110004"
            }
        ],
        "name": "example-balancer",
        "operating_status": "offline",
        "pools": [
            {
                "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
                "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/70294e14-4e61-11e8-bcf4-0242ac110004",
                "name": "example-pool"
            }
        ],
        "provisioning_status": "create_pending",
        "resource_group": {
            "id": "56969d60-43e9-465c-883c-b9f7363e78e8"
        },
        "subnets": [
            {
                "id": "0738-7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
                "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
                "name": "example-subnet"
            }
        ]
    }
    

    Salve o ID do balanceador de carga para usar nas próximas etapas. Por exemplo, você pode armazená-lo na variável lbid``.

    lbid=0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727
    
  4. Veja os detalhes sobre o balanceador de carga.

     curl -H "Authorization: Bearer $iam_token" -X GET "$vpc_api_endpoint/v1/load_balancers/$lbid?version=$api_version&generation=2"
    

    Permita algum tempo para fornecimento. Quando o balanceador de carga estiver pronto, ele será configurado como online e o status active, conforme mostrado na saída de amostra a seguir:

    {
     "id": "0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
     "crn": "crn:v1:bluemix:public:is:us-south:a/123456::load-balancer:dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
     "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
     "name": "example-balancer",
     "created_at": "2018-07-13T22:22:24.489Z",
     "hostname": "dd754295-e9e0-4c9d-bf6c-58fbc59e5727.lb.appdomain.cloud",
     "is_public": true,
     "profile": {
           "name": "network-fixed",
           "family": "network"
     },
     "listeners": [
       {
         "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
          "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/70294e14-4e61-11e8-bcf4-0242ac110004"
       }
     ],
     "operating_status": "online",
     "pools": [
       {
         "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
         "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/70294e14-4e61-11e8-bcf4-0242ac110004",
         "name": "example-pool"
       }
     ],
     "private_ips": [
       {
         "address": "192.168.10.5"
       },
       {
         "address": "192.168.10.6"
       }
     ],
     "provisioning_status": "active",
     "public_ips": [
       {
           "address": "169.11.111.115"
       },
       {
           "address": "169.11.111.116"
       }
     ],
     "resource_group": {
       "id": "0738-56969d60-43e9-465c-883c-b9f7363e78e8"
     },
     "subnets": [
       {
         "id": "0738-7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
         "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
         "name": "example-subnet"
       }
     ]