IBM Cloud Docs
创建专用路径网络负载平衡器

创建专用路径网络负载平衡器

只能将专用路径网络负载均衡器 (NLB) 与专用路径服务配合使用。 从 Load Balancers for VPC 页面 创建私有路径 NLB,或作为私有路径服务供应流程的一部分。 你可以使用控制台、CLI、API 或 Terraform 创建私有路径网络负载平衡器。

专用路径允许服务提供商为其托管服务的用户启用和管理专用连接。 专用路径服务要求专用路径 NLB 与每个用户的虚拟专用端点 (VPE) 网关建立安全连接。 有关更多信息,请参阅 关于专用路径服务

专用路径 NLB 支持端口范围功能。 目前,连接到私有路径 NLB 的所有 VPE 都可以连接到范围内的任何端口。 有关详细信息,请参阅 设置公共网络负载平衡器端口范围

准备工作

查看以下要求,确保正确配置私有路径 NLB:

  • 如果没有 VPC,请在要创建私有路径 NLB 的同一区域创建一个。 将同一 VPC 区域用于专用路径 NLB和专用路径服务。
  • 在创建专用路径 NLB 之前创建虚拟服务器实例。 这可确保其完全正常运行。
  • 确保所选 VPC 中至少有一个子网。

你可以使用控制台、CLI、API 或 Terraform 创建私有路径网络负载平衡器。

在控制台中创建专用路径网络负载平衡器

要在 IBM Cloud 控制台中创建和配置 Network Load Balancer for VPC,请执行以下步骤:

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

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

  3. 单击页面右上方的创建

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

  5. 在“位置”部分中,根据需要编辑以下字段。

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

    • 名称:输入负载平衡器的名称,如 private-path-load-balancer
    • 资源组:为负载均衡器选择资源组。
    • 标签:(可选)添加标签,帮助您组织和查找资源。 以后可以添加更多标记。 有关更多信息,请参阅使用标记
    • 访问管理标记: (可选) 向资源添加访问管理标记以帮助组织访问控制关系。 访问管理标记唯一受支持的格式为 key:value。 有关更多信息,请参阅 使用标记控制对资源的访问
    • 虚拟私有云: 选择要在其中部署负载均衡器的 VPC。
    • 子网:选择子网。
    • Type: 选择 Private Path
  7. 在后端池部分,单击创建池,指定以下信息,然后单击创建。 可以创建一个或多个池。

    • 输入池的唯一名称,例如 private-path-pool

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

    • 从以下选项中选择方法 (即负载均衡算法)。

      • 循环- 将请求依次转发给每个实例。 所有实例收到的客户机连接数大致相等。
      • 加权循环- 按照分配给每个实例的权重比例将请求转发给每个实例。 例如,如果您具有实例 A、B 和 C,其权重分别设置为 60、60 和 30,那么实例 A 和 B 收到的连接数相同,而实例 C 收到的连接数只有 A 和 B 的一半。
    • 选择会话粘性,然后选择

    • 输入以下运行状况检查选项:

      • 健康检查路径- 仅当您选择 HTTP 作为健康检查协议时,健康检查路径才适用。 健康检查路径指定负载平衡器用于向池中实例发送 HTTP 健康检查请求的 URL。 缺省情况下,运行状况检查会发送到根路径 (/)。

      • 健康协议- 负载平衡器用于向池中实例发送健康检查消息的协议。

      • 运行状况端口 (可选)-用于发送运行状况检查请求的端口。 默认情况下,健康检查在向实例发送流量的同一端口上发送。

      • Interval (sec) (间隔(秒))- 两次连续健康检查尝试之间的间隔(秒)。

      • 超时(秒)- 系统等待健康检查请求响应的最长时间。

      • 最大重试次数-在声明实例运行状况不佳之前,负载均衡器进行的最大运行状况检查尝试次数。 缺省情况下,两次运行状况检查失败后,即不会再认为实例运行状况正常。

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

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

  8. 您可以现在或在创建私有路径 NLB 后将成员附加到后端池。 单击后端池表格行上的“附加”。 指定以下信息,然后单击“附加”。

    • 成员类型:将虚拟服务器实例或应用程序负载平衡器添加为成员。 对于虚拟服务器实例,请单独附加每种类型。

      如果将 ALB 作为成员目标附加到“私有路径”NLB 池,则无法将其他成员添加到该池。

    • 子网: 选择子网。

    • 从服务器列表中,选择要连接到后端池的服务器。 确保为每个服务器端口指定有效值。

      虽然您可以将多个虚拟服务器实例附加到后端池,但“专用路径”负载平衡器可提供区域可用性,即使选择了单一子网,也能抵御区域故障。

    您无需创建多个“专用路径”负载平衡器,也无需指定一个以上的子网来确保区域故障的恢复能力。 子网选择只影响与负载平衡器关联的 IP 地址。 有关可附加到后端池的虚拟服务器实例数量的详细信息,请参阅 Private Path 网络负载平衡器的配额和服务限制

    您可以通过单击后端池表中要编辑的成员行中的编辑图标编辑图标 来编辑附加的成员。 您也可以通过在要删除的成员行中选择减号图标来删除已添加的成员。

  9. 在“前端监听器”部分,点击“创建”,指定以下信息,然后点击“创建”。 可以创建一个或多个侦听器。

    • Default back-end pool(默认后端池 )- 此监听器转发流量的默认后端池。
    • 监听协议- 用于接收传入请求的协议 (TCP )。
    • 监听端口- 接收请求的监听端口。
  10. 查看订单摘要,然后单击“**创建 **”完成订单。

