LBaaS
OpenStack 最初的目标是做 x86 平台下的开源 IaaS 云,但它目前也有了类似于 LBaaS (Load Balance as a Service)这样本属于 SaaS 的特性。
LbaaS 服务可以为一个 tenant 下的多台虚机提供负载均衡服务,要点如下:
- 提供负载均衡的虚机之间组成一个服务组
- 虚机之间提供心跳检查
- 外部通过 VIP 来访问 LB 服务组提供的服务,动态地将 VIP 根据负载均衡策略绑定到具体提供服务虚机的 fixed ip 上
下图 3 显示了 LBaaS 应用的几种情形:
图 3. LBaaS 的应用场景
说明如下:
- 有两个虚机 192.168.0.3 和 192.168.0.1 组成负载均衡池,它们之间做心跳(采用了NAT)
- 如果这个 LB 服务只用在内网,可以只为虚机提供一个内部的 vip,如 192.168.0.4
- 如果这个 LB 服务也需要从外部访问,那么这个 vip 可以做成 floating ip,如 10.1.1.10
所以实现上述 LB 服务的 neutron 命令如下:
清单 1. 实现例子 LB 服务的 neutron 命令
neurton lb-pool-create --lb-method ROUND_ROBIN --name mypool --protocol HTTP --subnet-id <subnet-id>
neurton lb-member-create --address 192.168.0.3 --protocol-port 80 mypool
neurton lb-member-create --address 192.168.0.1 --protocol-port 80 mypool
neurton lb-healthmonitor-create --delay 3 --type HTTP --max-retries 3 --timeout 3
neurton lb-healthmonitor-associate <lb-healthomonitor-id> mypool
neurton lb-vip-create --name myvip --protocol-port 80 --protocol HTTP --subnet-id <subnet-id> mypool
neurton lb-vip-create --name myvip --protocol-port 80 --protocol HTTP --subnet-id <subnet-id> mypool
neurton floatingip-create public
neurton floatingip-associate <floating-ip-id> <lb-vip-port-id>
http://www.cnblogs.com/feisky/p/3857885.html
Neutron LbaaS的应用场景及实现要点
NeutronLbaaS实现了下列应用场景:
VIP可以设置在router上
VIP也可以不设置在router上
所以在下图的实现中,要特别注意防火墙规则保证sgdefault名空间能访问sgweb名空间,即应该让VIP用的port和网关port关联,也和提供LB的虚机所用的TAP关联起来。
防火墙的流程,我分析应该如下:
1)组成LB服务的虚机所在的计算节点上应为虚机nova-compute-haproxy-instance生成它自己的nova-compute-local防火墙规则:
-A nova-compute-local -d 10.0.0.8/32 -jnova-compute-haproxy-instance
-A nova-compute-haproxy-instance -s 10.0.0.0/24-j ACCEPT
-A nova-compute-haproxy-instance -s 10.0.0.1/32-p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A nova-compute-haproxy-instance -jnova-compute-sg-fallback
-A nova-compute-sg-fallback -j DROP
同时,它也应该有一条默认路由让vip的port(位于sgweb名空间)能访问它所在的网关
route add default gw 10.0.0.1
2)L3-agent的下列防火墙规则能保证l3-agent上的vip可以访问LB池中的其他虚机。
-A nova-network-POSTROUTING -s 10.0.0.0/8 -d10.0.0.0/8 -m conntrack ! --ctstate DNAT -j ACCEPT
neurton lb-pool-create --lb-method ROUND_ROBIN --name mypool --protocol HTTP --subnet-id <subnet-id> neurton lb-member-create --address 192.168.0.3 --protocol-port 80 mypool neurton lb-member-create --address 192.168.0.1 --protocol-port 80 mypool neurton lb-healthmonitor-create --delay 3 --type HTTP --max-retries 3 --timeout 3 neurton lb-healthmonitor-associate <lb-healthomonitor-id> mypool neurton lb-vip-create --name myvip --protocol-port 80 --protocol HTTP --subnet-id <subnet-id> mypool neurton lb-vip-create --name myvip --protocol-port 80 --protocol HTTP --subnet-id <subnet-id> mypool neurton floatingip-create public neurton floatingip-associate <floating-ip-id> <lb-vip-port-id>
http://www.cnblogs.com/feisky/p/3857885.html
Neutron LbaaS的应用场景及实现要点
NeutronLbaaS实现了下列应用场景:
VIP可以设置在router上
VIP也可以不设置在router上
所以在下图的实现中,要特别注意防火墙规则保证sgdefault名空间能访问sgweb名空间,即应该让VIP用的port和网关port关联,也和提供LB的虚机所用的TAP关联起来。
防火墙的流程,我分析应该如下:
1)组成LB服务的虚机所在的计算节点上应为虚机nova-compute-haproxy-instance生成它自己的nova-compute-local防火墙规则:
-A nova-compute-local -d 10.0.0.8/32 -jnova-compute-haproxy-instance
-A nova-compute-haproxy-instance -s 10.0.0.0/24-j ACCEPT
-A nova-compute-haproxy-instance -s 10.0.0.1/32-p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A nova-compute-haproxy-instance -jnova-compute-sg-fallback
-A nova-compute-sg-fallback -j DROP
同时,它也应该有一条默认路由让vip的port(位于sgweb名空间)能访问它所在的网关
route add default gw 10.0.0.1
2)L3-agent的下列防火墙规则能保证l3-agent上的vip可以访问LB池中的其他虚机。
-A nova-network-POSTROUTING -s 10.0.0.0/8 -d10.0.0.0/8 -m conntrack ! --ctstate DNAT -j ACCEPT