资讯

展开

lvs负载均衡

作者:快盘下载 人气:

LVS

1. Lvs简介

  LVS;Linux Virtual Server即Linux虚拟服务器;是由章文嵩博士主导的开源负载均衡项目;目前LVS已经被集成到Linux内核模块中。在Linux内核中实现了基于IP的数据请求负载均衡调度方案;终端互联网用户从外部访问公司的负载均衡服务器;终端用户的Web请求会发送给LVS调度器;调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器;比如;轮询算法可以将外部的请求平均分发给后端的所有服务器;终端用户访问LVS调度器虽然会被转发到后端真实的服务器;但如果真实服务器连接的是相同的存储;提供的服务也是相同的服务;最终用户不管是访问哪台真实服务器;得到的服务内容都是一样的;整个集群对用户而言都是透明的。最后根据LVS工作模式的不同;真实服务器会选择不同的方式将用户需要的数据发送到终端用户;LVS工作模式分为NAT模式、TUN模式、以及DR模式。

2. 体系结构

lvs负载均衡
  使用LVS架设的服务器集群系统有三个部分组成;最前端的负载均衡层(Loader Balancer) ;中间的服务器群组层;用Server Array表示;最底层的数据共享存储层;用Shared Storage表示。在用户看来所有的应用都是透明的;用户只是在使用一个虚拟服务器提供的高性能服务。
  Load Balancer层;位于整个集群系统的最前端;有一台或者多台负载调度器;Director Server;组成;LVS模块就安装在Director Server上;而Director的主要作用类似于一个路由器;它含有完成LVS功能所设定的路由表;通过这些路由表把用户的请求分发给Server Array层的应用服务器;Real Server;上。同时;在Director Server上还要安装对Real Server服务的监控模块Ldirectord;此模块用于监测各个Real Server服务的健康状况。在Real Server不可用时把它从LVS路由表中剔除;恢复时重新加入。
  Server Array层;由一组实际运行应用服务的机器组成;Real Server可以是WEB服务器、MAIL服务器、FTP服务器、DNS服务器、视频服务器中的一个或者多个;每个Real Server之间通过高速的LAN或分布在各地的WAN相连接。在实际的应用中;Director Server也可以同时兼任Real Server的角色。
  Shared Storage层;是为所有Real Server提供共享存储空间和内容一致性的存储区域;在物理上;一般有磁盘阵列设备组成;为了提供内容的一致性;一般可以通过NFS网络文件系统共享数据;但是NFS在繁忙的业务系统中;性能并不是很好;此时可以采用集群文件系统;例如Red hat的GFS文件系统;Oracle提供的OCFS2文件系统等。

  从整个LVS结构可以看出;Director Server是整个LVS的核心;目前;用于Director Server的操作系统只能是Linux和FreeBSD;linux2.6内核不用任何设置就可以支持LVS功能;而FreeBSD作为 Director Server的应用还不是很多;性能也不是很好。对于Real Server;几乎可以是所有的系统平台;Linux、windows、Solaris、AIX、BSD系列都能很好的支持。

3. LVS管理工具

3.1 ipvs

ipvs;内核中的协议栈上实
ipvs是LVS软件核心;是允许在LB;负载均衡层;上;这是个基于ip层的负载均衡
ipvs的总体结构主要有ip包处理;负载均衡算法;系统配置和管理三个模块以及虚拟服务器与真实服务器链表组成。
ipvs管理集群服务管理服务上的RS(real server)。
一个ipvs主机可以同时定义多个cluster server;但可能会影响调度性格。
一个ipvs服务至少应该有一个RS。

3.2 ipvsadm

