Linux中的LVS网络负载技术介绍

LVS集中的IP负载均衡技术介绍
NLB是Windows下网络负载平衡技术。它可以保证几台win机器之间,通过配置后,利用广播或组播方式,使得虚拟ip地址同时均匀的分布在每台或者指定的几台win机器上,从而实服务器现网络负载。相信这个大家都比较熟。但我们今天讨论的是Linux下的情况。问题就在于:Linux中有类似windows的nlb的技术吗?有又如何实现的呢?
答案肯定是肯定的。不但有,而且很多。除了我们今天要讲的LVS外,还有LNLB、HAproxy、Pound等第三方Linux软件。接下来我们来看一幅LVS虚拟服务拓扑图:
这张图所展示的,内容很简单的:就是终端通过网络连接到一台平衡服务器
上,然后平衡服务器将终端的连接,转发给LAN网或WAN网中服务器。简单的
1
说,这就是LVS的基本原理。LVS简单吧!在LVS项目中,把图中的前置平衡服务器称之为Director Server(DR),后置的实际服务器称之为Real Server (RS)。
看着这拓扑案例图,也许,大家很快就想到一个问题:DR机宕了怎么办?不就OVER了吗?是啊!这涉及到一个HA(High-Availability)高可用性问题。要保证DR服务器的冗余安全,可采用Heartbeat建主备来解决此问题。但HA 的问题,我们不打算在这里讨论。另外一个问题也许你想到了,也许你还没留意到。那就是重定向问题,如何保证Director Service能将来自同一个Client的请求发给同一个RealServer呢?LVS可通过服务Persistent参数来设置。那问题是,“来自同一个客户”是基于IP的客户端还是基于浏览器客户端的Cookie呢?LVS 还有另一参数[-M netmask]。所以说应该是基于源地址.它指出源地址的匹配方式。-p900-M255.255.255.0就是掩码后网络地址相同的请求使用同一个模板。***********************************************************************************关于MAN命令中对-P和-M参数的说明。
ipvsadm-A-t vip:port-s scheduler-p persisten-time
-p,--persistent[timeout]
Specify that a virtual service is persistent.If this option is
specified,multiple requests from a client are redirected to the
same real server selected for the first request.Optionally,
the timeout of persistent sessions may be specified given in
seconds,otherwise the default of300seconds will be used.This
option may be used in conjunction with protocols such as SSL or
FTP where it is important that clients consistently connect with
the same real server.
Note:If a virtual service is to handle FTP connections then
persistence must be set for the virtual service if Direct Rout-
ing or Tunnelling is used as the forwarding mechanism.If Mas-
querading is used in conjunction with an FTP service than per-
sistence is not necessary,but the ip_vs_ftp kernel module must
2
be used.This module may be manually inserted into the kernel
using insmod(8).
-M,--netmask netmask
Specify the granularity with which clients are grouped for per-
机柜空调器
sistent virtual services.The source address of the request is
masked with this netmask to direct all clients from a network to
the same real server.The default is255.255.255.255,that is,
热饮机the persistence granularity is per client host.Less specific
netmasks may be used to resolve problems with non-persistent
cache clusters on the client side.
**************************************************************************************除了“HA”、重定向问题外,还有一个平衡算法或我们常说“动态平衡”问题,也就说RS服务器也许高低配置不同,负载能力不一样。这就需要LVS不能简单的,将轮询分载终端的连接。关于这个,LVS项目提供了IPVS调度器实现了八种负载调度算法。其中默认的是:加权轮询(Weighted Round Robin)。加权轮询就是:调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
*****************************************************关于八种负载调度算法
1.轮叫(Round Robin)
调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。
2.加权轮叫(Weighted Round Robin)
调度器通过"加权轮叫"调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
3.最少链接(Least Connections)
调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。
ap劫4.加权最少链接(Weighted Least Connections)
在集系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均
3
衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
5.基于局部性的最少链接(Locality-Based Least Connections)
"基于局部性的最少链接"调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集系统。该算法根据请求的目标IP地址出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用"最少链接"的原则选出一个可用的服务器,将请求发送到该服务器。
6.带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)
"带复制的基于局部性最少链接"调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache 集系统。它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC 算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址出该目标IP 地址对应的服务器组,按"最小连接"原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器,若服务器超载;则按"最小连接"原则从这个集中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。
7.目标地址散列(Destination Hashing)
彩陶泥
"目标地址散列"调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
8.源地址散列(Source Hashing)
"源地址散列"调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
***********************************************************
如果你想更多、更深入了解LVS项目的话,可看章文嵩博士写的关于“LVS项目介绍”
/zh/lvs1.html
***********************************************************
关于章文嵩博士
章文嵩博士,开放源码及Linux内核的开发者,著名的Linux集项目--LVS(Linux Virtual Server)的创始人和主要开发人员。他目前工作于国家并行与分布式处理重点实验室,主要从事集技术、操作系统、对象存储与数据库的研究。他一直在自由软件的开发上花费大量时间,并以此为乐。
***********************************************************
好了。最后一个需要说明问题就是:实现如上图的网络负载,LVS项目中有三种IP负载平衡模式可以实现。也就是模式有三种。
4
第一种NAT模式Virtual Server via Network Address Translation (VS/NAT)。效力最低。
第二种IP隧道模式Virtual Server via IP Tunneling(VS/TUN)。真实服务器(RS)需要在同一网段。
第三种直接路由模式Virtual Server via Direct Routing(VS/DR)。
更多关于三种模式的原理,我们可参考一下一位名叫“duran”网友的解释。关于IPVS的三种模式原理
1.2.1.NAT模式
NAT用法本来是因为网络IP地址不足而把内部保留IP地址通过映射转换成公网地址的一种上网方式(原地址NAT)。如果把NAT的过程稍微变化,就可以成为负载均衡的一种方式。原理其实就是把从客户端发来的IP包的IP头目的地址在DR上换成其中一台REAL SERVER的IP地址并发至此REAL SERVER,而REAL SERVER则在处理完成后把数据经过DR主机发回给客户端,DR在这个时候再把数据包的原IP 地址改为DR接口上的IP地址即可。期间,无论是进来的流量,还是出去的流量,都必须经过DR。
二恶英检测
1.2.2.IP隧道模式
隧道模式则类似于VPN的方式,使用网络分层的原理,在从客户端发来的数据包的基础上,封装一个新的IP头标记(不完整的IP头,只有目的IP部)发给REAL SERVER,REAL SERVER收到后,先把DR
发过来的数据包的头给解开,还原其数据包原样,处理后,直接返回给客户端,而不需要再经过DR。需要注意的是,由于REAL SERVER需要对DR发过来的数据包进行还原,也就是说必须支持IP TUNNEL 协议。所以,在REAL SERVER的内核中,必须编译支持IP TUNNEL这个选项。IP TUNNEL也在Networking options里面,如下图所示。
1.2.3.直接路由模式
直接路由模式比较特别,很难说和什么方面相似,前2种模式基本上都是工作在网络层上(三层),而直接路由模式则应该是工作在数据链路层上(二层)。其原理为,DR和REAL SERVER都使用同一个IP
对外服务。但只有DR对ARP请求进行响应,所有REAL SERVER对本身这个IP的ARP请求保持静默。
5
也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,出对应的REAL SERVER,把目的MAC地址改为REAL SERVER的MAC并发给这台REAL SERVER。这时REAL SERVER收到这个数据包,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端。由于DR要对二层包头进行改换,所以DR和REAL SERVER之间必须在一个广播域,也可以简单的理解为在同一台交换机上。
介绍的差不多了。最后我选择一种服务来配置一下。Windows中我们常用NLB来分载终端RDP连接。Linux中常采用Telnet和SSH来登录办公或管理。以下我就选取Telnet来配置吧。比较简单。
对于配置LVS来说,不同服务只在于端口的不同。在配置LVS之前,先说明一下LVS的安装问题:
linux kernel2.6的都不需要打补丁。只需安装ipvsadm就好了。
如:Ubuntu Linux#apt-get install ipvsdm
IPVS(ipvsadm)只对DR需要,而RS则不需要。DR只限于linux系统,RS除了支持各种版本的Linux系统外,还可支持Windows系统。
关于Linux支持IPVS问题
柳编水果篮
2.6及以上内核中已经支持了IPVS功能。至于2.4的内核则看版本,2.4.23及以上的内核已经有了ipvs,所以不必且不能打包,如果打了就会编译出错。对于2.4.23以下内核则必须打IPVS补丁。2.4.23/24的内核有问题,所以不建议使用这两种内核。
以LVS-DR模式为例:(服务以telnet为例),用例采用单网卡。实际应用中通常使用双网卡。单双网卡都行。
配置案例节选网上案例,但已验证过。
6

本文发布于:2024-09-21 21:55:03,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/161261.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:服务器   调度   请求
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议