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/

 

转载于:https://www.cnblogs.com/wangjq19920210/p/9187250.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

判断一个图中有无环路的存在

这里要引入两个概念: 1.树边:是一条未被遍历过的边,它指向一个未被访问过的点。 2.反向边:是一条未被遍历过的边,它指向一个被访问过的点。 如果图中有环路的存在,那么环路的最后一个边必然是一条反向边。 …

精选的一些《编程之美》相关资料

又要到一年的招聘季了,肯定又有很多人开始啃《编程之美》了吧。这本书从开阔视野的角度来说很好,不过限于篇幅,有的问题并没有讲清楚(甚至问题叙述模棱两可、被标榜为“鼓励同面试官交流以获得更多细节”);…

java 内置函数_java8 四大内置核心函数式接口

其他补充接口:一、Consumer:消费型接口(void accept(T t))来看一个简单得例子:1 /**2 * 消费型接口Consumer3 */4 Test5 public void test1 () {6 consumo(500, (x) -> System.out.println(x));7 }89 public void consumo (double money, …

jQuery - (JQuery datatables api 使用解读)

学习可参考&#xff1a;http://www.guoxk.com/node/jquery-datatables http://yuemeiqing2008-163-com.iteye.com/blog/2006942 分别导入css和js文件 <link href"~/Content/bootstrap.css" rel"stylesheet" /> <link href"~/Content/datatab…

Tomcat配置JNDI数据源

经过3个多小时的努力&#xff0c;配置JNDI数据源(主要是通过DBCP连接池)终于搞定&#xff5e;还是Tomcat官方的说明好&#xff0c;不过全是英文的&#xff0c;大概还看得懂&#xff0e;百度上那么花花绿绿的太多了&#xff0c;一个也没成功&#xff01;&#xff0e;&#xff0e…

java 线程池 固定大小_使用Executors服务在Java中创建固定大小线程池的最佳方法...

查看源代码,您将意识到&#xff1a;Executors.newFixedThreadPool(threadPoolSize);相当于&#xff1a;return new ThreadPoolExecutor(threadPoolSize, threadPoolSize, 0L, MILLISECONDS,new LinkedBlockingQueue());由于它不提供显式的RejectedExecutionHandler,因此使用默认…

令牌验证 token

通过令牌验证在注册中心控制权限&#xff0c;以决定要不要下发令牌给消费者&#xff0c;可以防止消费者绕过注册中心访问提供者&#xff0c;另外通过注册中心可灵活改变授权方式&#xff0c;而不需修改或升级提供者。 可以全局设置开启令牌验证&#xff1a; <!--随机token令…

easybcd 支持 windows 10 和 ubuntu 14.04 双系统启动

家里计算机系统 windows 10 全新安装。 原本是双系统的&#xff0c;还有一个ubuntu。 windows 10 安装以后&#xff0c;恢复ubuntu就是问题了。 (事后经验&#xff1a;请不要立刻安装bcd修改工具) 最初的方法是利用easybcd修改bcd记录。操作是成功的&#xff0c;但系统重新启动…

需求分析与原型设计

结对者&#xff1a;031402140李严 0314026617林瑞斌 需求分析与原型设计 NABCD模型 N&#xff08;Need&#xff0c;需求&#xff09;: 收集信息的过程太过繁琐&#xff0c;有班级总负责人需汇总每一个同学的志愿并填入excel表中&#xff0c;上交年级负责人&#xff0c;年级负责…

java导出表格_java怎么导出excel表格

import com.spire.xls.ExcelVersion;import com.spire.xls.Workbook;import com.spire.xls.Worksheet;public class InsertArray {public static void main(String[] args) {//创建Workbook对象Workbook wb new Workbook();//获取第一张62616964757a686964616fe4b893e5b19e313…

for 循环 和 Array 数组对象

博客地址&#xff1a;https://ainyi.com/12 for 循环 和 Array 数组对象方法 for for-in for-of forEach效率比较 - 四种循环&#xff0c;遍历长度为 1000000 的数组叠加&#xff0c;得到的时间差&#xff1a;for 3for-in 250for-of 7forEach 44- 效率速度&#xff1a;for >…

IntelliJ IDEA---java的编译工具【转】

转自&#xff1a;http://baike.baidu.com/link?urlsEpS0rItaB9BiO3i-qCdGSYiTIVPSJfBTjSXXngtN2hBhGl1j36CYQORKrbpqMHqjvu3MOfkgVzpMqr8To2l2q IDEA 全称 IntelliJ IDEA&#xff0c;是java语言开发的集成环境&#xff0c;IntelliJ在业界被公认为最好的java开发工具之一&#…

OC中文件读取类(NSFileHandle)介绍和常用使用方法

NSFileHandle 1.NSFileManager类主要对于文件的操作(删除&#xff0c;修改&#xff0c;移动&#xff0c;赋值等等) //判断是否有 tagetPath 文件路径&#xff0c;没有就创建NSFileManager *fileManage [NSFileManager defaultManager];BOOL success [fileManage createFileAt…

java filereader读文件_Java FileReader读文件

import java.io.*;class FileReaderDemo{public static void main(String[] args) throws IOException{//创建一个文件读取流对象&#xff0c;和指定名称的文件相关联。//要保证该文件是已经存在的&#xff0c;如果不存在&#xff0c;会发生异常FileNotFoundExceptionFileReade…

struts2拦截器

struts拦截器 图&#xff1a; 1、拦截器是什么&#xff1f; 分离关注&#xff1a; 完成一个功能&#xff0c;可以写在一个类中&#xff0c;然后一个类中4个步骤&#xff0c;实现该类完成。 我们可以将4个步骤写在4个类中&#xff0c;然后每一个类完成一部分功能&#xff0c;然后…

Springboot-Jpa多数据库配置-2.0+版本

pom.xml增加: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency> 配置表同JdbcTemplate配置. 主数据源: ConfigurationEnableTransactionManagementEna…

Windows虚拟地址转物理地址(原理+源码实现,附简单小工具)

By Lthis 上个月就想写了&#xff0c;一直没时间...网上大概搜了一下&#xff0c;原理与操作倒是一大堆&#xff0c;一直没看到源码实现&#xff0c;总得有人动手&#xff0c;这回轮到我了。东西写得很烂&#xff0c;请大牛勿喷。一直觉得靠源码的方式驱动学习是非常好的一种学…

python装饰器的使用

借用装饰器&#xff0c;我们可以批量的对老的函数进行改造或扩展老函数功能&#xff0c;比如需要对函数的接收参数进行过滤&#xff0c;Flash的url路由功能就是使用的这个方式 def dropoushu(): # 这一层函数可以去掉&#xff0c;如果去掉了&#xff0c;则使用checkjiou这种方…

7_文件上传漏洞

文件上传漏洞 当文件上传时&#xff0c;若服务端脚本语言未对上传的文件进行严格验证和过滤&#xff0c;若恶意用户上传恶意的脚本文件时&#xff0c;就有可能控制整个网站甚至是服务器&#xff0c;这就是文件上传漏洞。 权限 1.网站后台权限&#xff1a;登陆了后台&#xff0…

mysql数据库如何实现分页查询_不同数据库的分页查询实现方法总结

分页查询是数据库查询中经常用到的一项操作&#xff0c;对查询出来的结果进行分页查询可以方便浏览。那么Oracle、SQL Server、MySQL是如何实现查询的呢&#xff1f;本文我们就来介绍这一部分内容。首先我们先看一下SQL Server 数据库中SQL语句查询分页数据的解决方案&#xff…