高可用与负载均衡(6)之聊聊LVS的三种模式
LVS的赘述
- IPVS,ipvs ,ip_vs是负载均衡器中的内核代码
- LVS是完整的负载均衡器+后端服务器。这些组件组成了虚拟服务器。
LVS是一个4层负载均衡方案,标准的客户端-服务器网络语义也被保留下来了。每个客户端都认为直接连接到了后端服务器,同时后端服务器也认为直接连接到了客户端。客户端和后端服务器没有办法获知负载均衡器干预了网络连接。负载均衡器不会检查包的内容,不能够根据包的内容做出负载均衡的判断(例如包里面包含了cookie),LVS不是一个高性能计算集群或者分布式集群,后端服务器之间互相感知不到,不能够协同工作。
为什么要有LVS?
- 为了更高的吞吐量。在LVS里面,添加后端服务器的成本是线性的,但是如果采用替换替换为更高端单一的服务器达到相同的效果,成本会高很多,前者是横向扩展(scale out),后者是纵向扩展(scale up)
- 为了冗余。后端服务器可以从LVS上被管理员提出,然后做其他相关的服务器操作。
- 为了适应性。如果吞吐量被评为逐步增加的,或者事件性陡增,后端服务器的增加可以对用户透明。
LVS的三中各模式
LVS有三种模式:LVS-NAT,LVS-DR,LVS-TUN。下面对说说每个模式。
LVS-NAT
NAT是LVS软件实现第一种转发模式,搭建一个LVS集群DR模式的话,是最简单的,因为不需要对后端服务器做任何设置上的变更。LVS-NAT其实也是基于NAT技术的,网络数据流如下:
- LB收到client的请求后,改写目的IP地址为后端服务器真实IP和端口号,转发给后端服务器。
- 后端服务器处理完成后,回复给负载均衡器。
- 负载均衡服务器改写源IP为虚拟IP(其实就是LVS的ip),发送给客户端。
如图所示:
lvs在nat模式中,是有1个内网IP,还有1个外网IP的。所有后端服务器的网关都指向LVS的内网IP。
LVS-DR
DR是direct Routing的缩写,是直连路由的。
请求流程如下:
- client首先发起Arp 广播,请求LVS1的MAC地址,LVS回复client,告诉它自己的MAC地址。此时arp广播,所以mac地址都是0
- Client连接lvs的80端口,发送TCP SYN。此时数据包的目标mac地址是lvs1,目的IP也是lvs1的外网IP。
- 负载均衡器转发报文,在转发之前修改mac地址,把目标mac地址由LVS的改为后端服务器WEB1的。
- web服务器处理client的请求,此时MAC地址为web服务器的,目标IP也是。
- web服务器处理完请求,回包的给client,此时回包的目的MAC是client的mac,目的IP也是client,回包不需要经过lvs服务器了。
LVS-DR模式简要概括就是:client发起请求经过lvs调度后,后端服务器响应数据直接发回给客户端,不再经过LVS了。
流程图如下:
LVS-Tun
这是LVS原创的一种转发模式,基于LVS-DR。LVS把原始的包(源客户端IP到虚拟IP)封装成ipip包,目的IP地址就是后端服务器的真实IP,然后进入OUTPUT链,并路由到后端服务器。后端服务器解封ipip包并处理,以源地址虚拟IP,目的地址客户端IP直接回复给客户端。这种模式就是为了解决服务器和负载均衡器不在同一个物理区域设计的(也就是跨网段)
3种模式对比
- 从后端服务器要求来看,LVS-NAT只需要把后端服务器网关指向负载均衡器的内网地址,无任何其它的要求;LVS-DR模式要求后端服务器禁用对虚拟IP的arp响应。后端服务器的网关不指向LVS;LVS-Tun要求后端服务器支持ipip解封包,部分操作系统不支持。
- 从吞吐量上来看,LVS-DR最高,LVS-NAT最低。
- 从配置项来看,LVS-NAT最简单,其他两个比较复杂。
高可用与负载均衡(6)之聊聊LVS的三种模式的更多相关文章
- 高可用与负载均衡(7)之聊聊Lvs-DR+Keepalived的解决方案
今天直接开门见山了,直接说配置吧.首先介绍下我这的环境 如有问题,请联系我18500777133@sina.cn IP 安装软件 192.168.1.7 lvs1+keepalived master角 ...
- Mycat - 高可用与负载均衡实现,满满的干货!
前言 开心一刻 和朋友去吃小龙虾,隔壁桌一个小女孩问妈妈:"妈妈,小龙虾回不了家,它妈妈会不会着急?" 她妈妈愣住了,我扒虾的手停下了,这么善良的问题,怎么下得了口.这是老板急忙过 ...
- Keepalived+HAProxy实现RabbtiMQ高可用的负载均衡
HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案,包括Twitter,Reddit,StackOverflow,GitHub在 ...
- PostgreSQL 9.5 高可用、负载均衡和复制
高可用.负载均衡和复制 1. 不同方案的比较 共享磁盘故障转移 共享磁盘故障转移避免了只使用一份数据库拷贝带来的同步开销. 它使用一个由多个服务器共享的单一磁盘阵列.文件系统(块设备)复制 DRBD是 ...
- Mysql读写分离 及高可用高性能负载均衡实现
什么是读写分离,说白了就是mysql服务器读的操作和写的操作是分开的,当然这个需要两台服务器,master负责写,slave负责读,当然我们可以使用多个slave,这样我们也实现了简单意义上的高可用和 ...
- 搭建Keepalived+LNMP架构web动态博客 实现高可用与负载均衡
环境准备: 192.168.193.80 node1 192.168.193.81 node2 关闭防火墙 [root@node1 ~]# systemctl stop firewalld #两台都 ...
- Dubbo入门到精通学习笔记(十六):Keepalived+Nginx实现高可用Web负载均衡
文章目录 Keepalived+Nginx实现高可用Web负载均衡 Keepalived+Nginx实现高可用Web负载均衡 高可用架构篇 Keepalived + Nginx 实现高可用 Web 负 ...
- EMQ集群搭建实现高可用和负载均衡(百万级设备连接)
一.EMQ集群搭建实现高可用和负载均衡 架构服务器规划 服务器IP 部署业务 作用 192.168.81.13 EMQTTD EMQ集群 192.168.81.22 EMQTTD EMQ集群 192. ...
- Keepalived + Nginx 实现高可用 Web 负载均衡
一.Keepalived 简要介绍 Keepalived 是一种高性能的服务器高可用或热备解决方案, Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前 ...
随机推荐
- CSS基本知识0-命名规范
CSS命名及规范是第一步: 总起:所有名字小写,样式名用-号连接,如.nav-left,CSS使用小写加连接,那么ID就使用大写不加连接,比如UserName,把它和编程的属性对应起来,那么方法就以小 ...
- Angular实现瀑布流的库angular-deckgrid
一. 安装 bower install --save angular-deckgrid 添加代码到你的HTML 添加到你的angular模块中: angular.module('your.module ...
- TextBoxFor控件的扩展---Bootstrap在mvc上的应用
TextBoxFor控件的问题: 1:自带了样式,再用bootstrap样式会有冲突. 2:要加水印,js事件,限制输入长度比较麻烦. 因此需要对textboxfor控件进行扩展. 目标: 1:能使用 ...
- Word Excel 操作总结
1.与office无关使用 Aspose.Cells.dll,Aspose.Words.dll 2.使用Microsoft.Office.Interop.Excel Microsoft.Office. ...
- js的单引号,双引号,转移符
这里我们看到想在style后边在插入一个样式的变量,data.cssSytle.a是做边和邮编都是"",并且没有转移符
- android之广播(二)
广播接受者不仅可以通过清单文件来向系统注册,也可以通过代码来注册.并且有的广播必须通过代码来注册广播接受者. 锁屏和解锁广播 电量改变广播 打开屏幕和关闭屏幕 这里将广播接收者写在服务里面 <? ...
- PotPlayer为播放而生的专业播放器
韩国,比较牛逼的视频播放器.专注与本地视频播放,值得拥有.... 免费下载:http://yunpan.cn/cmZ5ELC6DTI8Y 访问密码 4bf1
- Collection中Set集合在应用中常见的方法和注意点
Set集合 : 元素无序的,元素不允许重复. ---->HashSet : 存值方式使用哈希表来存值的. 原理 : 如果HashSet中存放对象 ...
- LAMP安装各种问题解决方案
LAMP环境配置安装注意安装步骤及说明事项. LAMP安装各种问题解决 1. 访问ftp报错 解决: 关闭selinux vi /etc/selinux/config 内容修改为: selinux=d ...
- Android性能优化文章转载
今天看到几篇比较好的文章就转了!(链接如下) 转载注明出处:Sunzxyong Android性能优化之Bitmap的内存优化 Android性能优化之常见的内存泄漏 Android最佳实践之Syst ...