Load Balance as a Service(LBaaS)是 Neutron 提供的一项高级网络服务。
LBaaS 容许租户在本身的网络中建立和管理 load balancer。前端
load balancer 能够说是分布式系统中比较基础的组件。
它接收前端发来的请求,而后将请求按照某种均衡策略转发给后端资源池中的某个处理单元,以完成处理。
load balancer 能够实现系统高可用和横向扩展。web
LBaaS 有三个主要的概念: Pool Member,Pool 和 Virtual IP后端
Pool Member
Pool Member 是 layer 4 的实体,拥有 IP 地址并经过监听端口对外提供服务。
例如 Pool Member 能够是一个 web server,IP 为 172.16.100.9 并经过 80 端口提供 HTTP 服务。浏览器
Pool
Pool 由一组 Pool Member 组成。 这些 Pool Member 一般提供同一类服务。
例如一个 web server pool,包含: web1:172.16.100.9:80 web2:172.16.100.10:80服务器
Virtual IP
Virtual IP 也称做 VIP,是定义在 load balancer 上的 IP 地址。
每一个 pool member 都有本身的 IP,但对外服务则是经过 VIP。网络
load balancer 负责监听外部的链接,并将链接分发到 pool member。
外部 client 只知道 VIP,不知道也不须要关心是否有 pool 或者有多少个 pool member。分布式
OpenStack Neutron 目前默认经过 HAProxy 软件来实现 LBaaS。
HAProxy 是一个流行的开源 load balancer。
Neutron 也支持其余一些第三方 load balancer。spa
下图展现了 HAProxy 实现 load balancer 的方式。server
左图是 client 发送请求到 web server 的数据流:
1. Client 10.10.10.4 经过浏览器访问服务器的外网 IP 10.10.10.7。
2. 请求首先到达路由器,将目的地址设置为服务器的内网 VIP 172.16.100.11
3. VIP 设置在 load balancer 上,load balancer 收到请求后选择 pool member WEB1,
将数据包的目的 IP 设为 WEB1 的地址 172.16.100.9。资源
4. 在将数据包转发给 WEB1 以前,load balancer 将数据包的源 IP 修改成本身的 VIP 地址 172.16.100.11,
其目的是保证 WEB1 可以将应答数据发送回 load balancer。
5. WEB1 收到请求数据包。
右图是 web server 应答的数据流:
1. WEB1 将数据包发送给 load balancer。
2. load balancer 收到 WEB1 发回的数据后,将目的 IP 修改成 Client 的地址 10.10.10.4。 同时也将数据包的源 IP 修改成 VIP 地址 172.16.100.11,保证 Client 可以将后续的数据发送给本身。
3. load balancer 将数据发送给路由器。
4. 路由器将数据包的原地址恢复成服务器的外网 IP 10.10.10.7,而后发送给 Client。
5. Client 收到应答数据。
以上就是 Load Balance as a Service 的工做原理。
下节咱们将开始实践 Neutron LBaaS。