通过 CLI 创建专用路径网络负载平衡器

下面的示例演示了从 CLI 创建私有路径 NLB。 在此示例中,专用路径 NLB 位于运行在端口 9090 上侦听的 TCP 服务器的一个 VPC 虚拟服务器实例 (标识 0716_6acdd058-4607-4463-af08-d4999d983945) 的前面。 负载均衡器具有前端侦听器,允许安全访问 TCP 服务器。

要通过 CLI 创建私有路径 NLB,请按照以下步骤操作:

  1. 设置 CLI 环境

  2. 使用 CLI 登录您的账户。 输入密码后,系统会提示您选择要使用的账户和地区:

    ibmcloud login --sso
    
  3. 创建专用路径 NLB:

    ibmcloud is load-balancer-create ppnlb-test private-path --subnet cli-subnet-1 --family network
    

    样本输出:

    Creating load balancer ppnlb-test in resource group under account IBM Cloud Network Services as user test@ibm.com...
    
     ID
     Name               ppnlb-test
     CRN
     Family             Network
     Host name
     Subnets            ID                                          Name
                                                                    cli-subnet-2
    
     Public IPs
     Reserved IPs         ID                                          Address        Subnet
    
     Provision status   create_pending
     Operating status   offline
     Is public          false
     Is private path    true
     Listeners
     Pools              ID                                 Name
                                                           my-pool
     Resource group     ID                                 Name
                                                           Default
    
     Created            2025-01-10T15:07:53+05:30
     Availability                 region
     Instance Group Supported     false
     SourceIP Session Supported   false
     Security groups supported    false
     UDP Supported                false
     Access mode                  private_path
    
  4. 创建池:

    ibmcloud is load-balancer-pool-create my-pool pp-nlb-test round_robin tcp 20 2 5 http
    

    样本输出:

    Creating pool my-pool of load balancer my-pool under account IBM Cloud Network Services as user test@ibm.com...
    
    ID
    Name                       my-pool
    Protocol                   tcp
    Algorithm                  round_robin
    Instance group             ID   Name
                               -    -
    Proxy protocol        disabled
    Health monitor             Type   Port   Health monitor URL   Delay   Retries   Timeout
                               http   -      /                    20      2         5
    
    Session persistence type   Type   Cookie name
                               -      -
    
    Members
    Provision status           create_pending
    Created                    2025-01-10T20:44:57+05:30
    
  5. 创建成员:

    ibmcloud is load-balancer-pool-member-create test-ppnlb-1 test 3000 my-target
    

    用户可针对虚拟服务器实例或应用程序负载平衡器(ALB)创建 PPNLB。 将 my-target 创建为 my-instancemy-alb

    样本输出:

    Creating member of pool test under account IBM Cloud Network Services as user test@ibm.com...
    
    ID                 test
    Port               3000
    Target             10.240.66.14
    Weight             50
    Health             unknown
    Created            0001-01-01T05:53:28+05:53
    Provision status   create_pending
    
  6. 创建侦听器:

    ibmcloud is load-balancer-listener-create ppnlb-test --port-min 443 --protocol tcp
    

    样本输出:

    Creating listener of load balancer ppnlb-test under account IBM Cloud Network Services as user test@ibm.com...
    
    ID
    Certificate instance      -
    Connection limit          -
    Ports                     443
    Idle connection timeout   -
    Protocol                  tcp
    Default pool              -
    Accept proxy protocol     false
    Provision status          create_pending
    Created                   2025-01-10T21:02:37+05:30
    
  7. 获取有关负载均衡器的详细信息:

    ibmcloud is load-balancer ppnlb-test
    

    样本输出:

    Getting load balancer ppnlb-test under account IBM Cloud Network Services as user test@ibm.com...
    
    ID
    Name               ppnlb-test
    CRN
    Family             Network
    Host name
    Subnets            ID                                          Name
                                                                   nlb
    
    Public IPs
    Reserved IPs       ID                                          Address        Subnet
    Provision status   active
    Operating status   online
    Is public          false
    Is private path    true
    Listeners
    Pools              ID                                          Name
                                                                   my-pool
    
    Resource group     ID                                 Name
                                                          Default
    
    Created                      2025-01-10T15:07:53+05:30
    Availability                 region
    Instance Group Supported     false
    SourceIP Session Supported   false
    Security groups supported    false
    UDP Supported                false
    Access mode                  private_path
    

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