ipvsadm;用户空间的命令行工具;用于管理集群服务器
-A   添加一个集群服务
-E   修改已添加的集群服务
-D   删除虚拟服务
-C   清空整个表
-R   从标准输入重载
-S   保存值到标准输出
-a   向指定的client server中添加real server
-e   修改RS
-d   删除真实服务
-L/-l  列出表
-t    服务器地址是host[:port];tcp协议
-u   服务器地址是host[:port];udp协议
-r    服务器地址主机和端口;只支持端口映射的LVS类型才允许此处使用和集群服务中的不同端口
-g dr;direct routing;  ;default;模式
-i   tun模式
-m   nat模式
-w   实际服务器容器;指定权重
-n   数字格式显示ip和port;注意-n只能写在-L之后

ipvsadm核心功能

ipvsadm核心功能
集群服务管理;增、删、改
集群服务的RS管理;增、删、改
查看
语法;
ipvsadm  -A -t ip:port -s rr
ipvsadm  -a  -t  ip:port  -r   ip:port  -g/m/i

Ipvsadm -Ln

保存;
建议保存在/etc/sysconfig/ipvsadm
ipvsadm-save > /etc/sysconfig/ipvsadm
ipvsadm -Sn > /etc/sysconfig/ipvsadm

重载
ipvsadm -R < /etc/sysconfig/ipvsadm
systemctl  restart  ipvsadm

4. LVS工作模式及原理

4.1 NAT模式;

通过网络地址转换实现的虚拟服务器
大并发访问时;调度器的性能成为瓶颈

NAT模式原理;
这个是通过网络地址转换的方法来实现调度的。首先调度器(LB)接收到客户的请求数据包时;请求的目的IP为VIP;;根据调度算法决定将请求发送给哪个后端的真实服务器;RS;。然后调度就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址;RIP;,这样真实服务器;RS;就能够接收到客户的请求数据包了。真实服务器响应完请求后;查看默认路由;NAT模式下我们需要把RS的默认路由设置为LB服务器。;把响应后的数据包发送给LB,LB再接收到响应包后;把包的源地址改成虚拟地址;VIP;然后发送回给客户端。

注意事项;

在NAT模式中;Real Server的网关必须指向LVS;否则报文无法送达客户端

特点;

1、NAT 技术将请求的报文和响应的报文都需要通过 LB 进行地址改写;因此网站访问量比较大的时候 LB 负载均衡调度器有比较大的瓶颈;一般要求最多只能 10-20 台节点
2、只需要在 LB 上配置一个公网 IP 地址就可以了。
3、每台内部的 realserver 服务器的网关地址必须是调度器 LB 的内网地址。
4、NAT 模式支持对 IP 地址和端口进行转换。即用户请求的端口和真实服务器的端口可以不一致。

NAT模式的优缺点;

优点;集群中的物理服务器可以使用任何支持TCP/IP操作系统;只有负载均衡器需要一个合法的IP地址
缺点;扩展性有限。当服务器节点;普通PC服务器;增长过多时,负载均衡器将成为整个系统的瓶颈;因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时;大量的数据包都交汇在负载均衡器那;速度就会变慢;

4.2 DR模式:

直接使用路由技术实现虚拟服务器
节点服务器需要配置VIP;注意MAC地址广播

DR模式原理;
DR模式是通过改写请求报文的目标MAC地址;将请求发给真实服务器的;而真实服务器响应后的处理结果直接返回给客户端用户。同TUN模式一样;DR模式可以极大的提高集群系统的伸缩性。而且DR模式没有IP隧道的开销;对集群中的真实服务器也没有必要必须支持IP隧道协议的要求。但是要求调度器LB与真实服务器RS都有一块网卡连接到同一物理网段上;必须在同一个局域网环境。
lvs负载均衡
1、客户端将请求发往前端的负载均衡器;请求报文源地址是CIP;目标地址为VIP。
2、负载均衡器收到报文后;发现请求的是在规则里面存在的地址;那么它将客户端请求报文的源MAC地址改为自己DIP的MAC地址;目标MAC改为了RIP的MAC地址;并将此包发送给RS
3、RS发现请求报文中的目的MAC是自己;就会将此报文接收下来;处理完请求报文后;将响应报文通过lo接口送给eth0网卡直接发送给客户端

