在 Contrail 网络中安装 OpenStack Octavia LBaaS 和 RHOSP
Contrail 网络 2005 版支持 Octavia 作为 LBaaS。该部署支持 RHOSP 和 Juju 平台。
以 Octavia 作为 LBaaS,Contrail 网络只需保持网络连接,不参与任何负载均衡功能。
每次创建 OpenStack 负载均衡器时,Octavia 都会启动一个名为 amphora VM 的 VM。在 OpenStack 中为负载均衡器创建侦听器时,虚拟机会启动 HAPROXY。每当负载均衡器在 OpenStack 中更新时, 双耳瓶虚拟机 都会更新正在运行的 HAPROXY 配置。 双耳瓶 VM 会在删除负载均衡器时被删除。
Contrail 网络提供与 双耳瓶虚拟机 接口的连接。 安芙拉虚拟机 有两个接口;一个用于管理,另一个用于数据。明锐服务使用管理接口进行管理通信。由于 Octavia 服务在底层网络中运行, 而 Amphora VM 在叠加网络中运行,因此需要 SDN 网关才能到达叠加网络。数据接口用于负载平衡。
按照以下过程安装 OpenStack Octavia LBaaS 和 Contrail 网络:
下面是创建和测试负载均衡器的示例:
先决条件:
明锐控制器和双耳瓶实例之间必须建立连接,
您必须将 OpenStack 服务放入 LXD 容器中。
控制平面和数据平面必须具有单独的接口。
创建专用网络。
openstack network create private openstack subnet create private --network private --subnet-range 10.10.10.0/24 --allocation-pool start=10.10.10.50,end=10.10.10.70 --gateway none
创建安全组。
openstack security group create allow_all openstack security group rule create --ingress --protocol any --prefix '0.0.0.0/0' allow_all
检查可用的口味和图像。如果需要,您可以创建它们。
openstack flavor list openstack image list
为负载均衡器创建两个服务器。
openstack server create --flavor test_flavor --image cirros --security-group allow_all --network private cirros1 openstack server create --flavor test_flavor --image cirros --security-group allow_all --network private cirros2
创建其他服务器以测试负载均衡器。
openstack server create --flavor test_flavor --image cirros --security-group allow_all --network private cirros-test
检查状态和 IP 地址。
openstack server list --long
在每个卷轴上创建简单的HTTP服务器。登录两个 cirros 实例并运行以下命令:
MYIP=$(ifconfig eth0|grep 'inet addr'|awk -F: '{print $2}'| awk '{print $1}') while true; do echo -e "HTTP/1.0 200 OK\r\n\r\nWelcome to $MYIP" | sudo nc -l -p 80 ; done&
创建负载均衡器
openstack loadbalancer create --name lb1 --vip-subnet-id private
确保 provisioning_status 处于 活动状态。
openstack loadbalancer show lb1
设置负载均衡器
openstack loadbalancer listener create --protocol HTTP --protocol-port 80 --name listener1 lb1 openstack loadbalancer show lb1 # Wait for the provisioning_status to be ACTIVE. openstack loadbalancer pool create --lb-algorithm ROUND_ROBIN --listener listener1 --protocol HTTP --name pool1 openstack loadbalancer healthmonitor create --delay 5 --timeout 2 --max-retries 1 --type HTTP pool1 openstack loadbalancer member create --subnet-id private --address 10.10.10.50 --protocol-port 80 pool1 openstack loadbalancer member create --subnet-id private --address 10.10.10.51 --protocol-port 80 pool1
IP 地址 10.10.10.50 和 10.10.10.51 属于在步骤 7 中使用测试 http 服务器创建的 VM。
检查负载均衡器的状态。
openstack loadbalancer show lb1 # Wait for the provisioning_status to be ACTIVE. openstack loadbalancer pool list openstack loadbalancer pool show pool1 openstack loadbalancer member list pool1 openstack loadbalancer listener list
登录到负载均衡器客户端并验证轮循机制是否有效。
cirros@169.x.0.9's password: $ curl 10.10.10.50 Welcome to 10.10.10.52 $ curl 10.10.10.50 Welcome to 10.10.10.53 $ curl 10.10.10.50 Welcome to 10.10.10.52 $ curl 10.10.10.50 Welcome to 10.10.10.53 $ curl 10.10.10.50 Welcome to 10.10.10.52 $ curl 10.10.10.50 Welcome to 10.10.10.53