LVS 负载均衡(二)NAT模式
一、规划
1#通过模块克隆了三台主机
2virt-clone -o centos6 -n lvs-dr -f lvs-dr.img
3virt-clone -o centos6 -n lvs01 -f lvs01.img
4virt-clone -o centos6 -n lvs02 -f lvs02.img
5#三台主机对应的IP信息如下
6lvs-dr:172.25.0.10
7 192.168.122.100
8lvs01:192.168.122.10
9lvs02:192.168.122.20
二、lvs-nat配置
1、lvs-dr主机上配置
配置比较简单,这里写了一个简单的脚本,启动即可。内容如下:
1#!/bin/sh
2# description: start LVS of Nat
3DIP=172.25.0.10
4RIP1=192.168.122.10
5RIP2=192.168.122.20
6GW=192.168.122.100
7. /etc/rc.d/init.d/functions
8case "$1" in
9 start)
10 echo " start LVS of NAtServer"
11 # 开启路由转发
12 echo "1" >/proc/sys/net/ipv4/ip_forward
13 # 禁用发送ICMP IPv4重定向消息,默认是开启,值为1
14 echo "0" >/proc/sys/net/ipv4/conf/all/send_redirects
15 echo "0" >/proc/sys/net/ipv4/conf/default/send_redirects
16 echo "0" >/proc/sys/net/ipv4/conf/eth0/send_redirects
17 echo "0" >/proc/sys/net/ipv4/conf/eth1/send_redirects(内网卡上的)
18 #Clear IPVS table
19 /sbin/ipvsadm -C
20 #set LVS
21 /sbin/ipvsadm -A -t 172.25.0.10:80 -s rr
22 /sbin/ipvsadm -a -t 172.25.0.10:80 -r 192.168.122.10:80 -m -w 5
23 /sbin/ipvsadm -a -t 172.25.0.10:80 -r 192.168.122.20:80 -m -w 10
24 #Run LVS
25 /sbin/ipvsadm
26 #end
27 ;;
28 stop)
29 echo "close LVS Nat server"
30 echo "0" >/proc/sys/net/ipv4/ip_forward
31 echo "1" >/proc/sys/net/ipv4/conf/all/send_redirects
32 echo "1" >/proc/sys/net/ipv4/conf/default/send_redirects
33 echo "1" >/proc/sys/net/ipv4/conf/eth0/send_redirects
34 echo "1" >/proc/sys/net/ipv4/conf/eth1/send_redirects(内网卡上的)
35 /sbin/ipvsadm -C
36 ;;
37 *)
38 echo "Usage: $0 {start|stop}"
39 exit 1
40esac
注释:
1、使用NAT模式必须要开启路由转发;
2、禁用发送ICMP ipv4重定向消息主要是出于安全考虑,并不影响ping检测;
3、ipvsadm 这里使用的是Round Robin轮询算法,-m 参数是指定使用的masquerading nat模式,-w 参数是指定权重,在 rr算法下,指定权重是没意义的,因为两台主机的的权重是一样的,每台主机都是公平平均轮询的。
2、lvs01与02主机配置
两台主机上需要将默认网关指向到同网段的lvs-dr主机IP,在本示例中,需要指定网关为192.168.122.100,两台主机上可通过如下命令增加
1route add default gw 192.168.122.100
也可以在主机的网卡配置文件中直接指定。
3、测试
在两台主机上分别安装httpd服务并指定一个简单的页面,可通过curl 获取页面测试,具体如下:
1[root@lvs-dr ~]# curl http://172.25.0.10
2lvs01 host!
3[root@lvs-dr ~]# curl http://172.25.0.10
4lvs02 host!
5[root@lvs-dr ~]# curl http://172.25.0.10
6lvs01 host!
7[root@lvs-dr ~]# curl http://172.25.0.10
8lvs02 host!
通过ipvsadm命令直接修改对应的算法后再进行测试如下;
1修改lvs算法为wrr
2[root@lvs-dr ~]# /sbin/ipvsadm -E -t 172.25.0.10:80 -s wrr
3测试结果如下:
4[root@lvs-dr ~]# curl http://172.25.0.10
5lvs02 host!
6[root@lvs-dr ~]# curl http://172.25.0.10
7lvs02 host!
8[root@lvs-dr ~]# curl http://172.25.0.10
9lvs01 host!
10[root@lvs-dr ~]# curl http://172.25.0.10
11lvs02 host!
12……………省略
也可以用ipvsadm确认当前连接情况:
1[root@lvs-dr ~]# ipvsadm -Ln
2IP Virtual Server version 1.2.1 (size=4096)
3Prot LocalAddress:Port Scheduler Flags
4 -> RemoteAddress:Port Forward Weight ActiveConn InActConn
5TCP 172.25.0.10:80 wrr
6 -> 192.168.122.10:80 Masq 5 0 0
7 -> 192.168.122.20:80 Masq 10 0 2
4、配置保存
通过ipvsadm服务可以将当前的配置保存,默认保存在/etc/sysconfig/ipvsadm,主机开机自启动ipvsadm服务时会自动读取该文件:
1[root@lvs-dr ~]# /etc/init.d/ipvsadm save
2ipvsadm: 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台物理服务器计算。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/lvs-nat/5187.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.