IBM Cloud Docs
创建公用或专用网络负载均衡器

创建公用或专用网络负载均衡器

您可以使用控制台、CLI 或 API 创建 IBM Cloud® Network Load Balancer for VPC (NLB)。

准备工作

要配置公共或专用 NLB,请确保满足以下先决条件:

  • 如果您没有 VPC,请在要创建 NLB 的区域中创建 VPC。
  • 在 VPC 中的首选区域中创建子网。

NLB 服务可能会向定制路由表添加规则,以确保某些故障情况的服务可用性。 因此,如果客户机位于 NLB 的区域和/或 VPC 外部,那么必须将入口定制路由表添加到选择了正确流量源的 NLB 所在的 VPC。

对于专用 NLB,根据客户机的位置,必须确保存在入口路由表 (如表 1 中所述)。

需要输入自定义路由表的流量源。
客户位置 路由表类型 流量源
内部部署 Ingress Direct Link
另一个 VPC 或经典基础架构 Ingress Transit Gateway
同一 VPC 的另一个可用性区域 Ingress VPC 区域

有关更多信息,请参阅 关于路由表和路由

在控制台中创建网络负载平衡器

要在 IBM Cloud 控制台中创建和配置网络负载均衡器,请执行以下步骤:

  1. 从浏览器打开 IBM Cloud 控制台并登录账户。

  2. 选择导航菜单 菜单图标,然后单击基础架构 VPC 图标 > 网络 > 负载平衡器

  3. 单击页面右上角的 创建 +

  4. 对于负载均衡器类型,选择“网络负载均衡器 (NLB)”磁贴。

  5. 对于“位置”,根据需要编辑以下字段。

    • 地理位置-指示要在其中创建负载均衡器的地理位置。
    • 区域-指示要在其中创建负载均衡器的区域。
  6. 有关详细信息,请填写以下信息:

    • Name- 输入负载平衡器的名称,如 my-load-balancer

    • 资源组- 为负载平衡器选择一个资源组。

    • 标签-(可选)添加标签,帮助您组织和查找资源。 以后可以添加更多标记。 有关更多信息,请参阅使用标记

    • 访问管理标记-(可选) 向资源添加访问管理标记以帮助组织访问控制关系。 访问管理标记唯一受支持的格式为 key:value。 有关更多信息,请参阅 使用标记控制对资源的访问

    • 虚拟私有云- 选择您的 VPC。

    • 对于类型。选择 公用专用

      仅适用于专用类型,您可以启用路由方式,此方式用于部署高可用性虚拟网络功能 (VNF)。 有关用例和端到端指示信息,请参阅 关于 HA 虚拟网络功能部署

    • 对于 DNS 类型,请选择 公用专用。 专用 DNS 区域只能在 IBM Cloud 上解析,而且只能从账户中明确允许的网络或跨账户访问。

      仅适用于专用类型,单击 绑定 + 以输入 DNS 实例和区域信息,然后单击 绑定

    • 选择创建负载平衡器的子网。 要最大限度提高应用程序的可用性,请选择不同专区中的子网。

  7. 对于后端池,单击创建池并指定以下信息以创建后端池。 完成后,单击创建

    可以创建一个或多个池。

    • 为池键入一个名称,如 my-pool

    • 为此池中的实例选择协议。 池的协议必须与其关联侦听器的协议相匹配。 例如,如果监听器是 TCP,则池的协议必须是 TCP。 或者,如果侦听器是 UDP,那么池的协议也必须是 UDP。

    • 选择会话粘性,然后选择 源 IP。 如果选择 源 IP,那么会将会话期间的所有请求发送到同一实例。

    • 选择方法,即负载均衡算法。 显示以下选项:

      • 循环- 将请求依次转发给每个实例。 所有实例收到的客户机连接数大致相等。
      • 加权循环- 按照分配给每个实例的权重比例将请求转发给每个实例。 例如,如果有实例 A、B 和 C,它们的权重分别设置为 60、60 和 30,那么实例 A 和 B 得到的连接数相等,实例 C 得到的连接数是它们的一半。
      • 最少连接数- 将请求转发给当前连接数最少的实例。
    • 对于运行状况检查,将显示以下选项:

      • 健康检查路径- 仅当您选择 HTTP 作为健康检查协议时,健康检查路径才适用。 健康检查路径指定负载平衡器用于向池中实例发送 HTTP 健康检查请求的 URL。 默认情况下,健康检查会发送到根路径 (/)。
      • 健康协议- 负载平衡器用于向池中实例发送健康检查消息的协议。
      • 健康端口- 负载平衡器发送健康检查请求的端口。 默认情况下,健康检查在向实例发送流量的同一端口上发送。
      • Interval (间隔 )- 两次连续健康检查尝试之间的间隔(以秒为单位)。 默认情况下,健康检查每 5 秒发送一次。
      • 超时(秒)- 系统等待健康检查请求响应的最长时间。 默认情况下,负载平衡器等待响应的时间为 2 秒。
      • 最大重试次数-在声明实例运行状况不佳之前,负载均衡器进行的最大运行状况检查尝试次数。 缺省情况下,两次运行状况检查失败后,即不会再认为实例运行状况正常。

      您可以在创建后端池后附加服务器实例。

  8. 您也可以为现有的任何池创建备份。 这样,在成员发生故障时,备用池可以管理流量。 为此,您需要制定一个故障安全策略:

    您的负载均衡器必须至少有一个池,才能分配备用池。

    • 负载均衡器的状态变为 “活动” 后,选择 “后端池”选项卡
    • 在泳池列表页面中,点击“编辑”,然后指定以下信息:
      • 操作:选择前进以创建备份池。 这样,目标部分就激活了。
      • 目标:从兼容池列表中选择一个池来创建您的备份池。

    对于网络负载均衡器,如果池已连接到侦听器,则无法将其指定为备份池。 此外,听众不能连接到备用池。

    虽然负载平衡器会停止向不健康的实例发送连接,但负载平衡器会继续监控这些实例的健康状况,如果发现它们再次恢复健康(也就是说,如果它们连续两次成功通过健康检查尝试),就会恢复它们的使用。

    如果池中的实例不健康,而您认为应用程序运行正常,请仔细检查健康协议和健康路径值。 此外,检查附加到实例的任何安全组,确保规则允许负载平衡器和实例之间的流量。

  9. 单击创建监听器并指定以下信息:

    • Default back-end pool(默认后端池 )- 此监听器转发流量的默认后端池。
    • 协议- 接收传入请求时使用的协议。
    • 监听端口- 接收请求的监听端口。 选项包括:
      • 单个侦听器端口-负载均衡器接收入站客户流量的端口。
      • 侦听器端口范围-负载均衡器接收入站客户流量的端口范围。

    然后,单击创建。 可以创建一个或多个侦听器。

  10. 对于安全组,请选择要附加到负载均衡器的安全组,或者单击 创建 以创建要附加到 NLB 的新安全组。

    确保安全组允许负载均衡流量 (侦听器,目标和运行状况检查端口)。 如果未指定安全组,那么将改为连接 VPC 中的缺省安全组。

  11. 单击 添加到估算 以查看负载均衡器的定价并创建该定价。

