高可用与负载均衡(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 前 ...
随机推荐
- Oracle基础语法
--表create table tb_myTable( mname vardhar2(30), pwd varchar2(30)); --存储过程create or replace procedure ...
- mysql创建触发器
触发器语句只有一句话 可以省略begin和end CREATE trigger `do_praise` after insert on praise for each row update post ...
- UTF-8 's format
几篇比较好的博客 古腾龙的博客:编码规则(UTF-8 GBK) GBK 千千秀字 shell set man ascii可以查看ascii码表,man utf-8看以查看utf-8的帮助 Unicod ...
- iOS -- cocopods使用
- TouchSlop与VelocityTracker认识
TouchSlop是处理触摸事件中的一个常量,被系统认为滑动和点击事件的临界点.理 解这个touchSlop是一个滑动距离值的常量,也就是说当我们手触摸在屏幕上滑动时,如果滑动距离没有超过touchS ...
- IntelliJ_编译一直报错“找不到符号”
执行maven compile时一直报错"找不到符号",类 XXX 各种clean.compile都不行 最后执行Rebuild Project一次后解决 执行rebuild ...
- 【BZOJ 3165】【HEOI 2013】Segment
往区间上覆盖一次函数,做法是用线段树维护标记永久化. 每次都忘了线段树要4倍空间,第一次交总是RE,再这么手残的话考场上就真的要犯逗了. #include<cstdio> #include ...
- 【BZOJ 3669】【NOI 2014】魔法森林 LCT+枚举边
$LCT+枚举$ 复习一下$LCT$模板. 先以$Ai$为关键字$sort$,然后$Ai$从小到大枚举每条边,看能否构成环,构不成则加边,构成则判断,判断过了就切断$Bi$最大的边. 我的边是编号为$ ...
- uva10870 矩阵
f(n) = a1f(n − 1) + a2f(n − 2) + a3f(n − 3) + . . . + adf(n − d), for n > d, 可以用矩阵进行优化,直接构造矩阵,然后快 ...
- Git一套简流
一.前奏 1.凡是记忆性的问题都不是问题! 如果你曾大致了解了Git这一门技术,你会发现这是属于"记忆型"的,所以,这门技术对我们来说不是问题,是一门熟能生巧的哲学. 有了这个前奏 ...