Lvs原理
官方文档:
http://www.linuxvirtualserver.org/zh/lvs1.html
http://www.linuxvirtualserver.org/zh/lvs2.html
http://www.linuxvirtualserver.org/zh/lvs3.html
http://www.linuxvirtualserver.org/zh/lvs4.html
名称 | 缩写 | 说明 |
虚拟IP地址(Virtual IP Address) | VIP | VIP为Director用于向客户端计算机提供服务的IP地址 |
真实IP地址(Real Server IP Address) | RIP | 在集群下面节点上使用的IP地址,物理IP地址 |
Director的IP地址(Director IP Address) | DIP | Director用于连接内外网络的IP地址,物理网卡上的地址。是负载均衡器上的IP |
客户端主机IP地址(Client IP Address) | CIP | 客户端用户计算机请求集群服务器的IP地址,该地址用作发送给集群的请求的源IP地址 |
如下图:
LVS集群的3种工作模式介绍与原理
NAT(Network Address Translation)、TUN(Tunneling)、DR(Direct Routing)、FULLNAT(Full Network Address Translation)
- DR模式-直接路由模式
Virtual Server via Direct Routing (VS/DR)
VS/DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器将响应后的处理结果直接返回给客户端用户。同VS/TUN技术一样,VS/DR技术可极大地提高集群系统的伸缩性。而且,这种DR模式没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器LB与真实服务器RS都有一块网卡在同一物理网段上,即必须在同一个局域网环境。
- 通过在调度器LB上修改数据包的母的MAC地址实现转发。注意,源IP地址仍然是CIP,目的IP地址仍然是VIP。
- 请求的报文经过调度器,而RS香型处理后的报文无需经过调度器LB,因此,并发访问量大时使用效率很高(和NAT模式比)
- 因DR模式是通过MAC地址的改写机制实现的转发,因此,所有RS节点和调度器LB只能在一个局域网LAN中(小缺点)
- 需要注意RS节点的VIP的绑定(lo:vip,lol:vip)和ARP抑制问题。
- 强调下:RS节点的默认网关不需要是调度器LB的DIP,而直接使IDC机房分配的上级路由器的IP(这是RS带有外网IP地址的情况),理论讲:只要RS可以出网即可,不是必须要配置外网IP。
- 由于DR模式的调度器仅进行了目的MAC地址的改写,因此,调度器LB无法改变请求的报文的目的端口(和NAT要区别)
- 当前,调度器LB支持几乎所有的UNIX、LINUX系统,但目前不支持windows系统。真是服务器RS节点可以是windows系统
- 总的来说DR模式效率很高,但是配置比较麻烦,因此访问量不是特别大的公司可以用haproxy/nginx取代之。这符合运维原则:简单、易用、高效。日2000W PV或并发请求1万一下都可以考虑用haproxy/nginx(LVS NAT模式)
- 直接对外的访问业务,例如:web服务做RS节点,RS最好用公网IP地址。如果不直接对外的业务,例如:MySQL,存储系统RS节点,最好只用内部IP地址。
NAT模式
- NAT技术将请求的报文(DNAT)和相应的报文(SNAT),通过调度器地址重写然后在转发发给内部的服务器,返回时改写成原来的用户请求的地址。
- 只需要在调度器LB上配置WAN公网IP即可,调度器也要有私有LAN IP和内部RS节点通信
- 每台内部RS节点的网关地址,必须要配置成调度器LB的私有LAN内物理网卡地址(LDIP),这样才能确保数据报文返回仍然经过调度器LB。
- 由于请求与响应的数据报文都经过调度器LB,因此,网站访问量大时调度器LB有较大瓶颈,一般要求最多10-20台节点。
- NAT模式支持对IP及端口的转换,即用户请求10.0.0.1:80,可以通过调度器转换到RS节点的10.0.0.2:8080(DR和TUN模式不具备的)。
- 所有NAT内部RS节点只需要配置私有LAN IP即可。
- 由于数据包来回都需要经过调度器,因此,要开启内核转发net.ipv4.ip_forward=1,当然也包括iptables防火墙的forward功能(DR和TUN模式不需要)。
LVS的调度算法
- 轮叫调度(Round-Robin Scheduling)
- 加权轮叫调度(Weighted Round-Robin Scheduling)
- 最小连接调度(Least-Connection Scheduling)
- 加权最小连接调度(Weighted Least-Connection Scheduling)
- 基于局部性的最少链接(Locality-Based Least Connections Scheduling)
- 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)
- 目标地址散列调度(Destination Hashing Scheduling)
- 源地址散列调度(Source Hashing Scheduling
Director调度器可用于做出该决定的调度方法分成两个基本类型:
固态调度方法:rr,wrr,dh,sh
动态调度算法:wlc,lc,lblc,lblcr,SED,NQ(后面两种官方站点没有提到,编译LVS,make过程可以看到rr|wrr|wlc|lblc|lblcr|dh|sh|sed|nq)。
rr 轮叫调度(Round-Robin Scheduling),它将请求依次分配不同的RS节点,也就是在RS节点中均摊请求。这种算法简单,但是只适合于RS节点处理性能相差不大的情况。
wrr 加权轮询调度(Weighted Round-Robin Scheduling),它将依据不同RS节点的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值较低的RS节点更多。相同权值的RS得到相同数目的连接数。
wlc 加权最小连接数调度(weighted Least-Connection)假设各台RS的权值依次为Wi(I=1..n),当前的TCP连接数依次为Ti(I=1..n),依次选取Ti/Wi为最小的RS作为下一个分配的RS。
LVS的调度算法的生产环境选型
- 一般的网络服务,如HTTP、Mail、MySQL等,常用的LVS调度算法为:
- 基本轮叫调度rr算法
- 加权最小连接调度wlc
- 加权轮叫调度wrr算法
2.基于局部性的最小链接LBLC和带复制的基于局部性最少链接LBLC主要适用于Web Cache 和Db Cache集群,但是我们很少这样用。
3.源地址散列调度SH和目标地址散列调度DH可以结合使用在防火墙集群中,它们可以保证整个系统的唯一出入口。
4.最短预期延时调度SED和不排队调度NQ主要是对处理时间相对比较长的网络服务。
Lvs原理的更多相关文章
- LVS原理详解(3种工作方式8种调度算法)--老男孩
一.LVS原理详解(4种工作方式8种调度算法) 集群简介 集群就是一组独立的计算机,协同工作,对外提供服务.对客户端来说像是一台服务器提供服务. LVS在企业架构中的位置: 以上的架构只是众多企业里面 ...
- LVS原理详解(3种工作模式及8种调度算法)
2017年1月12日, 星期四 LVS原理详解(3种工作模式及8种调度算法) LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法) 作者:woshiliwentong 发布日期: ...
- lvs原理及各种调度算法详解
LVS原理详解 LVS原理详解 LVS简介 LVS结构与工作原理 一.LVS的结构 二.LVS内核模型 三.LVS的包转发模型 1.NAT模型: 2.DR模型: 3.TUN模型: 四.LVS的调度算法 ...
- LVS原理详解
一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...
- LVS原理与使用(1)
负载均衡,无论是否真正了解过,但我相信所有跟编程打交道的读者都有听说.同时,它(负载均衡)也是被认为一个大型网站的标识性技术之一(但负载均衡的作用肯定不止这点用途).虽然网上也有不少关于LVS配置实用 ...
- 架构设计:负载均衡层设计方案(4)——LVS原理
之前我们花了两篇文章的篇幅,详细讲解了Nginx的原理.安装和特性组件.请参看<负载均衡层设计方案(2)——Nginx安装>(http://blog.csdn.net/yinwenjie/ ...
- LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法)
一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一 台计算机.集群系统中的单个计 ...
- LVS原理讲解
一.lvs介绍 LVS的英文全名为"Linux Virtual Server",即Linux虚拟服务器,是一个虚拟的四层交换器集群系统,根据目标地址和目标端口实现用户请求转发,本身 ...
- LVS原理详解(3种工作方式8种调度算法)
一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...
随机推荐
- VRRP协议详解
今天做了lvs的负载均衡的实验,竟然成功了,出乎我意料......哈哈哈哈 http://blog.csdn.net/fanlu319/article/details/7013258
- ionic中获取坐标方法
ionic中获取坐标的方法 1.首相需要执行命令: cordova plugin add cordova-plugin-geolocation2.然后块级注入配置bower文件引入ngCordova ...
- SQL Server 2012 学习笔记2
1. 新建数据库 可以在对应目录下右键新建数据库,也可以用程序添加: 先打开程序编辑对话框"New Query" create database Library 2. 添加表格 可 ...
- mysql查看表使用的数据库引擎
看某个使用的引擎,在显示结果里参数engine后面的就表示该表当前用的存储引擎: mysql> show create table 表名; 看mysql支持哪些存储引擎: mysql> s ...
- 入门:JavaWeb Cookie
总结: JavaWeb 利用Cookie 存储在本地用户名和密码,设置Cookie的生存时间. 两个页面,一个登陆页面,一个登陆后的页面,在登陆页面选择是否保存Cookie(保存Cookie,下次自动 ...
- PInvoke和Marshal的姿势
PInvoke http://www.mono-project.com/docs/advanced/pinvoke/ https://msdn.microsoft.com/en-us/library/ ...
- Mono
mono (Novell公司开发的跨平台·NET运行环境) http://baike.baidu.com/link?url=iGl5T4-pmpJwB01mQxHq95bJcrCvR_JMNNfP0u ...
- Python Paramiko模块与MySQL数据库操作
Paramiko模块批量管理:通过调用ssh协议进行远程机器的批量命令执行. 要使用paramiko模块那就必须先安装这个第三方模块,仅需要在本地上安装相应的软件(python以及PyCrypto), ...
- Redis-cluster集群【第三篇】:redis主从
Redis主从复制原理: 通过把这个RDB文件或AOF文件传给slave服务器,slave服务器重新加载RDB文件,来实现复制的功能! 复制的话:主服务器可以有多个从服务器!!! 不仅这样从服务器还 ...
- CentOS7 mono环境连接WCF
总结下在mono环境中使用Wcf出现的问题以帮助你快速解决问题. 1.昨天在内网Centos7下部署由Windows上开发完成的ASP.NET Mvc4项目,部署到mono环境下遇到了无法找到endp ...