从 CLI 创建网络负载均衡器

以下示例说明了如何使用 CLI 创建 Network Load Balancer for VPC (NLB)。 在此示例中,它位于运行在端口 9090 上侦听的 TCP 服务器的一个 VPC 虚拟服务器实例 (标识 0716_6acdd058-4607-4463-af08-d4999d983945) 的前面。 负载均衡器具有前端侦听器,允许安全访问 TCP 服务器。

要使用 CLI 创建网络负载均衡器,请执行以下步骤:

  1. 设置 CLI 环境

  2. 从 CLI 登录您的账户。 输入密码后,系统会提示您要使用的帐户和区域。

    ibmcloud login --sso
    
  3. 创建负载均衡器。

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

    样本输出:

    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
    

    创建专用网络负载平衡器。

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

    样本输出:

    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. 创建一个池。

    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
    

    样本输出:

    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. 创建成员。

    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
    

    样本输出:

    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. 创建侦听器。

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

    样本输出:

    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. 获取有关负载均衡器的详细信息。

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

    样本输出:

    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
    

使用 API 创建网络负载均衡器

以下示例说明在运行侦听端口 80 的 Web 应用程序的两个 VPC 虚拟服务器实例 (192.168.100.5192.168.100.6) 之前创建网络负载均衡器。 负载平衡器有一个前端监听器,可通过 HTTPS 安全访问网络应用程序。

此示例跳过使用 API 来供应 VPC,子网和实例的 先决条件步骤

要使用 API 创建网络负载均衡器,请执行以下步骤:

  1. 设置 API 环境

  2. 将以下值存储在要在 API 命令中使用的变量中。

    • ResourceGroupId-首先获取资源组,然后填充变量。
    export ResourceGroupId=<your_resourcegroup_id>
    
  3. 创建一个带有监听器、池和附加服务器实例(池成员)的负载平衡器。

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

    样本输出:

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

    保存要在后续步骤中使用的负载均衡器的标识。 例如,可以将其保存在变量 lbid 中。

    lbid=0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727
    
  4. 获取有关负载均衡器的详细信息。

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

    请留出一些时间等待供应。 当负载平衡器准备就绪时,它会被设置为 onlineactive 状态,如以下示例输出所示:

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