8.2. 创建使用浮动 IP 的 HTTP 负载均衡器
要管理非安全 HTTP 应用程序的网络流量,请创建一个依赖于浮动 IP 的虚拟 IP (VIP)的负载均衡器。使用浮动 IP 的优点是您保留对分配的 IP 的控制,如果您需要移动、销毁或重新创建负载均衡器,这是必要的。最佳实践是创建运行状况监视器,以确保您的后端成员仍然可用。
浮动 IP 不适用于 IPv6 网络。
先决条件
- 包含在 TCP 端口 80 上托管非安全 HTTP 应用程序的后端服务器的专用子网。
-
后端服务器配置了 URL 路径
/的健康检查。 - 用于负载均衡器 VIP 的浮动 IP。
- 可以从互联网访问的 Red Hat OpenStack Platform Networking 服务(neutron)共享外部(public)子网,用于浮动 IP。
流程
提供您的凭据文件。
示例
$ source ~/overcloudrc在专用子网(
private_subnet)上创建负载平衡器(lb1)。注意括号内的值是此流程中示例命令中使用的示例值。将这些示例值替换为适合您的站点的值。
示例
$ openstack loadbalancer create --name lb1 --vip-subnet-id private_subnet-
请注意
load_balancer_vip_port_id的值,因为您必须在后续步骤中提供它。 验证负载平衡器的状态。
示例
$ openstack loadbalancer show lb1-
在继续下一步之前,请确保
provisioning_status为ACTIVE。 在端口 (
80) 上创建一个监听器 (listener1)。示例
$ openstack loadbalancer listener create --name listener1 --protocol HTTP --protocol-port 80 lb1创建监听器默认池(
pool1)。示例
$ openstack loadbalancer pool create --name pool1 --lb-algorithm ROUND_ROBIN --listener listener1 --protocol HTTP在连接到后端服务器的池(
pool1)上创建运行状况监控器,并测试路径(/)。示例
$ openstack loadbalancer healthmonitor create --delay 15 --max-retries 4 --timeout 10 --type HTTP --url-path / pool1将专用子网上的负载均衡器成员(
192.0.2.10和192.0.2.11)添加到默认池。示例
$ openstack loadbalancer member create --subnet-id private_subnet --address 192.0.2.10 --protocol-port 80 pool1 $ openstack loadbalancer member create --subnet-id private_subnet --address 192.0.2.11 --protocol-port 80 pool1在共享外部子网(
公共)上创建浮动 IP 地址。示例
$ openstack floating ip create public-
注意
floating_ip_address的值,因为您必须在后续步骤中提供它。 将此浮动 IP (
203.0.113.0)与负载均衡器vip_port_id(69a85edd-5b1c-458f-96f2-b4552b15b8e6)关联。示例
$ openstack floating ip set --port 69a85edd-5b1c-458f-96f2-b4552b15b8e6 203.0.113.0
验证
使用浮动 IP (
203.0.113.0)验证负载均衡器的 HTTP 流量流。示例
$ curl -v http://203.0.113.0 --insecure输出示例
* About to connect() to 203.0.113.0 port 80 (#0) * Trying 203.0.113.0... * Connected to 203.0.113.0 (203.0.113.0) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.29.0 > Host: 203.0.113.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 30 < * Connection #0 to host 203.0.113.0 left intact当存在运行状况监控器并正常运行时,您可以检查每个成员的状态。
一个工作成员 (
b85c807e-4d7c-4cbd-b725-5e8afddf80d2) 的operating_status有一个ONLINE值。示例
$ openstack loadbalancer member show pool1 b85c807e-4d7c-4cbd-b725-5e8afddf80d2输出示例
+---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | address | 192.0.02.10 | | admin_state_up | True | | created_at | 2022-01-15T11:11:23 | | id | b85c807e-4d7c-4cbd-b725-5e8afddf80d2 | | name | | | operating_status | ONLINE | | project_id | dda678ca5b1241e7ad7bf7eb211a2fd7 | | protocol_port | 80 | | provisioning_status | ACTIVE | | subnet_id | 5bd7334b-49b3-4849-b3a2-b0b83852dba1 | | updated_at | 2022-01-15T11:28:42 | | weight | 1 | | monitor_port | None | | monitor_address | None | | backup | False | +---------------------+--------------------------------------+