跳转到: 导航, 搜索

Neutron/LBaaS/HowToRun

< Neutron‎ | LBaaS(重定向自 Quantum/LBaaS/HowToRun)
Warning icon.svg 警告 - 已弃用

从 Queens OpenStack 版本开始,neutron-lbaas 和 neutron-lbaas-dashboard 已被弃用。请参阅 Neutron/LBaaS/Deprecation

获取代码

LBaaS 引入了对以下模块的更改:(目前所有更改都在 master 分支中)

  • neutron
  • python-neutronclient
  • horizon
  • devstack

Devstack 设置

将以下行添加到您的 localrc

enable_plugin neutron-lbaas https://github.com/openstack/neutron-lbaas.git
enable_plugin octavia https://github.com/openstack/octavia.git
ENABLED_SERVICES+=,q-lbaasv2
ENABLED_SERVICES+=,octavia,o-cw,o-hk,o-hm,o-api

然后运行 stack.sh

stack.sh 完成后,您将能够通过 CLI 工具和 Horizon 管理您的负载均衡器

Ubuntu 软件包设置

使用您喜欢的发行版安装 octavia

pip install octavia 

并编辑 neutron.conf 中 [DEFAULT] 部分的 service_plugins 以启用该服务

sudo sed -i.bak "s/\#\ service_plugins\ \=/service_plugins = neutron.plugins.services.agent_loadbalancer.plugin.LoadBalancerPluginv2/g" /etc/neutron/neutron.conf
最后,通过编辑来启用 Horizon 中的负载均衡器部分
/etc/openstack-dashboard/local_settings.py
并更改
OPENSTACK_NEUTRON_NETWORK = {
    'enable_lb': False
}

to

OPENSTACK_NEUTRON_NETWORK = {
    'enable_lb': True
}

完成后,重新启动 Neutron 服务和 Apache 即可开始使用。

拓扑设置

启动三个虚拟机,两个作为服务器,一个作为客户端。

nova boot --image <image-uuid> --flavor 1 server1
nova boot --image <image-uuid> --flavor 1 server2
nova boot --image <image-uuid> --flavor 1 client

获取私有子网的 UUID。

neutron subnet-list

创建负载均衡器

neutron lbaas-loadbalancer-create --name lb1 private-subnet

创建监听器

neutron lbaas-listener-create --loadbalancer lb1 --protocol HTTP --protocol-port 80 --name listener1

创建池

neutron lbaas-pool-create --lb-algorithm ROUND_ROBIN --listener listener1 --protocol HTTP --name pool1 

创建成员(使用 server1 和 server2 的 IP)

neutron lbaas-member-create  --subnet private-subnet --address <server1-ip> --protocol-port 80 pool1
neutron lbaas-member-create  --subnet private-subnet --address <server2-ip> --protocol-port 80 pool1

创建健康监视器并将其与池关联

neutron lbaas-healthmonitor-create --delay 3 --type HTTP --max-retries 3 --timeout 3 --pool pool1

记下地址以备后用。

验证

我们现在有两个指向负载均衡器的主机,但这些主机没有提供任何 HTTP 内容。

一个简单的技巧是在主机上使用 netcat 来实现一个简单的网络服务器。例如,运行

while true; do echo -e 'HTTP/1.0 200 OK\r\nContent-Length: 8\r\n\r\n<servername>' | sudo nc -l -p 80 ; done 

将 <servername> 替换为 "server1" 和 "server2"。服务器启动后,您将看到传入的 HTTP GET 请求......这就是负载均衡器健康检查的作用!

如果安装了 python,您还可以创建一个包含文本 "server1" 或 "server2" 的 index.html,然后在同一目录下运行

sudo python -m SimpleHTTPServer 80

最后,要测试真实的负载均衡,请从客户端使用 wget 确保您的请求按预期在 server1 和 server2 之间进行负载均衡。

wget -O - http://<server1-ip> 
wget -O - http://<server2-ip> 

然后使用 wget 连续多次访问负载均衡器 IP (VIP IP)。您应该会在看到 server1 和 server2 之间切换。

wget -O - http://<vip-ip> 
wget -O - http://<vip-ip> 
wget -O - http://<vip-ip> 
wget -O - http://<vip-ip> 

如果您在 curl vip-ip 时遇到一些问题,可以尝试以下方法

sudo ip netns list
qdhcp-xxx
qrouter-xxx
sudo ip netns exec qrouter-xxx curl -v <vip-ip> 

LBaaS CLI 命令的完整列表可在 Quantum/LBaaS/CLI 获得

故障排除

LBaaS 的实现类似于使用命名空间的 L3 + DHCP。您可以使用 "ip netns list" 找到名为 qlbaas-<pool_id> 的命名空间,然后从该命名空间测试连接性。

使用 "screen -x stack" 查看 q-svc、q-lbaas、o-cw、o-api 选项卡以查找错误。

在 syslog 中 grep "Octavia" 以查看来自 Octavia 的消息(尽管它们非常隐晦!)