下面的示例说明了如何使用 API 创建私有路径 NLB。 此处详述的 NLB 位于运行在端口 80 上侦听的 Web 应用程序的两个 VPC 虚拟服务器实例 (192.168.100.5192.168.100.6) 前面。 它有一个前端监听器,允许HTTPS 安全访问Web应用程序。

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

要使用 API 创建私有路径 NLB,请按照以下步骤操作:

  1. 设置 API 环境

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

    • subnetId-首先,获取子网,然后填充变量:
    export subnetId=<your_subnet_id>
    
    • targetId- 其次,获取与子网位于同一 VPC 中的虚拟服务器实例或应用程序负载平衡器 (ALB):
    export targetId=<your_target_id>
    
  3. 创建具有监听器、池和附加服务器实例(池成员)的专用路径 NLB:

    curl -H "Authorization: $iam_token" -X POST
    "$vpc_api_endpoint/v1/load_balancers?version=$api_version&generation=2" \
        -d '{
         "is_public": false,
         "is_private_path": true,
         "name": "my-load-balancer",
         "listeners": [
             {
                 "default_pool": {
                     "name": "my-pool"
                 },
                 "port_min": 80,
                 "port_max": 80,
                 "protocol": "tcp"
             }
         ],
         "subnets": [
             {
                 "id" : "$subnetId"
             }
         ],
         "pools": [
             {
                 "algorithm": "round_robin",
                 "health_monitor": {
                     "delay": 2,
                     "max_retries": 1,
                     "timeout": 1,
                     "port": 80,
                     "type": "tcp"
                 },
                 "name": my-pool",
                 "protocol": "tcp",
                 "members" : [
                     {
                         "port" : 80,
                         "target" : {"id" : "$targetId"}
                     }
                 ]
             }
         ],
         "profile": {
             "name": "network-private-path"
         }
     }'
    

    样本输出:

         {
             "availability": "region",
             "created_at": "2023-09-22T21:49:26.000Z",
             "crn": "crn:v1:bluemix:public:is:au-syd:a/b21af5a9874242b7851e780943d595a9::load-balancer:r026-d-86b51a9e-a058-4317-beed-8ee581a1f413",
             "hostname": ".invalid",
             "href": "https://au-syd.iaas.cloud.ibm.com/v1/load_balancers/r026-d-86b51a9e-a058-4317-beed-8ee581a1f413",
             "id": "r026-d-86b51a9e-a058-4317-beed-8ee581a1f413",
             "instance_groups_supported": false,
             "is_private_path": true,
             "is_public": false,
             "listeners": [
                 {
                     "href": "https://au-syd.iaas.cloud.ibm.com/v1/load_balancers/r026-d-86b51a9e-a058-4317-beed-8ee581a1f413/listeners/r026-00b18a00-d860-4f4d-bb84-e29ffc2d8e47",
                     "id": "r026-00b18a00-d860-4f4d-bb84-e29ffc2d8e47"
                 }
             ],
             "logging": {
                 "datapath": {
                     "active": false
                 }
             },
             "name": "my-load-balancer",
             "operating_status": "offline",
             "pools": [
                 {
                     "href": "https://au-syd.iaas.cloud.ibm.com/v1/load_balancers/r026-d-86b51a9e-a058-4317-beed-8ee581a1f413/pools/r026-f25e3f26-3aa6-4aef-9108-1587d3ac6679",
                     "id": "r026-f25e3f26-3aa6-4aef-9108-1587d3ac6679",
                     "name": "my-pool"
                 }
             ],
             "private_ips": [
                 {
                     "address": "10.245.0.4",
                     "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02/reserved_ips/02h7-e21d477e-3e71-47fc-aec4-9703766cf652",
                     "id": "02h7-e21d477e-3e71-47fc-aec4-9703766cf652",
                     "name": "nugget-ounce-stability-vocation",
                     "resource_type": "subnet_reserved_ip"
                 },
                 {
                     "address": "10.245.0.5",
                     "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02/reserved_ips/02h7-1910c529-dadd-4960-aba5-3c4604f99f56",
                     "id": "02h7-1910c529-dadd-4960-aba5-3c4604f99f56",
                     "name": "impostors-synopses-uncivic-livable",
                     "resource_type": "subnet_reserved_ip"
                 },
                 {
                     "address": "10.245.0.6",
                     "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02/reserved_ips/02h7-a7e55150-5b02-426f-b1dc-aa136effc6ce",
                     "id": "02h7-a7e55150-5b02-426f-b1dc-aa136effc6ce",
                     "name": "unmade-garnish-preview-defame",
                     "resource_type": "subnet_reserved_ip"
                 },
                 {
                     "address": "10.245.0.7",
                     "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02/reserved_ips/02h7-ae009701-8301-420c-862e-a9ec1f79214c",
                     "id": "02h7-ae009701-8301-420c-862e-a9ec1f79214c",
                     "name": "slacking-scuttle-stonework-reptile",
                     "resource_type": "subnet_reserved_ip"
                 }
             ],
             "profile": {
                 "family": "network",
                 "href": "https://au-syd.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-private-path",
                 "name": "network-private-path"
             },
             "provisioning_status": "create_pending",
             "public_ips": [],
             "resource_group": {
                 "href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/297468d87ca047c5be28368e52b055ce",
                 "id": "297468d87ca047c5be28368e52b055ce",
                 "name": "Default"
             },
             "resource_type": "load_balancer",
             "route_mode": false,
             "security_groups": [],
             "security_groups_supported": false,
             "source_ip_session_persistence_supported": false,
             "subnets": [
                 {
                     "crn": "crn:v1:bluemix:public:is:au-syd-1:a/b21af5a9874242b7851e780943d595a9::subnet:02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02",
                     "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02",
                     "id": "02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02",
                     "name": "my-subnet",
                     "resource_type": "subnet"
                 }
             ],
             "udp_supported": false
         }
    

    保存要在后续步骤中使用的负载均衡器的标识。 例如,将其保存在变量 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 状态,如以下示例输出所示:

         {
             "availability": "region",
             "created_at": "2023-09-22T21:49:26.000Z",
             "crn": "crn:v1:bluemix:public:is:au-syd:a/b21af5a9874242b7851e780943d595a9::load-balancer:r026-d-86b51a9e-a058-4317-beed-8ee581a1f413",
             "hostname": ".invalid",
             "href": "https://au-syd.iaas.cloud.ibm.com/v1/load_balancers/r026-d-86b51a9e-a058-4317-beed-8ee581a1f413",
             "id": "r026-d-86b51a9e-a058-4317-beed-8ee581a1f413",
             "instance_groups_supported": false,
             "is_private_path": true,
             "is_public": false,
             "listeners": [
                 {
                     "href": "https://au-syd.iaas.cloud.ibm.com/v1/load_balancers/r026-d-86b51a9e-a058-4317-beed-8ee581a1f413/listeners/r026-00b18a00-d860-4f4d-bb84-e29ffc2d8e47",
                     "id": "r026-00b18a00-d860-4f4d-bb84-e29ffc2d8e47"
                 }
             ],
             "logging": {
                 "datapath": {
                     "active": false
                 }
             },
             "name": "my-load-balancer",
             "operating_status": "only",
             "pools": [
                 {
                     "href": "https://au-syd.iaas.cloud.ibm.com/v1/load_balancers/r026-d-86b51a9e-a058-4317-beed-8ee581a1f413/pools/r026-f25e3f26-3aa6-4aef-9108-1587d3ac6679",
                     "id": "r026-f25e3f26-3aa6-4aef-9108-1587d3ac6679",
                     "name": "my-pool"
                 }
             ],
             "private_ips": [
                 {
                     "address": "10.245.0.4",
                     "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02/reserved_ips/02h7-e21d477e-3e71-47fc-aec4-9703766cf652",
                     "id": "02h7-e21d477e-3e71-47fc-aec4-9703766cf652",
                     "name": "nugget-ounce-stability-vocation",
                     "resource_type": "subnet_reserved_ip"
                 },
                 {
                     "address": "10.245.0.5",
                     "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02/reserved_ips/02h7-1910c529-dadd-4960-aba5-3c4604f99f56",
                     "id": "02h7-1910c529-dadd-4960-aba5-3c4604f99f56",
                     "name": "impostors-synopses-uncivic-livable",
                     "resource_type": "subnet_reserved_ip"
                 },
                 {
                     "address": "10.245.0.6",
                     "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02/reserved_ips/02h7-a7e55150-5b02-426f-b1dc-aa136effc6ce",
                     "id": "02h7-a7e55150-5b02-426f-b1dc-aa136effc6ce",
                     "name": "unmade-garnish-preview-defame",
                     "resource_type": "subnet_reserved_ip"
                 },
                 {
                     "address": "10.245.0.7",
                     "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02/reserved_ips/02h7-ae009701-8301-420c-862e-a9ec1f79214c",
                     "id": "02h7-ae009701-8301-420c-862e-a9ec1f79214c",
                     "name": "slacking-scuttle-stonework-reptile",
                     "resource_type": "subnet_reserved_ip"
                 }
             ],
             "profile": {
                 "family": "network",
                 "href": "https://au-syd.iaas.cloud.ibm.com/v1/load_balancer/profiles/network-private-path",
                 "name": "network-private-path"
             },
             "provisioning_status": "active",
             "public_ips": [],
             "resource_group": {
                 "href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/297468d87ca047c5be28368e52b055ce",
                 "id": "297468d87ca047c5be28368e52b055ce",
                 "name": "Default"
             },
             "resource_type": "load_balancer",
             "route_mode": false,
             "security_groups": [],
             "security_groups_supported": false,
             "source_ip_session_persistence_supported": false,
             "subnets": [
                 {
                     "crn": "crn:v1:bluemix:public:is:au-syd-1:a/b21af5a9874242b7851e780943d595a9::subnet:02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02",
                     "href": "https://au-syd.iaas.cloud.ibm.com/v1/subnets/02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02",
                     "id": "02h7-ee9114e7-28d4-4416-bbfa-f274dbd49f02",
                     "name": "my-subnet",
                     "resource_type": "subnet"
                 }
             ],
             "udp_supported": false
         }
    

