标签:
一、LVS概述
LVS是Linux Virtual Server的简称,也叫Linux虚拟服务器,是一个由章文嵩教授主持开展的开源项目,官方站点为www.linuxvirtualserver.org。现在LVS已经是Linux内核的一部分,不需要编译内核。但在Linux2.4之前,要使用LVS需要将ipvs编译进内核才能使用。
LVS提供的负载均衡技术和Linux操作系统实现了一个高性能的服务器集群,有良好的扩展性、可靠性和可操作性,极大地减轻了后台服务器的压力。
LVS只要由三个部分组成:调度器、后台服务器池、共享数据库
负载均衡调度器:主要负责将请求分发到后台的服务器上。
后台服务器池(RealServer):用于向客户提供需要的服务,例如WWW服务、Cache服务、DNS服务、FTP服务、MAIL服务、视频/音频点播服务等等。
共享数据库:提供数据存储
二、LVS支持的四种模型
原生的LVS支持NAT,DR,TUN三种,但是近几年又出现了FULL-NAT模型,对NAT模型进一步改善。
NAT:地址转换
DR:直接路由模式
TUN:隧道模式
FULL-NAT:完全地址转换
NAT模型:
NAT模型是在入站时做了一次DNAT将请求转发至后台主机,出站时做了一次SNAT,该方式主要用于结合F5防DDOS攻击。
DR模型:
DR的性能是所有模式中最高的,它只需要修改目的MAC;但部署上必须要求LVS和后端服务器在同一个VLAN中。
TUN模型:
TUN是在原来IP头部再新增封装一个IP。进来时通过调度器,出去时直接返回客户端。
FULLNAT模型:
FULLNAT是在NAT模式上做了一次改进,加入了一个内网IP(lip)。cip-vip转换为lip->rip,而 lip和rip均为IDC内网ip,可以跨vlan通讯。
NAT:
① director与集群节点必须在同一个IP网络中;
② RIP通常是私有地址,仅用于各集群节点通信;
③ director位于client与real server之间,并负责处理进出的所有通信;
④ real server必须将网关指向DIP;
⑤ 支持端口映射;
⑥ real server可使用任意操作系统;
⑦ 大规模应用中director可能易成为系统瓶颈。
DR:
① 集群节点必须和director在同一个物理网络中;
② RIP可以使用公网地址,实现便捷的远程管理和监控;
③ director仅负责处理入站请求,响应报文则由realserver直接发往客户端;
④ realserver不能将网关指向DIP;
⑤ 不支持端口映射;
TUN:
① 集群节点可以跨越互联网;
② RIP必须是公网地址;
③ director仅负责处理入站请求,响应报文则由realserver直接发往客户端;
④ realserver网关不能指向director;
⑤ 只有支持隧道功能的os才能用于realserver;
⑥ 不支持端口映射。
FULLNAT:
① director与集群节点可以跨VLAN通讯;
② director位于client与real server之间,并负责处理进出的所有通信;
③ 通过在TCP Option中加入cip,将cip传给realserver
三、LVS支持的十种调度算法
调度算法分为静态和动态:
静态:固定不变的转发请求,仅仅依据算法本身。
rr:轮叫,轮询,依次轮流的向后台主机转发请求。
wrr:加权轮询,根据每台主机的权重依次轮流 。
sh:source hashing,源地址散列。主要实现会话绑定,能够将此前建立的session信息保留了,将源IP作为散列键
dh:destination hashing:目标地址散列。把同一个IP地址的请求,发送给同一个RealServer,将目标IP作为散列键
动态:依据后台服务器的状态动态的转发请求
lc:最少连接
active*256+inactive挑小的
wlc:加权最少连接
(active*256+inactive)/weight挑小的
sed:最短期望延迟
(active+1*256)/weight
nq:never queue永不排队(改进的sed)无需队列,如果有台realserver的连接数=0就直接分配过去,不需要在进行sed运算。
LBLC:基于本地的最少连接
基于局部性的最少连接调度算法根据请求的目标IP地址找出该目标IP地址最近使用的RealServer,若该Real Server是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器
LBLCR:带复制的基于本地的最少连接
带复制的基于局部性最少链接调度算法也是针对目标IP地址的负载均衡,该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。
四、LVS的相关配置
LVS的配置主要分为两部分:
ipvs:内核模块,只对定义为集群的服务进行转发
ipvsadm:用户空间管理集群服务的命令行工具
ipvsadm
管理集群服务
添加: -A -t|u|f service-address [-s schedule] -p timeout
-t:TCP协议的集群
-u:UDP协议的集群
service-address: IP:PORT #端口映射
-f:防火墙标记
service-address:Mark Number
-p timeout:持久连接。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。
修改:-E -t|u|f service-address [-s schedule]
删除:-D -t|u|f service-address
#ipvsadm -A -t 172.16.100.2:80 -s rr
管理集群服务中的RS
添加:-a -t|u|f service-address -r server-address [-g|i|m] [-w weight]
-t|u|f service-address 实现定义好的集群服务
-r service-address:某RS的地址,在NAT模型中,可以使用IP:PORT端口映射
[g|i|m]
g:DR
i:TUN
m:NAT
[w weight]:定义权重
修改:-e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
删除:-d -t|u|f service-address -r server-address
#ipvsadm -a -t 172.168.100.2:80 -r 192.168.193.1 -m
#ipvsadm -a -t 172.168.100.2:80 -r 192.168.193.2 -m
查看
-L|l
-n:数字格式显示主机地址和端口
--stats:统计数据
--timeout:显示tcp、tcpfin和udp的会话超时时长
-c:显示当前的ipvs连接状况
删除所有集群服务:
-C:清空ipvs规则
保存ipvs规则
-S
#ipvsadm -S > /path/to/somefile
导入此前的规则
-R
#ipvsadm -R < /path/from/somefile
标签:
原文地址:http://www.cnblogs.com/jdxupt/p/5464405.html