IBM Cloud Docs
Creación de un equilibrador de carga de red pública o privada

Creación de un equilibrador de carga de red pública o privada

Puede crear un IBM Cloud® Network Load Balancer for VPC (NLB) con la consola, CLI o API.

Antes de empezar

Para configurar un NLB público o privado, asegúrese de que ha cumplido los siguientes requisitos previos:

  • Si no tiene una VPC, cree una en la región en el que desea crear el NLB.
  • Cree una subred en la zona preferida de su VPC.

El servicio NLB puede añadir reglas a las tablas de enrutamiento personalizadas para garantizar la disponibilidad del servicio en algunas condiciones de fallo. Como resultado, si el cliente está fuera de la zona y/o VPC del NLB, debe añadir una tabla de direccionamiento personalizada de entrada a la VPC donde reside el NLB con el origen de tráfico adecuado seleccionado.

Para el NLB privado, en función de la ubicación de los clientes, debe asegurarse de que existen tablas de direccionamiento de entrada (tal como se describe en la Tabla 1).

Fuentes de tráfico que requieren tablas de enrutamiento personalizadas de entrada.
Ubicación del cliente Tipo de tabla de direccionamiento Origen del tráfico
Local Ingress Direct Link
Otra VPC o infraestructura clásica Ingress Transit Gateway
Otra zona de disponibilidad de la misma VPC Ingress Zona de VPC

Para obtener más información, consulte Acerca de tablas y rutas de direccionamiento.

Creación de un equilibrador de carga de red en la consola

