LVS 负载均衡(二)NAT模式

一、规划

<img src="https://www.361way.com/wp-content/uploads/2016/05/lvs-nat.png" title="lvs-nat" alt="lvs-nat" height="385" width="416" />



<br />
#通过模块克隆了三台主机
virt-clone -o centos6 -n lvs-dr -f lvs-dr.img
virt-clone -o centos6 -n lvs01 -f lvs01.img
virt-clone -o centos6 -n lvs02 -f lvs02.img
#三台主机对应的IP信息如下
lvs-dr:172.25.0.10
       192.168.122.100
lvs01:192.168.122.10
lvs02:192.168.122.20

二、lvs-nat配置

1、lvs-dr主机上配置

配置比较简单,这里写了一个简单的脚本,启动即可。内容如下:



<br />
#!/bin/sh
# description: start LVS of Nat
DIP=172.25.0.10
RIP1=192.168.122.10
RIP2=192.168.122.20
GW=192.168.122.100
. /etc/rc.d/init.d/functions
case "$1" in
 start)
     echo " start LVS of NAtServer"
     # 开启路由转发
     echo "1" >/proc/sys/net/ipv4/ip_forward
     # 禁用发送ICMP IPv4重定向消息,默认是开启,值为1
     echo "0" >/proc/sys/net/ipv4/conf/all/send_redirects
     echo "0" >/proc/sys/net/ipv4/conf/default/send_redirects
     echo "0" >/proc/sys/net/ipv4/conf/eth0/send_redirects
     echo "0" >/proc/sys/net/ipv4/conf/eth1/send_redirects(内网卡上的)
     #Clear IPVS table
     /sbin/ipvsadm -C
     #set LVS
     /sbin/ipvsadm -A -t 172.25.0.10:80 -s rr
     /sbin/ipvsadm -a -t 172.25.0.10:80 -r 192.168.122.10:80 -m -w 5
     /sbin/ipvsadm -a -t 172.25.0.10:80 -r 192.168.122.20:80 -m -w 10
     #Run LVS
     /sbin/ipvsadm
     #end
 ;;
 stop)
     echo "close LVS Nat server"
     echo "0" >/proc/sys/net/ipv4/ip_forward
     echo "1" >/proc/sys/net/ipv4/conf/all/send_redirects
     echo "1" >/proc/sys/net/ipv4/conf/default/send_redirects
     echo "1" >/proc/sys/net/ipv4/conf/eth0/send_redirects
     echo "1" >/proc/sys/net/ipv4/conf/eth1/send_redirects(内网卡上的)
     /sbin/ipvsadm -C
 ;;
 *)
    echo "Usage: $0 {start|stop}"
    exit 1
esac 
<strong>注释:</strong>



1、使用NAT模式必须要开启路由转发;



2、禁用发送ICMP ipv4重定向消息主要是出于安全考虑,并不影响ping检测;



3、ipvsadm 这里使用的是Round Robin轮询算法,-m 参数是指定使用的masquerading nat模式,-w 参数是指定权重,<span style="color:#E53333;">在 rr算法下,指定权重是没意义的</span>,因为两台主机的的权重是一样的,每台主机都是公平平均轮询的。

2、lvs01与02主机配置

<span style="color:#E53333;">两台主机上需要将默认网关指向到同网段的lvs-dr主机IP</span>,在本示例中,需要指定网关为192.168.122.100,两台主机上可通过如下命令增加



<br />
route add default gw 192.168.122.100
也可以在主机的网卡配置文件中直接指定。

3、测试

在两台主机上分别安装httpd服务并指定一个简单的页面,可通过curl 获取页面测试,具体如下:



<br />
[root@lvs-dr ~]# curl http://172.25.0.10
lvs01 host!
[root@lvs-dr ~]# curl http://172.25.0.10
lvs02 host!
[root@lvs-dr ~]# curl http://172.25.0.10
lvs01 host!
[root@lvs-dr ~]# curl http://172.25.0.10
lvs02 host!
通过ipvsadm命令直接修改对应的算法后再进行测试如下;



<br />
修改lvs算法为wrr
[root@lvs-dr ~]# /sbin/ipvsadm -E  -t 172.25.0.10:80 -s wrr
测试结果如下:
[root@lvs-dr ~]# curl http://172.25.0.10
lvs02 host!
[root@lvs-dr ~]# curl http://172.25.0.10
lvs02 host!
[root@lvs-dr ~]# curl http://172.25.0.10
lvs01 host!
[root@lvs-dr ~]# curl http://172.25.0.10
lvs02 host!
……………省略
也可以用ipvsadm确认当前连接情况:



<br />
[root@lvs-dr ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.0.10:80 wrr
  -> 192.168.122.10:80            Masq    5      0          0
  -> 192.168.122.20:80            Masq    10     0          2
<br />

4、配置保存

通过ipvsadm服务可以将当前的配置保存,默认保存在/etc/sysconfig/ipvsadm,主机开机自启动ipvsadm服务时会自动读取该文件:



<br />
[root@lvs-dr ~]# /etc/init.d/ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [  OK  ]
还有一个命令ipvsadm-save命令可以将当前配置输出,可以通过重定向输出到指定文件,这有点类似于iptables 服务与iptables-save命令。

三、总结

优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,物理服务器可以分配Internet的保留私有地址,只有负载均衡器需要一个合法的IP地址。



缺点:扩展性有限。当服务器节点(普通PC服务器)数据增长到20个或更多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包都需要经过负载均衡器再生。假使TCP包的平均长度是536字节的话,平均包再生延迟时间大约为60us(在Pentium处理器上计算的,采用更快的处理器将使得这个延迟时间变短),负载均衡器的最大容许能力为8.93M/s,假定每台物理服务器的平台容许能力为400K/s来计算,负责均衡器能为22台物理服务器计算。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注