创建公用或专用网络负载均衡器
您可以使用控制台、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)”磁贴。
-
对于“位置”,根据需要编辑以下字段。
- 地理位置-指示要在其中创建负载均衡器的地理位置。
- 区域-指示要在其中创建负载均衡器的区域。
-
如需了解详情,请填写以下信息:
-
名称- 输入负载均衡器的名称,例如
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。 默认情况下,健康检查请求会发送到根路径(/)。
- 健康检查协议 ——负载均衡器用于向池中的实例发送健康检查消息的协议。
- 健康检查端口- 负载均衡器用于发送健康检查请求的端口。 默认情况下,健康检查会通过与实例接收流量相同的端口发送。
- 间隔- 两次连续健康检查尝试之间的间隔(以秒为单位)。 默认情况下,健康检查每 5 秒发送一次。
- 超时(秒) ——系统等待健康检查请求响应的最长时间。 默认情况下,负载均衡器会等待 2 秒以获取响应。
- 最大重试次数-在声明实例运行状况不佳之前,负载均衡器进行的最大运行状况检查尝试次数。 缺省情况下,两次运行状况检查失败后,即不会再认为实例运行状况正常。
您可以在创建后端池后连接服务器实例。
-
-
您也可以为现有的任何池创建备份。 这样,在成员发生故障时,备用池可以管理流量。 为此,必须创建故障安全策略:
您的负载均衡器必须至少有一个池,才能分配备用池。
- 负载均衡器的状态变为 “活动” 后,选择 “后端池”选项卡。
- 在泳池列表页面中,点击“编辑”,然后指定以下信息:
- 操作:选择前进以创建备份池。 这样,目标部分就激活了。
- 目标:从兼容池列表中选择一个池来创建您的备份池。
对于网络负载均衡器,如果池已连接到侦听器,则无法将其指定为备份池。 此外,听众不能连接到备用池。
尽管负载均衡器会停止将连接发送给状态异常的实例,但它仍会持续监控这些实例的状态,并在检测到它们恢复正常(即连续通过两次健康检查)时恢复使用它们。
如果池中的实例状态异常,而您认为应用程序运行正常,请仔细检查健康检查协议和健康检查路径的设置。 此外,请检查附加到实例上的所有安全组,以确保规则允许负载均衡器与实例之间的流量。
-
点击“创建监听器”,并填写以下信息:
- 默认后端池 ——此监听器将流量转发到的默认后端池。
- 协议- 用于接收传入请求的协议。
- 监听端口- 用于接收请求的端口。 选项包括:
- 单个侦听器端口-负载均衡器接收入站客户流量的端口。
- 侦听器端口范围-负载均衡器接收入站客户流量的端口范围。
然后,单击创建。 可以创建一个或多个侦听器。
-
对于安全组,请选择要附加到负载均衡器的安全组,或者单击 创建 以创建要附加到 NLB 的新安全组。
确保安全组允许负载均衡流量 (侦听器,目标和运行状况检查端口)。 如果未指定安全组,那么将改为连接 VPC 中的缺省安全组。
-
单击 添加到估算 以查看负载均衡器的定价并创建该定价。
从 CLI 创建网络负载均衡器
以下示例说明了如何使用 CLI 创建 Network Load Balancer for VPC (NLB)。 在本例中,它位于运行 TCP 服务器的一个 VPC 虚拟服务器实例(ID 0716_6acdd058-4607-4463-af08-d4999d983945 )前面,该服务器通过 9090 端口监听。 负载平衡器有一个前端监听器,允许安全访问 TCP 服务器。
要使用 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 安全地访问 Web 应用程序。
此示例跳过使用 API 来供应 VPC,子网和实例的 先决条件步骤。
要使用 API 创建网络负载均衡器,请执行以下步骤:
-
设置 API 环境。
-
将以下值存储在要在 API 命令中使用的变量中。
ResourceGroupId-首先获取资源组,然后填充变量。
export ResourceGroupId=<your_resourcegroup_id> -
创建一个包含监听器、连接池和已关联服务器实例(连接池成员)的负载均衡器。
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" } ] }'样本输出:
{ "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: Bearer $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" } ]