Para crear y configurar un equilibrador de carga de red en la consola de IBM Cloud, siga estos pasos:

  1. Desde su navegador, abra la consola IBM Cloud y conéctese a su cuenta.

  2. Seleccione el ícono Menú del menú de Navegación, luego haga clic en el ícono Infraestructura VPC > Red > Balanceadores de carga.

  3. Haga clic en Crear + en la parte superior derecha de la página.

  4. Para el tipo de equilibrador de carga, seleccione el mosaico de equilibrador de carga de red (NLB).

  5. Para Ubicación, edite los campos siguientes, si es necesario.

    • Geografía- Indica la geografía en la que desea que se cree el equilibrador de carga.
    • Región- Indica la región en la que desea que se cree el equilibrador de carga.
  6. Para más detalles, complete la siguiente información:

    • Nombre- Introduzca un nombre para el equilibrador de carga, como my-load-balancer.

    • Grupo de recursos: seleccione un grupo de recursos para el equilibrador de carga.

    • Etiquetas- (Opcional) Añada etiquetas para ayudarle a organizar y encontrar sus recursos. Puede añadir más etiquetas posteriormente. Para obtener más información, consulte Cómo trabajar con etiquetas.

    • Etiquetas de gestión de acceso-(Opcional) Añada etiquetas de gestión de acceso a los recursos para ayudar a organizar las relaciones de control de acceso. El único formato admitido para las etiquetas de gestión de accesos es key:value. Para obtener más información, consulte Control del acceso a los recursos mediante etiquetas.

    • Nube privada virtual- Seleccione su VPC.

    • Para el tipo. seleccione Público o Privado.

      Sólo para el tipo Privado, puede activar el modo de enrutamiento, que se utiliza para desplegar funciones de red virtuales (VNF) de alta disponibilidad. Para ver casos de uso e instrucciones de extremo a extremo, consulte Acerca de despliegues de función de red virtual HA.

    • Para el tipo de DNS, seleccione Público o Privado. Las zonas DNS privadas sólo pueden resolverse en IBM Cloud, y sólo desde redes explícitamente permitidas en una cuenta o con acceso cruzado entre cuentas.

      Sólo para tipo privado, pulse Enlazar + para especificar la información de zona e instancia de DNS y, a continuación, pulse Enlazar.

    • Seleccione las subredes en las que desea crear su equilibrador de carga. Para maximizar la disponibilidad de la aplicación, seleccione subredes de diferentes zonas.

  7. En Grupos back-end, haga clic en Crear grupo y especifique la siguiente información para crear un grupo back-end. Cuando haya terminado, haga clic en Crear.

    Puede crear una o varias agrupaciones.

    • Especifique un nombre para la agrupación, como por ejemplo my-pool.

    • Seleccione un protocolo para las instancias de esta agrupación. El protocolo de la agrupación debe coincidir con el protocolo del escucha asociado. Por ejemplo, si el escucha es TCP, el protocolo de la agrupación debe ser TCP. O, si el escucha es UDP, el protocolo de la agrupación también debe ser UDP.

    • Elija la retención de sesiones y seleccione los valores Ninguno o IP de origen. Si elige IP de origen, todas las solicitudes durante la sesión se envían a la misma instancia.

    • Seleccione el método, que es el algoritmo de equilibrio de carga. Se muestran las siguientes opciones:

      • Round robin: las solicitudes se envían a cada instancia en turnos. Todas las instancias reciben aproximadamente un mismo número de conexiones de cliente.
      • Round robin ponderado: las solicitudes se envían a cada instancia en proporción a su ponderación asignada. Por ejemplo, si tiene instancias A, B y C, y sus pesos se establecen en 60, 60 y 30, entonces las instancias A y B reciben el mismo número de conexiones, y la instancia C recibe la mitad de conexiones.
      • Menos conexiones: las solicitudes se reenvían a la instancia que en ese momento tiene el menor número de conexiones.
    • Para la comprobación de estado, se muestran las opciones siguientes:

      • Ruta de comprobación de estado - Una ruta de comprobación de estado sólo es aplicable si selecciona HTTP como protocolo de comprobación de estado. La vía de acceso de comprobación de estado especifica el URL que utiliza el equilibrador de carga para enviar las solicitudes de comprobación de estado HTTP a las instancias de la agrupación. De forma predeterminada, las comprobaciones de estado se envían a la vía de acceso raíz (/).
      • Protocolo de estado: el protocolo que utiliza el equilibrador de carga para enviar mensajes de comprobación de estado a las instancias de la agrupación.
      • Puerto de salud: puerto al que el equilibrador de carga envía las solicitudes de comprobación de salud. De forma predeterminada, las comprobaciones de estado se envían en el mismo puerto en el que se envía el tráfico a la instancia.
      • Interval: intervalo, en segundos, entre dos intentos consecutivos de comprobación de estado. De forma predeterminada, se envían comprobaciones de estado cada 5 segundos.
      • Tiempo de espera (seg)- El tiempo máximo que el sistema espera una respuesta de una solicitud de comprobación de estado. De forma predeterminada, el equilibrador de carga espera 2 segundos para obtener una respuesta.
      • Reintentos máximos: número máximo de intentos de comprobación de estado que realiza el equilibrador de carga antes de declarar que una instancia no está en buen estado. De forma predeterminada, se deja de considerar que una instancia está en buen estado después de dos comprobaciones de estado fallidas.

      Puede conectar instancias de servidor tras crear la agrupación de fondo.

  8. Opcionalmente, puede crear una copia de seguridad para cualquiera de sus grupos existentes. Esto permite que el grupo de respaldo gestione el tráfico en caso de que un miembro falle. Para ello, deberá crear una política a prueba de fallos:

    Su balanceador de carga debe tener al menos un grupo para poder asignar un grupo de respaldo.

    • Después de que el estado de su balanceador de carga cambie a Activo, seleccione la pestaña Back-end pools (Grupos de servidores back-end).
    • En la página de la lista de grupos, haga clic en Editar y especifique la siguiente información:
      • Acción: Seleccionar reenviar para crear un grupo de copia de seguridad. Esto activa la sección Destino.
      • Destino: Seleccione un grupo de la lista de grupos compatibles para crear su grupo de copia de seguridad.

    Para los equilibradores de carga de red, no se puede asignar un grupo como grupo de reserva si ya está conectado a un agente de escucha. Además, los oyentes no pueden vincularse a un grupo de reserva.

    Aunque el equilibrador de carga deja de enviar conexiones a las instancias que no están en buen estado, el equilibrador de carga sigue supervisando el estado de estas instancias y reanuda su uso si se detecta que vuelven a estar en buen estado (es decir, si pasan correctamente dos intentos de comprobación de estado consecutivos).

    Si las instancias de la agrupación no están en buen estado y cree que la aplicación se está ejecutando correctamente, vuelva a comprobar los valores de protocolo de estado y de vía de acceso de estado. Compruebe también los grupos de seguridad conectados a las instancias para asegurarse de que las reglas permiten el tráfico entre el equilibrador de carga y las instancias.

  9. Haga clic en Crear oyente y especifique la siguiente información:

    • Grupo de servidores predeterminado: el grupo de servidores predeterminado al que este receptor reenvía el tráfico.
    • Protocolo: el protocolo que se debe utilizar para recibir las solicitudes entrantes.
    • Puerto de escucha - El puerto de escucha en el que se reciben las solicitudes. Las opciones son:
      • Puerto de oyente único: el puerto por el que el equilibrador de carga recibe el tráfico entrante del cliente.
      • Rango de puertos de escucha: el rango de puertos donde el equilibrador de carga recibe el tráfico de cliente de entrada.

    A continuación, pulse en Crear. Puede crear uno o varios escuchas.

  10. En Grupos de seguridad, seleccione los grupos de seguridad que desea adjuntar a su equilibrador de carga o haga clic en Crear para crear un nuevo grupo de seguridad que adjuntar a su NLB.

    Asegúrese de que el grupo de seguridad permite el tráfico de equilibrio de carga (oyente, objetivos y puertos de comprobación de estado). Si no especifica un grupo de seguridad, se adjunta el grupo de seguridad predeterminado de su VPC.

  11. Pulse Añadir a estimación para revisar los precios del equilibrador de carga y crearlos.

