LVS-Libra博客
LVS负载均衡详解工作模式介绍:
工作模式是配置在:real server 上
1.Virtualserver via NAT(VS-NAT) -m
优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,物理服务器可以分配Internet的保留私有地址,只有负载均衡器需要一个合法的IP地址。
缺点:扩展性有限。当服务器节点(普通PC服务器)数据增长到20个或更多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包都需要经过负载均衡器再生。假使TCP包的平均长度是536字节的话,平均包再生延迟时间大约为60us(在Pentium处理器上计算的,采用更快的处理器将使得这个延迟时间变短),负载均衡器的最大容许能力为8.93M/s,假定每台物理服务器的平台容许能力为400K/s来计算,负责均衡器能为22台物理服务器计算。
解决办法:即使是是负载均衡器成为整个系统的瓶颈,如果是这样也有两种方法来解决它。一种是混合处理,另一种是采用Virtual Server via IP tunneling或VirtualServer via direct routing。如果采用混合处理的方法,将需要许多同属单一的RR DNS域。你采用Virtual Server via IP tunneling或VirtualServer via direct routing以获得更好的可扩展性。也可以嵌套使用负载均衡器,在最前端的是VS-Tunneling或VS-Drouting的负载均衡器,然后后面采用VS-NAT的负载均衡器。
2.Virtualserver via IP tunneling(VS-TUN) -i
我们发现,许多Internet服务(例如WEB服务器)的请求包很短小,而应答包通常很大。
优点:负载均衡器只负责将请求包分发给物理服务器,而物理服务器将应答包直接发给用户。所以,负载均衡器能处理很巨大的请求量,这种方式,一台负载均衡能为超过100台的物理服务器服务,负载均衡器不再是系统的瓶颈。使用VS-TUN方式,如果你的负载均衡器拥有100M的全双工网卡的话,就能使得整个Virtual Server能达到1G的吞吐量。
缺点:但是,这种方式需要所有的服务器支持"IP Tunneling"(IPEncapsulation)协议,我仅在Linux系统上实现了这个,如果你能让其它操作系统支持,还在探索之中。
3.VirtualServer via Direct Routing(VS-DR) 常用-g
优点:和VS-TUN一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器,其中包括:Linux、Solaris 、FreeBSD、windows、IRIX 6.5;HPUX11等。
不足:要求负载均衡器的网卡必须与物理网卡在一个物理段上。
三种IP负载均衡技术的优缺点比较:
杂项 VS/NAT VS/TUN VS/DR
服务器操作系统 任意 支持隧道 多数(支持Non-arp )
服务器网络 私有网络 局域网/广域网 局域网
服务器数目(100M网络) 10-20 100 多(100)
服务器网关 负载均衡器 自己的路由 自己的路由
效率 一般 高 最高
http://s3.运维网.com/wyfs02/M01/72/AA/wKiom1Xqr7nwbCaLAAERVDIuRIQ282.jpg
管理集群服务中的RS
添加:-a-t|u|f service-address -rserver-address [-g|i|m] [-w weight]
-t|u|f service-address:事先定义好的某集群服务
-t:TCP协议的集群
-u: UDP协议的集群
-f:FWM: 防火墙标记
-r server-address: 某RS的地址,在NAT模型中,可使用IP:PORT实现端口映射;
[-g|i|m]:LVS类型
-g:DR
-i:TUN
-m:NAT
[-wweight]: 定义服务器权重
修改:-e
删除:-d -t|u|fservice-address -r server-address
配置DR模型
#ipvsadm -a -t 192.168.10.120:80 -r 192.168.10.243 -g-w [权重数]
#Route add –host 192.168.10.120 dev lo:0
#ipvsadm -a -t 172.168.10.120:80 -r 192.168.10.244 –g
#Route add –host 192.168.10.120 dev lo:0
查看
-L|l
-n:数字格式显示主机地址和端口
--stats:统计数据
--rate:速率
--timeout:显示tcp、tcpfin和udp的会话超时时长
-c:显示当前的ipvs连接状况
删除所有集群服务
-C:清空ipvs规则
保存规则
-S
#ipvsadm -S > /path/to/somefile
载入此前的规则:
-R
#ipvsadm -R < /path/form/somefile
调度算法介绍:
调度算法是配置在:Director上的
类型
算法
说明
静态方法
RR
round-robin, 轮询;
WRR
weighted round-robin, 加权轮询;Overhead=conn/weight
SH
Source ip Hashing,源地址哈希;把来自同一个地址请求,统统定向至此前选定的RS;
DH
Destination ip Hashing, 目标地址哈希;把访问同一个目标地址的请求,统统定向至此前选定的某RS;
动态方法
LC
least connection:最小连接,Overhead=Active*256+Inactive
WLC
weighted least connection:加权最小连接,Overhead=(Active*256+Inactive)/weight;默认的调度算法(权重越大连接数越多)
SED
Shorted Expection Delay:最短期望延迟,Overhead=(Active+1)*256/weight
NQ
Never Queue:永不排序
LBLC
Local-Based Least Connection,基于本地的最小连接:动态方式的DH算法
LBLCR
Replicated LBLC:带复制的LBLCR
实例命令:
配置Director 上的调速算法和添加Director主机
添加集群服务,这里使用rr(轮询)调度算法 默认是WLC算法
ipvsadm -A -t 192.168.10.120:80 -s rr
http://s3.运维网.com/wyfs02/M02/72/AA/wKiom1Xqr-DDtfrxAAD_GJEQedM471.jpg
1.1DR模式
图中1.1,客户端发送的请求会由路由器和交换机转发后直接达到director。再由director调度给指定的real server ,最后由real server直接响应给客户端而不经过director,在此架构中director和real server的网络架构是此类型的重点。所以,配置DR类型一定要注意以下两点:
(1) 各RS要直接响应Client,因此,各RS均得配置VIP;但仅能够让Director上的VIP能够与本地路由直接通信;
(2) Director不会拆除或修改请求报文的IP首部,而是通过封闭新的帧首部(源MAC为Director的MAC,目标MAC为挑选出的RS的MAC)完成调度。
要完成上述的要求,着实很难,因为RS和DR都有VIP,而请求进入时必须最先发送给DR,所以,在DR类型中,首先通过ARP广播确认DR主机,其他RS主机不响应,这就确定了哪一个是DR主机。
默认方法:wlc
ipvsadm:
管理集群服务Director:
添加:-A -t|u|fservice-address [-s scheduler]
-t:TCP协议的集群
-u:UDP协议的集群
-s: 使用的调度算法:
有这样几个选项 rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,
默认的调度算法是: wlc
service-address: IP:PORT
-f:FWM: 防火墙标记
service-address:Mark Number
修改:-E
删除:-D -t|u|fservice-address
#ipvsadm -A -t 172.16.10.120:80 -s rr
但是在linux主机中,IP地址不属于网卡而是属于内核,就是说无论一个linux主机有多少个IP地址,它在接入的各个网络中都会公布它拥有的所有地址,这就给ARP广播的响应制造了困难,所以就需要修改内核参数来保证router发出ARP广播时,DR会响应RS不予响应,这里所说的内核参数分别为:
#arp_announce:定义arp通知级别;
0:默认级别,在各个网络中通告本机所含有的所有地址
1:尽量不在各个网络中通告本机中含有的不属于该网络的地址
2:不在各个网络中通告本机中含有的不属于该网络的地址
#arp_ignore:定义arp忽略arp请求或arp通告的级别;
0:(默认值): 回应任何网络接口上对任何本地IP地址的arp查询请求
1:只回答目标IP地址是来访网络接口本地地址的ARP查询请求
2:只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内
3:不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应
4-7:保留未使用
8:不回应所有(本地地址)的arp查询
命令如下:real server 上使用
sysctl -w net.ipv4.conf.eth0.arp_announce=2
sysctl -w net.ipv4.conf.all.arp_announce=2
sysctl -w net.ipv4.conf.eth0.arp_ignore=1
sysctl -w net.ipv4.conf.all.arp_ignore=1
http://s3.运维网.com/wyfs02/M00/72/A6/wKioL1XqsiKT2gsxAAERVDIuRIQ735.jpg
按照此图,配置DR服务步骤:
1、配置Director
# Ifconfigeth0 192.168.10.245 up
# Ifconfig eth0:0 192.168.10.120netmask255.255.255.255 broadcast 192.168.10.120 up
# Routeadd –host 192.168.10.120 deveth0:0
2、配置RealServer
# Ifconfigeth0 192.168.10.243 up
# Ifconfiglo:0 192.168.10.120 netmask 255.255.255.255broadcast 192.168.10.120 up
# Route add –host 192.168.10.120 dev lo:0
sysctl -w net.ipv4.conf.eth0.arp_announce=2
sysctl -w net.ipv4.conf.all.arp_announce=2
sysctl -w net.ipv4.conf.eth0.arp_ignore=1
sysctl -w net.ipv4.conf.all.arp_ignore=1
# Ifconfigeth0 192.168.10.244 up
# Ifconfiglo:0 192.168.10.120 netmask 255.255.255.255broadcast 192.168.10.120 up
# Routeadd –host 192.168.10.120 dev lo:0
sysctl -w net.ipv4.conf.eth0.arp_announce=2
sysctl -w net.ipv4.conf.all.arp_announce=2
sysctl -w net.ipv4.conf.eth0.arp_ignore=1
sysctl -w net.ipv4.conf.all.arp_ignore=1
3、配置调度模式和调度计算机服务类型:
在Director上执行如下命令:
# Ipvsadm –A – t 192.168.10.120:80 –s rr
-A:添加
-t:tcp协议
-s:选择调度模式(rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq, 默认wlc)
# Ipvsadm –a – t 192.168.10.120:80 –r 172.16.50.21 –g –w1
-a: 添加
-t:tcp协议
-r:real server 服务器IP
-g:选择工作模式(-g:DR ; -i:TUN ; -m:NAT)
-w:加权重
# Ipvsadm –a – t 192.168.10.120:80 –r 172.16.50.31 –g –w2
这样就完成了同网段内DR类型的负载均衡配置。
页:
[1]