VMware Integrated OpenStack 3.0 或 3.1 支持 LBaaS v2.0。默认情况下,完成 VMware Integrated OpenStack 安装或升级过程后会启用 LBaaS v2.0。
该任务包含创建运行状况监控并将其与包含 LBaaS 服务器实例的 LBaaS 池关联起来。运行状况监控是一种 Neutron 服务,可检查实例是否仍在指定协议端口上运行。
前提条件
注:
VMware Integrated OpenStack 不支持 LBaaS v1.0。
该任务仅适用于使用 NSX 部署的 VMware Integrated OpenStack。
过程
- 使用 SSH 登录到 VMware Integrated OpenStack Manager。
- 切换到 root 用户。
sudo su -
- 启用 LBaaS v2.0。
viocli lbaasv2-enable
选项 说明 -d DEPLOYMENT 表示 VMware Integrated OpenStack 部署的名称。 - 从 VMware Integrated OpenStack Manager,使用 SSH 登录 Neutron 节点。
- 切换到 root 用户。
sudo su -
- 创建独占路由器。
neutron router-create --router_type=exclusive <router name>
- 将子网附加到新路由器。
neutron net-create <network name> neutron subnet-create <network name> <CIDR value> --name <subnet name> neutron router-interface-add <router name or id> <subnet name or id>
- 创建负载平衡器。
此步骤包括创建负载平衡器、创建侦听器和创建负载平衡器池。
- 创建负载平衡器,指定负载平衡 VIP 子网。
neutron lbaas-loadbalancer-create --name LOAD_BALANCER_1_NAME <vip-subnet-id>
参数 说明 name 提供新负载平衡器的名称。
vip-subnet-id 指定新负载平衡器的 VIP 子网。只有该子网中的成员可以添加到池中。
- 为新负载平衡器创建侦听器。
neutron lbaas-listener-create \ --loadbalancer LOAD_BALANCER_1_NAME \ --protocol <protocol type> \ --protocol-port <protocol port> --name LISTENER_1_NAME
参数 说明 loadbalancer 指定您在上述子步骤中创建的负载平衡器。
protocol type 指定侦听器的协议类型。- TCP
- HTTP
- HTTPS
protocol port 指定协议端口。
name 提供新侦听器的名称。
- 创建 LBaaS 池。
neutron lbaas-pool-create \ --lb-algorithm <load balancing method> \ --listener LISTENER_1_NAME \ --protocol <protocol type> \ --name LB_POOL_1
参数 说明 lb-algorithm 指定负载平衡方法:- IP_HASH
根据每个数据包的源和目标 IP 地址哈希选择服务器。
- LEAST_CONN
根据服务器上现有连接数量将客户端请求分发给多个服务器。新连接将发送至连接最少的服务器。
- ROUND_ROBIN
根据每个服务器分配到的权重,依次使用各服务器。当服务器的处理时间保持均匀分布时,此过程是最顺畅、最公平的算法。
- URI
URI 左侧部分(问号前面)由运行中的服务器的总权重进行哈希和除法计算。结果指定接收请求的服务器,确保只要所有服务器均可用,请求始终定向至相同的服务器。
listener 指定您在上述子步骤中创建的侦听器。
protocol 为要使用的池成员指定协议。- TCP
- HTTP
- HTTPS
name 提供新池的名称。
- IP_HASH
- 创建负载平衡器,指定负载平衡 VIP 子网。
- 为服务器和客户端创建实例。
nova boot --image <image-uuid> --flavor <flavor> <server 1 name> nova boot --image <image-uuid> --flavor <flavor> <server 2 name> nova boot --image <image-uuid> --flavor 1 <client name>
- 将服务器实例添加到创建的 LBaaS 池中。
neutron lbaas-member-create \ --subnet <subnet-id> --address <server 1 IP> \ --protocol-port 80 <pool name> neutron lbaas-member-create \ --subnet <subnet-id> --address <server 2 IP> \ --protocol-port 80 <pool name>
- 设置运行状况监控。
neutron lbaas-healthmonitor-create \ --delay DELAY_IN_SECONDS --type [HTTP | TCP] --max-retries NUMBER \ --timeout TIMEOUT_IN_SECONDS --pool LBAAS_POOL
参数 说明 delay 将探查发送给成员的时间(以秒为单位)。
type 预定义的运行状况监控类型之一。指定 HTTP 或 TCP。
max-retries 成员状态更改为“非活动”之前的连接失败次数。
timeout 监控在超时之前等待建立连接的最大秒数。注: 超时值必须小于延迟值。pool 指定要监控的 LBaaS 池。
- (可选) 发送测试请求以验证 LBaaS 配置。
- 创建测试 index.html 文件。
- 从相同的目录,运行简单的请求。
# sudo python -m SimpleHTTPServer 80
- 登录到客户端实例。
- 运行 wget 命令,查看请求是否已在池中的两个服务器之间正确进行负载平衡。
# wget -O - http://<vip-ip>