使用 Terraform 创建专用路径网络负载平衡器

下面的示例使用 Terraform 创建了专用路径网络负载平衡器:

  1. 创建专用路径 NLB:

    resource "ibm_is_lb" "example_ppnlb" {
      name    = "example-ppnlb"
      subnets = [ibm_is_subnet.example_subnet.id]
      profile = "network-private-path"
      type    = "private_path"
    }
    
  2. 可选择为私有路径 NLB 创建一个池:

    resource "ibm_is_lb_pool" "example_pool" {
      name            = "example-pool"
      lb              = [ibm_is_lb.example_ppnlb.id]
      algorithm       = "round_robin"
      protocol        = "tcp"
      health_delay    = 2
      health_retries  = 2
      health_timeout  = 1
      health_type     = "tcp"
    }
    
  3. 可选择将 ALB 或虚拟服务器实例 ID 作为专用路径 NLB 的池成员:

    resource "ibm_is_lb" "example_alb" {
      name    = "example-alb"
      subnets = [ibm_is_subnet.example_subnet.id]
    }
    
    resource "ibm_is_lb_pool_member" "example_member" {
      lb        = [ibm_is_lb.example_ppnlb.id]
      pool      = element(split("/", ibm_is_lb_pool.example_pool.id), 1)
      port      = 8080
      weight    = 20
      target_id = [ibm_is_lb.example_alb.id]
    }
    

有关 Terraform 资源的文档,请参阅 Terraform 注册表