博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
理解 Neutorn LBaaS - 每天5分钟玩转 OpenStack(120)
阅读量:6181 次
发布时间:2019-06-21

本文共 1558 字,大约阅读时间需要 5 分钟。

5.5.png

Load Balance as a Service(LBaaS)是 Neutron 提供的一项高级网络服务。

LBaaS 允许租户在自己的网络中创建和管理 load balancer。

load balancer 可以说是分布式系统中比较基础的组件。

它接收前端发来的请求,然后将请求按照某种均衡策略转发给后端资源池中的某个处理单元,以完成处理。
load balancer 可以实现系统高可用和横向扩展。

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。

下图展示了 HAProxy 实现 load balancer 的方式。

左图是 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。
二维码+指纹.png

转载地址:http://mrdda.baihongyu.com/

你可能感兴趣的文章
android 权限库EasyPermissions
查看>>
肖特携“世界品牌”肖特赛兰®亮相2019AWE家电博览会,探索未来厨房的全新烹饪乐趣...
查看>>
hi-nginx-1.4.9正式发布,支持javascript后端开发
查看>>
LocalDateTime API 整理
查看>>
CEPH 添加OSD操作
查看>>
kubernetes资源对象--secret和Service Account
查看>>
【对讲机的那点事】北京无线电协会C4FM数字中继台终端设备调制方式
查看>>
Unity3d资源解决方案之AssetBundle
查看>>
具有1-10年开发经验的程序员应该如何提升自己
查看>>
HTML5 FormData实现文件上传实例
查看>>
SAP语境下什么是The Business Engineer?
查看>>
C# 桌面软件开发-深入学习 [1]- AY-C#人爱学不学-aaronyang技术分享
查看>>
Jquery ajax异步传值的两个实用的方法,你看后肯定会用第二个
查看>>
HashMap实现原理
查看>>
spring、springMvc、springBoot和springCloud的联系与区别
查看>>
物联网无处不在取决于Wi-Fi和蓝牙
查看>>
windows和Linux上安装php7 alpha 并安装 yaf
查看>>
MongoDB简介
查看>>
事件驱动的详解
查看>>
Google I/O 2019 将于5月7日举办
查看>>