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等。
不足:要求负载均衡器的网卡必须与物理网卡在一个物理段上
使用LVS搭建基于四层网络模型的负载均衡器 DR模式
命令解释
1 2 3 4 5 6 7 8 9 10 11 12
| rr:轮循 wrr: dh: sh:
动态调度方法: lc: 最少连接 wlc: 加权最少连接 sed: 最短期望延迟 nq: never queue LBLC: 基于本地的最少连接 LBLCR: 基于本地的带复制功能的最少连接
|
:1 2 3 4 5 6 7 8 9 10 11 12
| kernel parameter: 目标mac地址为全F,交换机触发广播 /proc/sys/net/ipv4/conf/*IF*/ arp_ignore: 定义接收到ARP请求时的响应级别; 0:只要本地配置的有相应地址,就给予响应; 1:仅在请求的目标(MAC)地址配置请求 到达的接口上的时候,才给予响应;
arp_announce:定义将自己地址向外通告时的通告级别; 0:将本地任何接口上的任何地址向外通告; 1:试图仅向目标网络通告与其网络匹配的地址; 2:仅向与本地接口上地址匹配的网络进行通告;
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| yum install ipvsadm -y
管理集群服务 添加:-A -t|u|f service-address [-s scheduler] -t: TCP协议的集群 -u: UDP协议的集群 service-address: IP:PORT -f: FWM: 防火墙标记 service-address: Mark Number 修改:-E 删除:-D -t|u|f service-address
ipvsadm -A -t 192.168.9.100:80 -s rr
|
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
| 添加:ipvsadm -a -t|u|f service-address -r server-address [-g|i|m] [-w weight] -t|u|f service-address:事先定义好的某集群服务 -r server-address: 某RS的地址,在NAT模型中,可使用IP:PORT实现端口映射; [-g|i|m]: LVS类型 -g: DR -i: TUN -m: NAT [-w weight]: 定义服务器权重 修改:-e 删除:-d -t|u|f service-address -r server-address # ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.8 –g # ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.9 -g 查看 -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
|
- 拓扑图
- 开始搭建
1.在192.168.150.11 中添加192.168.150.100的网卡
1 2 3 4
| 添加网卡 ifconfig eth0:2 192.168.150.100/24
注意/24代表子网掩码是255.255.255.1
|
删除 eth0:2网卡 ifconfig eth0:2 down
2.调192.168.150.12 和 192.168.150.13的内核协议
1 2 3 4 5
| echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
|
3.配置192.168.150.12 和 192.168.150.13环行路由
1
| ifconfig lo:2 192.168.150.100 netmask 255.255.255.255
|
4.在 192.168.150.12 和 192.168.150.13中安装 httpd
1 2 3
| yum install httpd -y 启动 service httpd start 创建主页vi /var/www/html/index.html
|
5在浏览器中输入192.168.150.12:80测试
6.在192.168.150.11 中安装 ipvsadm
1 2 3 4 5 6 7
| yum install ipvsadm -y 添加进包的规则:ipvsadm -A -t 192.168.150.100:80 -s rr 添加负载的规则: ipvsadm -a -t 192.168.150.100:80 -r 192.168.150.12 -g -w 1 ipvsadm -a -t 192.168.150.100:80 -r 192.168.150.13 -g -w 1
查看规则:ipvsadm -ln
|
7.验证:
1 2 3 4 5 6 7 8 9 10 11
| 浏览器访问 192.168.150.100 看到负载 F5属性 192.168.150.11: netstat -natp 结论看不到socket连接 192.168.150.12~192.168.150.13: netstat -natp 结论看到很多的socket连接 192.168.150.11: ipvsadm -lnc 查看偷窥记录本 TCP 00:57 FIN_WAIT 192.168.150.1:51587 192.168.150.100:80 192.168.150.12:80
FIN_WAIT: 连接过,偷窥了所有的包 SYN_RECV: 基本上lvs都记录了,证明lvs没事,一定是后边网络层出问题
|