Neutorn LBaaS 原理
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 收到应答数据。
haproxy配置信息存放在/var/lib/neutron/lbaas/
Neutorn LBaaS 原理的更多相关文章
- 理解 Neutorn LBaaS - 每天5分钟玩转 OpenStack(120)
Load Balance as a Service(LBaaS)是 Neutron 提供的一项高级网络服务.LBaaS 允许租户在自己的网络中创建和管理 load balancer. load bal ...
- 每天5分钟 玩转OpenStack 目录列表
最近在学习 OpenStack 的相关知识,一直苦于 OpenStack 的体系庞大以及复杂程度,学习没有进度,停滞不前.偶然机会在 51CTO 上发现了一个热点的专题关于 OpenStack 的,题 ...
- 配置 LBaaS - 每天5分钟玩转 OpenStack(121)
上一节学习了 Neutron LBaaS 的原理,今天开始实践.首先在配置中启用 LBaaS 服务. Neutron 通过 lbaas plugin 和 lbaas agent 提供 LBaaS 服务 ...
- L2 Population 原理 - 每天5分钟玩转 OpenStack(113)
前面我们学习了 VXLAN,今天讨论跟 VXLAN 紧密相关的 L2 Population. L2 Population 是用来提高 VXLAN 网络 Scalability 的. 通常我们说某个系统 ...
- Neutron: Load Balance as a Service(LBaaS)负载均衡
load balancer 负责监听外部的连接,并将连接分发到 pool member. LBaaS 有三个主要的概念: Pool Member,Pool 和 Virtual IP Pool M ...
- HAProxy原理和配置
HAProxy原理和配置 目录 1.HAProxy简介 2.haproxy安装和配置说明 proxies配置参数 bind配置 Balance配置 基于cookie的会话绑定 统计接口启用相关的参数 ...
- K8s Service原理介绍
Service的工作方式有三种: 第一种: 是Userspace方式 如下图描述, Client Pod要访问Server Pod时,它先将请求发给本机内核空间中的service规则,由它再将请求, ...
- Octavia 项目加速 OpenStack LBaaS 落地大规模应用场景
目录 文章目录 目录 OpenStack LBaaS Octavia 软件架构 网络架构 操作对象基本概念 功能实现基本概念 Ocatvia Daemon 列表 部署 Ocatvia 手动方式集成 O ...
- 奇异值分解(SVD)原理与在降维中的应用
奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域.是 ...
随机推荐
- HTTP --meta详解
meta是html语言head区的一个辅助性标签.也许你认为这些代码可有可无.其实如果你能够用好meta标签,会给你带来意想不到的效果,meta标签的作用有:搜索引擎优化(SEO),定义页面使用语言, ...
- 更改Eclipse里的Classpath Variables M2_REPO
M2_REPO这个classpath variable 是不能改变的. 为什么 Eclipse 里的 Classpath Variables M2_REPO 无法修改(non modifiable) ...
- clr相关的一些工具
NGen.exe:将IL代码编译成本地代码. PEVerify.exe:它检查一个集所有方法并报告其中含不 的实用程序. ILDasm.ex:IL反编译 csc.exe:C#编译工具 ilasm.ex ...
- Fragment生命周期(转)
Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计.平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且 ...
- OGNL入门
------------------siwuxie095 OGNL 入门 1.OGNL 支持对象方法调用,即 objName.methodName() 如:使用 OGNL 表达式 + Struts2 ...
- N 秒打开一个新窗口
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- 不同包之间的继承extends
情景如下: 两个类:ExtendsSuper(父类).ExtendsSub(子类) 两个包:父类ExtendsSuper位于包packSuper路径下,子类ExtendsSub位于包packSub路径 ...
- MicroRNA in Control of Gene Expression: An Overview of Nuclear Functions 微RNA控制基因表达:核功能概述
MicroRNA in Control of Gene Expression:An Overview of Nuclear Functions微RNA控制基因表达:核功能概述 抽象:小的非编码RNA( ...
- LeNet
LeNet 模型特点 LeNet5诞生于1994年,由Yann LeCun提出,充分考虑图像的相关性.当时结构的特点如下: 1)每个卷积层包含三个部分:卷积(Conv).池化(ave-pooling) ...
- 如何使用Word2016或Office365中的word撰写博客并发布
目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...