注意事项;

需要设置lo接口的VIP不能响应本地网络内的arp请求;这个IP就直接设置为32位的网络位即可。

4.3 TUN模式:

通过隧道方式实现虚拟服务

TUN模式原理;
LVS/TUN的工作流程图如下所示;它和NAT模式不同的是;它在LB和RS之间的传输不用改写IP地址。而是把客户请求包封装在一个IP tunnel里面;然后发送给RS节点服务器;节点服务器接收到之后解开IP tunnel后;进行响应处理。并且直接把包通过自己的外网地址发送给客户不用经过LB服务器
lvs负载均衡
1、客户端将请求发往前端的负载均衡器;请求报文源地址是CIP;目标地址为VIP。
2、负载均衡器收到报文后;发现请求的是在规则里面存在的地址;那么它将在客户端请求报文的首部再封装一层IP报文,将源地址改为DIP;目标地址改为RIP,并将此包发送给RS。
3、RS收到请求报文后;会首先拆开第一层封装,然后发现里面还有一层IP首部的目标地址是自己lo接口上的VIP;所以会处理此请求报文;并将响应报文通过lo接口送给eth0网卡直接发送给客户端
TUN模式的优缺点;

优点;负载均衡器只负责将请求包分发给后端节点服务器;而RS将应答包直接发给用户。所以;减少了负载均衡器的大量数据流动;负载均衡器不再是系统的瓶颈;就能处理很巨大的请求量;这种方式;一台负载均衡器能够为很多RS进行分发。而且跑在公网上就能进行不同地域的分发。
缺点;隧道模式的RS节点需要合法IP;这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议;服务器可能只局限在部分Linux系统上。

5. LVS调度算法

5.1 静态调度算法;4种;;

1、轮询调度rr
均等的对待每一台服务器;不管服务器上的实际连接数和系统负载
2、加权论调wrr
调度器可以自动问询真实服务器的负载情况;并动态调整权值

3、源地址散列调度算法 sh
与目标地址散列调度算法类似;但它是根据源地址散列算法进行静态分配固定的服务器资源。

4、目标地址散列调度算法 dh
该算法是根据目标 IP 地址通过散列函数将目标 IP 与服务器建立映射关系;出现服务器不可用或负载过高的情况下;发往该目标 IP 的请求会固定发给该服务器。

5.2 动态调度算法;6种;

5、最少链接 lc
动态地将网络请求调度到已建立的连接数最少的服务器上
如果集群真实的服务器具有相近的系统性能;采用该算法可以较好的实现负载均衡
6、 加权最少链接 wlc
调度器可以自动问询真实服务器的负载情况;并动态调整权值
带权重的谁不干活就给谁分配;机器配置好的权重高
7、 基于局部性的最少连接调度算法 lblc
这个算法是请求数据包的目标 IP 地址的一种调度算法;该算法先根据请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器;如果这台服务器依然可用;并且有能力处理该请求;调度器会尽量选择相同的服务器;否则会继续选择其它可行的服务器
8、 复杂的基于局部性最少的连接算法 lblcr
记录的不是要给目标 IP 与一台服务器之间的连接记录;它会维护一个目标 IP 到一组服务器之间的映射关系;防止单点服务器负载过高。
9、 最少期望延迟 sed
不考虑非活动链接;谁的权重大;优先选择权重大的服务器来接收请求;但权重大的机器会比较忙
10、 永不排队 nq
无需队列;如果有realserver的连接数为0就直接分配过去

6. 配置lvs-nat模式的httpd负载集群—http

7. 配置lvs-dr模式的httpd负载集群—https

8. 配置lvs-tun模式的httpd负载集群—https

加载全部内容

相关教程
猜你喜欢
用户评论
快盘暂不提供评论功能!