Creación de un equilibrador de carga de red desde la CLI

En el ejemplo siguiente se muestra la utilización de la CLI para crear un Network Load Balancer for VPC (NLB). En este ejemplo, se encuentra frente a una instancia de servidor virtual de VPC (ID 0716_6acdd058-4607-4463-af08-d4999d983945) ejecutando un servidor TCP que escucha en el puerto 9090. El equilibrador de carga tiene un escucha frontal, que permite el acceso seguro al servidor TCP.

Para crear un equilibrador de carga de red con la CLI, siga estos pasos:

  1. Configure el entorno de la CLI.

  2. Inicie sesión en su cuenta desde la CLI. Una vez introducida la contraseña, el sistema le preguntará qué cuenta y qué región desea utilizar.

    ibmcloud login --sso
    
  3. Crear un equilibrador de carga.

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

    Salida de ejemplo:

    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
    

    Crear un equilibrador de carga de red privada.

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

    Salida de ejemplo:

    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. Crear un grupo.

    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
    

    Salida de ejemplo:

    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. Cree un miembro.

    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
    

    Salida de ejemplo:

    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. Cree un escucha.

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

    Salida de ejemplo:

    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. Obtenga detalles sobre su equilibrador de carga.

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

    Salida de ejemplo:

    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
    

Creación de un equilibrador de carga de red con la API

El siguiente ejemplo ilustra la creación de un equilibrador de carga de red delante de dos instancias de servidor virtual VPC (192.168.100.5 y 192.168.100.6) que ejecutan una aplicación web que escucha en el puerto 80. El equilibrador de carga tiene un escucha frontal, que permite el acceso seguro a la aplicación web mediante HTTPS.

El ejemplo omite los pasos de requisito previo para utilizar la API para suministrar una VPC, subredes e instancias.

Para crear un equilibrador de carga de red con la API, siga estos pasos:

  1. Configure el entorno de la API.

  2. Almacene los siguientes valores en variables que se utilizarán en el comando API.

    • ResourceGroupId- En primer lugar, obtenga su grupo de recursos y, a continuación, rellene la variable.
    export ResourceGroupId=<your_resourcegroup_id>
    
  3. Cree un equilibrador de carga con un listener, un pool y unas instancias de servidor adjuntas (miembros del pool).

    curl -H "Authorization: $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"
                }
            ]
            }'
    

    Salida de ejemplo:

    {
        "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"
            }
        ]
    }
    

    Guarde el ID del equilibrador de carga que se va a utilizar en los pasos siguientes. Por ejemplo, puede guardarlo en la variable lbid.

    lbid=0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727
    
  4. Obtenga detalles sobre el equilibrador de carga.

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

    Deje pasar un tiempo para que se complete el suministro. Cuando el equilibrador de carga está listo, se establece en el estado online y active, tal como se muestra en la siguiente salida de ejemplo:

    {
     "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"
       }
     ]