创建公用或专用网络负载均衡器
您可以使用控制台、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 控制台中创建和配置网络负载均衡器,请执行以下步骤:
-
从浏览器打开 IBM Cloud 控制台并登录账户。
-
选择导航菜单
,然后单击基础架构
> 网络 > 负载平衡器。
-
单击页面右上角的 创建 +。
-
对于负载均衡器类型,选择“网络负载均衡器 (NLB)”磁贴。
-
对于“位置”,根据需要编辑以下字段。
- 地理位置-指示要在其中创建负载均衡器的地理位置。
- 区域-指示要在其中创建负载均衡器的区域。
-
有关详细信息,请填写以下信息:
-
Name- 输入负载平衡器的名称,如
my-load-balancer
。 -
资源组- 为负载平衡器选择一个资源组。
-
标签-(可选)添加标签,帮助您组织和查找资源。 以后可以添加更多标记。 有关更多信息,请参阅使用标记。
-
访问管理标记-(可选) 向资源添加访问管理标记以帮助组织访问控制关系。 访问管理标记唯一受支持的格式为
key:value
。 有关更多信息,请参阅 使用标记控制对资源的访问。 -
虚拟私有云- 选择您的 VPC。
-
对于类型。选择 公用 或 专用。
仅适用于专用类型,您可以启用路由方式,此方式用于部署高可用性虚拟网络功能 (VNF)。 有关用例和端到端指示信息,请参阅 关于 HA 虚拟网络功能部署。
-
对于 DNS 类型,请选择 公用 或 专用。 专用 DNS 区域只能在 IBM Cloud 上解析,而且只能从账户中明确允许的网络或跨账户访问。
仅适用于专用类型,单击 绑定 + 以输入 DNS 实例和区域信息,然后单击 绑定。
-
选择创建负载平衡器的子网。 要最大限度提高应用程序的可用性,请选择不同专区中的子网。
-
-
对于后端池,单击创建池并指定以下信息以创建后端池。 完成后,单击创建。
可以创建一个或多个池。
-
为池键入一个名称,如
my-pool
。 -
为此池中的实例选择协议。 池的协议必须与其关联侦听器的协议相匹配。 例如,如果监听器是 TCP,则池的协议必须是 TCP。 或者,如果侦听器是 UDP,那么池的协议也必须是 UDP。
-
选择会话粘性,然后选择 无 或 源 IP。 如果选择 源 IP,那么会将会话期间的所有请求发送到同一实例。
-
选择方法,即负载均衡算法。 显示以下选项:
- 循环- 将请求依次转发给每个实例。 所有实例收到的客户机连接数大致相等。
- 加权循环- 按照分配给每个实例的权重比例将请求转发给每个实例。 例如,如果有实例 A、B 和 C,它们的权重分别设置为 60、60 和 30,那么实例 A 和 B 得到的连接数相等,实例 C 得到的连接数是它们的一半。
- 最少连接数- 将请求转发给当前连接数最少的实例。
-
对于运行状况检查,将显示以下选项:
- 健康检查路径- 仅当您选择 HTTP 作为健康检查协议时,健康检查路径才适用。 健康检查路径指定负载平衡器用于向池中实例发送 HTTP 健康检查请求的 URL。 默认情况下,健康检查会发送到根路径 (/)。
- 健康协议- 负载平衡器用于向池中实例发送健康检查消息的协议。
- 健康端口- 负载平衡器发送健康检查请求的端口。 默认情况下,健康检查在向实例发送流量的同一端口上发送。
- Interval (间隔 )- 两次连续健康检查尝试之间的间隔(以秒为单位)。 默认情况下,健康检查每 5 秒发送一次。
- 超时(秒)- 系统等待健康检查请求响应的最长时间。 默认情况下,负载平衡器等待响应的时间为 2 秒。
- 最大重试次数-在声明实例运行状况不佳之前,负载均衡器进行的最大运行状况检查尝试次数。 缺省情况下,两次运行状况检查失败后,即不会再认为实例运行状况正常。
您可以在创建后端池后附加服务器实例。
-
-
您也可以为现有的任何池创建备份。 这样,在成员发生故障时,备用池可以管理流量。 为此,您需要制定一个故障安全策略:
您的负载均衡器必须至少有一个池,才能分配备用池。
- 负载均衡器的状态变为 “活动” 后,选择 “后端池”选项卡。
- 在泳池列表页面中,点击“编辑”,然后指定以下信息:
- 操作:选择前进以创建备份池。 这样,目标部分就激活了。
- 目标:从兼容池列表中选择一个池来创建您的备份池。
对于网络负载均衡器,如果池已连接到侦听器,则无法将其指定为备份池。 此外,听众不能连接到备用池。
虽然负载平衡器会停止向不健康的实例发送连接,但负载平衡器会继续监控这些实例的健康状况,如果发现它们再次恢复健康(也就是说,如果它们连续两次成功通过健康检查尝试),就会恢复它们的使用。
如果池中的实例不健康,而您认为应用程序运行正常,请仔细检查健康协议和健康路径值。 此外,检查附加到实例的任何安全组,确保规则允许负载平衡器和实例之间的流量。
-
单击创建监听器并指定以下信息:
- Default back-end pool(默认后端池 )- 此监听器转发流量的默认后端池。
- 协议- 接收传入请求时使用的协议。
- 监听端口- 接收请求的监听端口。 选项包括:
- 单个侦听器端口-负载均衡器接收入站客户流量的端口。
- 侦听器端口范围-负载均衡器接收入站客户流量的端口范围。
然后,单击创建。 可以创建一个或多个侦听器。
-
对于安全组,请选择要附加到负载均衡器的安全组,或者单击 创建 以创建要附加到 NLB 的新安全组。
确保安全组允许负载均衡流量 (侦听器,目标和运行状况检查端口)。 如果未指定安全组,那么将改为连接 VPC 中的缺省安全组。
-
单击 添加到估算 以查看负载均衡器的定价并创建该定价。
从 CLI 创建网络负载均衡器
以下示例说明了如何使用 CLI 创建 Network Load Balancer for VPC (NLB)。 在此示例中,它位于运行在端口 9090
上侦听的 TCP 服务器的一个 VPC 虚拟服务器实例 (标识 0716_6acdd058-4607-4463-af08-d4999d983945
) 的前面。 负载均衡器具有前端侦听器,允许安全访问 TCP 服务器。
要使用 CLI 创建网络负载均衡器,请执行以下步骤:
-
设置 CLI 环境。
-
从 CLI 登录您的账户。 输入密码后,系统会提示您要使用的帐户和区域。
ibmcloud login --sso
-
创建负载均衡器。
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
-
创建一个池。
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
-
创建成员。
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
-
创建侦听器。
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
-
获取有关负载均衡器的详细信息。
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.5
和 192.168.100.6
) 之前创建网络负载均衡器。 负载平衡器有一个前端监听器,可通过 HTTPS 安全访问网络应用程序。
此示例跳过使用 API 来供应 VPC,子网和实例的 先决条件步骤。
要使用 API 创建网络负载均衡器,请执行以下步骤:
-
设置 API 环境。
-
将以下值存储在要在 API 命令中使用的变量中。
ResourceGroupId
-首先获取资源组,然后填充变量。
export ResourceGroupId=<your_resourcegroup_id>
-
创建一个带有监听器、池和附加服务器实例(池成员)的负载平衡器。
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
-
获取有关负载均衡器的详细信息。
curl -H "Authorization: $iam_token" -X GET "$vpc_api_endpoint/v1/load_balancers/$lbid?version=$api_version&generation=2"
请留出一些时间等待供应。 当负载平衡器准备就绪时,它会被设置为
online
和active
状态,如以下示例输出所示:{ "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" } ]