在 Contrail 网络中安装 OpenStack Octavia LBaaS 和 Juju Charms
Contrail 网络 2005 版支持 Octavia 作为 LBaaS。该部署支持 RHOSP 和 Juju 平台。
以 Octavia 作为 LBaaS,Contrail 网络只需保持网络连接,不参与任何负载均衡功能。
每次创建 OpenStack 负载均衡器时,Octavia 都会启动一个名为 amphora VM 的 VM。在 OpenStack 中为负载均衡器创建侦听器时,虚拟机会启动 HAPROXY。每当负载均衡器在 OpenStack 中更新时, 双耳瓶虚拟机 都会更新正在运行的 HAPROXY 配置。 双耳瓶 VM 会在删除负载均衡器时被删除。
Contrail 网络提供与 双耳瓶虚拟机 接口的连接。 安芙拉虚拟机 有两个接口;一个用于管理,另一个用于数据。明锐服务使用管理接口进行管理通信。由于 Octavia 服务在底层网络中运行, 而 Amphora VM 在叠加网络中运行,因此需要 SDN 网关才能到达叠加网络。数据接口用于负载平衡。
按照以下过程在 Canonical 部署中安装 OpenStack Octavia LBaaS:
如果要在 DPDK 计算上运行 amphora 实例,则必须使用所需选项创建自己的风格,并在调用配置资源之前,通过 自定义 amp-flavor-id 选项将 ID 设置为 Octavia 超级按钮的配置。 或将所需的选项设置为创建名称为“魅力- 八度 ”的风格
openstack flavor set charm-octavia --property hw:mem_page_size=any
下面是创建和测试负载均衡器的示例:
先决条件:
明锐控制器和双耳瓶实例之间必须建立连接,
您必须将 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
登录到负载均衡器客户端并验证轮循机制是否有效。
ubuntu@comp-1:~$ ssh cirros@169.x.0.9 The authenticity of host '169.x.0.9 (169.x.0.9)' can't be established. RSA key fingerprint is SHA256:jv0qgZkorxxxxxxxmykOSVQV3fFl0. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '169.x.0.9' (RSA) to the list of known hosts. 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
示例 octavia-bundle.yaml 文件
# Loadbalancer (LBAASv2) with Octavia - requires Rocky or later
---
applications:
barbican:
charm: cs:barbican
num_units: 1
options:
openstack-origin: cloud:bionic-train
to:
- lxd:4
barbican-vault:
charm: cs:barbican-vault-12
octavia:
series: bionic
charm: cs:~apavlov-e/octavia
num_units: 1
options:
openstack-origin: cloud:bionic-train
create-mgmt-network: false
to:
- lxd:4
octavia-dashboard:
charm: cs:octavia-dashboard
vault:
charm: cs:vault
num_units: 1
to:
- lxd:4
glance-simplestreams-sync:
charm: cs:glance-simplestreams-sync
num_units: 1
options:
source: ppa:simplestreams-dev/trunk
use_swift: false
to:
- lxd:4
octavia-diskimage-retrofit:
charm: cs:octavia-diskimage-retrofit
options:
amp-image-tag: 'octavia-amphora'
retrofit-uca-pocket: train
relations:
- - mysql:shared-db
- octavia:shared-db
- - mysql:shared-db
- barbican:shared-db
- - mysql:shared-db
- vault:shared-db
- - keystone:identity-service
- octavia:identity-service
- - keystone:identity-service
- barbican:identity-service
- - rabbitmq-server:amqp
- octavia:amqp
- - rabbitmq-server:amqp
- barbican:amqp
- - neutron-api:neutron-load-balancer
- octavia:neutron-api
- - openstack-dashboard:dashboard-plugin
- octavia-dashboard:dashboard
- - barbican-vault:secrets
- barbican:secrets
- - vault:secrets
- barbican-vault:secrets-storage
- - glance-simplestreams-sync:juju-info
- octavia-diskimage-retrofit:juju-info
- - keystone:identity-service
- glance-simplestreams-sync:identity-service
- - rabbitmq-server:amqp
- glance-simplestreams-sync:amqp
- - keystone:identity-credentials
- octavia-diskimage-retrofit:identity-credentials
- - contrail-openstack
- octavia