基于linux下lvs之NAT模型的架构
Virtual server via NAT(VS-NAT)
优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,物理服务器可以分配Internet的保留私有地址,只有负载均衡器需要一个合法的IP地址。
缺点:扩展性有限。当服务器节点(普通PC服务器)数据增长到20个或更多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包都需要经过负载均衡器再生。假使TCP包的平均长度是536字节的话,平均包再生延迟时间大约为60us(在Pentium处理器上计算的,采用更快的处理器将使得这个延迟时间变短),负载均衡器的最大容许能力为8.93M/s,假定每台物理服务器的平台容许能力为400K/s来计算,负责均衡器能为22台物理服务器计算。
解决办法:即使是是负载均衡器成为整个系统的瓶颈,如果是这样也有两种方法来解决它。一种是混合处理,另一种是采用Virtual Server via IP tunneling或Virtual Server via direct routing。如果采用混合处理的方法,将需要许多同属单一的RR DNS域。你采用Virtual Server via IP tunneling或Virtual Server via direct routing以获得更好的可扩展性。也可以嵌套使用负载均衡器,在最前端的是VS-Tunneling或VS-Drouting的负载均衡器,然后后面采用VS-NAT的负载均衡器。
LVS-NAT模型实现负载均衡的工作方式
NAT模型其实就是通过网络地址转换来实现负载均衡的,它的工作方式几乎跟DNAT一 模一样的,目前的DNAT只能转发到一个目标地址,早期的DNAT是可以将请求转发到多个目标的,在LVS出现之后就将此功能从DNAT种去掉了,下面来 说说NAT模型的工作方式或者说NAT模型是怎么实现负载均衡的,根据上图,
1.用户请求VIP(也可以说是CIP请求VIP)
2,Director Server 收到用户的请求后,发现源地址为CIP请求的目标地址为VIP,那么Director Server会认为用户请求的是一个集群服务,那么Director Server 会根据此前设定好的调度算法将用户请求负载给某台Real Server ;假如说此时Director Server 根据调度算法的结果会将请求分摊到RealServer1上去,那么Director Server 会将用户的请求报文中的目标地址,从原来的VIP改为RealServer1的IP,然后再转发给RealServer1
3,此时RealServer1收到一个源地址为CIP目标地址为自己的请求,那么RealServer1处理好请求后会将一个源地址为自己目标地址为CIP的数据包通过Director Server 发出去,
4.当Driector Server收到一个源地址为RealServer1 的IP 目标地址为CIP的数据包,此时Driector Server 会将源地址修改为VIP,然后再将数据包发送给用户,
实验环境:
物理机: 172.25.254.55 192.168.55.1
Server1:LVS服务器(DIP)172.25.254.1 (VIP)192.168.55.2
server2:172.25.254.2
server3: 172.25.254.3
Server1:
[[email protected] ~]# yum install ipvsadm -y //安装服务
[[email protected] ~]# ip addr add 192.168.55.2/24 dev eth1 /VIP
[[email protected] ~]# ip addr //查看
[[email protected] ~]# vim /etc/sysctl.conf //开启本地路由转发
Net.ipv4.ip_forward = 1
[[email protected] ~]# sysctl -p //重新加载
Server2:
[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
添加GETEWAY=172.25.254.1 //网关为server1的ip
[[email protected] ~]# /etc/init.d/network restart //重启网络
[[email protected] ~]# /etc/init.d/httpd start //开启apache
[[email protected] ~]# vim /var/www/html/index.html
bbs.westos.org
Server3
[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
添加GETEWAY=172.25.254.1 //网关为server1的ip
[[email protected] ~]# /etc/init.d/network restart //重启网络
[[email protected] ~]# /etc/init.d/httpd start //开启apache
vim /var/www/html/index.html
www.westos.org-----server3
[[email protected] ~]# netstat -antle //查看监听端口
Server1:
Server1 172.25.26.1 172.25.26.100(vip)
[[email protected] ~]# ipvsadm -A -t 192.168.55.2:80 -s rr
[[email protected] ~]# ipvsadm -a -t 192.168.55.2:80 -r 172.25.254.2 -m 1 (-m nat)
[[email protected] ~]# ipvsadm -a -t 192.168.55.2:80 -r 172.25.254.3 -m 2
[[email protected] ~]# ipvsadm -ln
物理机:172.25.254.55 196.168.55.1
[[email protected] ~]# curl 192.168.55.2
bbs.westos.org
[[email protected] ~]# curl 192.168.55.2
www.westos.com -server2