LVS共有三种模式,优缺点比较如下:
NAT模式
优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,物理服务器可以分配Internet的保留私有地址,只有负载均衡器需要一个合法的IP地址。
不足:扩展性有限。当服务器节点(普通PC服务器)数据增长到20个或更多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包都需要经过负载均衡器再生。假使TCP包的平均长度是536字节的话,平均包再生延迟时间大约为60us(在Pentium处理器上计算的,采用更快的处理器将使得这个延迟时间变短),负载均衡器的最大容许能力为8.93M/s,假定每台物理服务器的平台容许能力为400K/s来计算,负责均衡器能为22台物理服务器计算。
TUN模式
我们发现,许多Internet服务(例如WEB服务器)的请求包很短小,而应答包通常很大。
优点:负载均衡器只负责将请求包分发给物理服务器,而物理服务器将应答包直接发给用户。所以,负载均衡器能处理很巨大的请求量,这种方式,一台负载均衡能为超过100台的物理服务器服务,负载均衡器不再是系统的瓶颈。使用VS-TUN方式,如果你的负载均衡器拥有100M的全双工网卡的话,就能使得整个Virtual Server能达到1G的吞吐量。
不足:但是,这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议,我仅在Linux系统上实现了这个,如果你能让其它操作系统支持,还在探索之中。
DR模式
优点:和VS-TUN一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器,其中包括:Linux 2.0.36、2.2.9、2.2.10、2.2.12;Solaris 2.5.1、2.6、2.7;FreeBSD 3.1、3.2、3.3;NT4.0无需打补丁;IRIX 6.5;HPUX11等。
不足:要求负载均衡器的网卡必须与物理网卡在一个物理段上
NAT模式
优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,物理服务器可以分配Internet的保留私有地址,只有负载均衡器需要一个合法的IP地址。
不足:扩展性有限。当服务器节点(普通PC服务器)数据增长到20个或更多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包都需要经过负载均衡器再生。假使TCP包的平均长度是536字节的话,平均包再生延迟时间大约为60us(在Pentium处理器上计算的,采用更快的处理器将使得这个延迟时间变短),负载均衡器的最大容许能力为8.93M/s,假定每台物理服务器的平台容许能力为400K/s来计算,负责均衡器能为22台物理服务器计算。
TUN模式
我们发现,许多Internet服务(例如WEB服务器)的请求包很短小,而应答包通常很大。
优点:负载均衡器只负责将请求包分发给物理服务器,而物理服务器将应答包直接发给用户。所以,负载均衡器能处理很巨大的请求量,这种方式,一台负载均衡能为超过100台的物理服务器服务,负载均衡器不再是系统的瓶颈。使用VS-TUN方式,如果你的负载均衡器拥有100M的全双工网卡的话,就能使得整个Virtual Server能达到1G的吞吐量。
不足:但是,这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议,我仅在Linux系统上实现了这个,如果你能让其它操作系统支持,还在探索之中。
DR模式
优点:和VS-TUN一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器,其中包括:Linux 2.0.36、2.2.9、2.2.10、2.2.12;Solaris 2.5.1、2.6、2.7;FreeBSD 3.1、3.2、3.3;NT4.0无需打补丁;IRIX 6.5;HPUX11等。
不足:要求负载均衡器的网卡必须与物理网卡在一个物理段上
管理集群服务:ipvsadm -A|E -t|u|f service-address [-s scheduler]
-A:添加集群服务
-E:修改集群服务
-t:承载的应用层协议为基于TCP协议提供服务的协议;其server-address的格式为“VIP:PORT”,如“172.16.4.100:80”;
-u:承载的应用层协议为基于UDP协议提供服务的协议;其server-address的格式为“VIP:PORT”,如“172.16.4.100:53”;
-f:承载的应用层协议为基于TCP或UDP协议提供服务的协议,但此类报文会经由iptables/netfilter打标记,即防火墙标记,其server-address的格式为“FWM”,例如“10”;
-sscheduler:指明调度方法,默认为wlc;
删除:ipvsadm –D –t|u|f server-address
管理集群服务的RS:ipvsadm -a|e -t|u|f service-address-r server-address [-g|i|m] [-w weight]
添加或修改:
-r server-address:指明RS,server-address格式一般为“IP[:PORT:]”:注意,只支持端口映射的lvs类型才应该显示定义此处端口。
[-g|i|m]:指明lvs类型
-g:dr类型
-i:tun类型
-m:nat类型
[-w weight]:当前RS的权重;
注意:仅对于支持加权调度的scheduler,权重才有意义;
删除:
ipvsadm -d -t|u|f service-address -r server-address
清空所有集群服务的定义:
ipvsadm –c
保存及恢复集群服务及RS的定义:
ipvsadm -S > /etc/sysconfig/ipvsadm
ipvsadm-save > /etc/sysconfig/ipvsadm
service ipvsadm save
ipvsadm -R < /etc/sysconfig/ipvsadm
ipvsadm-restore < /etc/sysconfig/ipvsadm
service ipvsadm restart
查看规则:ipvsadm-L|l [options]
-c:列出当前所有connection;
1 2 3 4 |
|
输出说明:
pro:使用的协议
expire:连接过期时间
state:连接状态
source:客户端地址
virtual:vip地址
destination:响应客户端的RS服务器地址
--stats:列出统计数据:
1 2 3 4 5 6 7 |
|
输出说明:
Conns:连接数
InPkts:入站报文
OutPkts: 出战响应
InBytes:入站字节数
OutBytes:出战字节数
说明:如果地址是vip地址,则是总数;如果是RS地址,则是direction分配给vip的数据。
--rate: 列出速率
1 2 3 4 5 6 7 |
|
输出说明:
CPS:每秒钟连接数
InPPS:每秒钟入站报文数
OutPPS:每秒钟出战报文数
InBPS:每秒钟入站字节大小
OutBPS:每秒钟出战字节大小
-n, --numeric: 数字格式显示IP及端口;
1 2 3 4 5 6 7 |
|
输出说明:
Weight:权重
ActiveConn:活动连接
InActConn:非活动连接
--exact: 精确值;
1 2 3 4 5 6 7 |
|
清空计数器:及速率统计和连接信息等都会为0
ipvsadm-Z [-t|u|f service-address]
配置拓扑:
拓扑说明:
主机名 |
系统环境 |
IP地址 |
|
调度器 |
LVS |
Centos6.6 64位 |
外网:eth0 172.16.4.100 内网:eth1 192.168.1.1 |
WEB-01 |
WEB-01 |
内网:eth0 192.168.1.10 |
|
WEB-02 |
WEB-02 |
内网:eth0 192.168.1.11 |
配置以前注意事项说明:
1、RS的网关必须指向Director
2、director需要开启路由转发功能
WEB-01和WEB-02最好准备不同的页面,一遍测试负载均衡效果。
1 2 3 4 |
|
确保调度器可以访问web测试
1 2 3 4 |
|
启动路由转发功能
1 2 3 4 |
|
设置ipvsadm策略
1 2 3 |
|
验证集群:访问为结果web-01,刷新出现web-02,说明实现了负载均衡功能
查看ipvsadm也出现了连接
1 2 3 4 5 6 7 |
|
环境拓扑:
环境描述:
主机名 |
系统环境 |
IP地址 |
|
调度器 |
LVS |
Centos6.6 64位 |
外网:eth0 172.16.4.100 VIP: eth0:0 172.16.4.1 |
WEB-01 |
WEB-01 |
外网:eth0 172.16.4.101 VIP: eth0:0 172.16.4.1 |
|
WEB-02 |
WEB-02 |
外网:eth0 172.16.4.102 VIP: eth0:0 172.16.4.1 |
说明:WEB-01和WEB-02除了网页内容不一样(生产环境网页内容必须一样)之外,其他的都一样。
设置web页面
1 2 |
|
设置内核参数,抑制ARP
1 2 3 4 |
|
设置vip地址
1 2 3 4 |
|
设置路由
1 |
|
设置web页面
1 2 |
|
设置内核参数
1 2 3 4 |
|
设置VIP
1 2 3 4 5 |
|
设置路由
1 |
|
确保lvs可以访问后端web服务器
1 2 3 4 |
|
设置vip地址
1 2 3 4 5 |
|
配置负载均衡策略
1 2 3 |
|
客户端访问验证,持续刷新如果出现轮训效果说明配置成功
httpd启动长连接的方式。
1 2 3 |
|
启动之后,客户端请求通过lvs调度到后端的RS服务器,会始终调度到一个页面,直到长连接结束,rr的调度算法在这种情况下是不会实现轮训的。
Direction使用的脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
|
RS使用的脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|