一、LVS NAT的实现
实现实验环境
准备3台主机,分别作Director,RS1,RS2,通过访问web服务来测试集群功能!
各网卡配置如下,
服务器 | 网卡地址 |
Director | eth0:172.16.8.8(作为VIP) eth1:192.168.10.1(作为DIP) |
RS1 | eth0:192.168.10.11(作为RIP) |
RS2 | eth0:192.168.10.12 (作为RIP) |
拓扑图:
1.Director服务器的配置
设置VIP与DIP的地址
[root@master ~]# ifconfig eth0 172.16.8.8/16 //VIP [root@master ~]# ifconfig eth1 192.168.10.1/24 //DIP
如下图:
2、RS1服务器的配置
配置RIP地址:
[root@master ~]# ifconfig eth0 192.168.10.11/24 //RIP
如图
把RS1服务器的默认网关指向DIP
[root@master ~]# route add default gw 192.168.10.1
如图
创建测试网页文件
# yum -y install httpd //没有httpd的话则安装
# vim /var/www/html/index.html 写如如下内容 <h1>web2</h1>
3.RS2服务器的配置
配置RIP
[root@master ~]# ifconfig eth0 192.168.10.12/24 //RIP
如图
把RS2服务器的默认网关也指向DIP
[root@master ~]# route add default gw 192.168.10.1
如图:
创建网页文件:
# yum -y install httpd //没有httpd的话则安装
# vim /var/www/html/index.html 写如如下内容 <h1>web2</h1>
4 、在Director服务器上配置集群服务
打开IP转发:
# vim /etc/sysctl.conf net.ipv4.ip_forward = 1
[root@master ~]# yum -y install ipvsadm [root@master ~]# ipvsadm -A -t 172.16.8.8:80 /这里采用默认调度方法wlc来配置集群 [root@master ~]# ipvsadm -a -t 172.16.8.8:80 -r 192.168.10.11:80 -m -w 3 //添加RS1记录,lvs类型为nat,RS权重为3 [root@master ~]# ipvsadm -a -t 172.16.8.8:80 -r 192.168.10.12:80 -m -w 1 //添加RS2记录,lvs类型为nat,RS权重为1
如图:
5、打开游览器输入VIP地址172.16.8.8测试
查看ipvsadm状态
从上图看出,nat集群服务已经生效,从Conns,InPkts值来看二者RS权重比3:1,基本符合设定值
二、LVS-DR的配置
VIP和RIP在同一公网网段
服务器 | 网卡地址 |
Director | eth0:172.16.8.8(作为DIP) eth0:0:172.16.8.6(作为VIP) |
RS1 | eth0:172.16.8.7(作为RIP) lo:0 172.16.8.6 (vip) |
RS2 | eth0:172.16.8.9 (作为RIP) lo:0 172.16.8.6 (vip) |
拓扑图:
1、Director的配置
准备一块网卡配置VIP与DIP
[root@master ~]# ifconfig eth0 172.16.8.8/16 //(DIP) [root@master ~]# ifconfig eth0:0 172.16.8.6/16 //(VIP) [root@master ~]# route add -host 172.16.8.6 dev eth0:0 //让发往172.16.8.6的请求都经过eth0:0
2、RS1的配置
创建网页文件:
# yum -y install httpd //没有httpd的话则安装 # vim /var/www/html/index.html 写如如下内容 <h1>web1</h1>
配置DIP
[root@master ~]# ifconfig eth0 172.16.8.7 //RIP
修改内核参数来先限制arp的广播和应答:
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
配置VIP
[root@master ~]# ifconfig lo:0 172.16.8.6 netmask 255.255.255.255 broadcast 172.16.8.6 up //配置VIP必须不让realserver对外广播
配置路由
[root@master ~]# route add -host 172.16.8.6 dev lo:0 #请求是VIP的包,以lo:0接口出去,于是源地址还是为VIP,不会导致因为从eth0出去将源地址变为RIP
3、RS2的配置
创建网页文件 # yum -y install httpd //没有httpd的话则安装 # vim /var/www/html/index.html 写如如下内容 <h1>web2</h1>
修改内核参数来先限制arp的广播和应答:
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
配置RIP与VIP
[root@master ~]# ifconfig eth0 172.16.8.9 //RIP
[root@master ~]# ifconfig lo:0 172.16.8.6 netmask 255.255.255.255 broadcast 172.16.8.6 up //配置VIP必须不让realserver对外广播
配置路由:
[root@master ~]# route add -host 172.16.8.6 dev lo:0 #请求是VIP的包,以lo:0接口出去,于是源地址还是为VIP,不会导致因为从eth0出去将源地址变为RIP
4、在Director服务器上添加集群服务
[root@master ~]# ipvsadm -A -t 172.16.8.6:80 -s rr [root@master ~]# ipvsadm -a -t 172.16.8.6:80 -r 172.16.8.7 -g [root@master ~]# ipvsadm -a -t 172.16.8.6:80 -r 172.16.8.9 -g
打开网页测试:
从上图看出LVS-DR模型配置成功!
三、LVS -DR模型的另一种配置
为了节约公网地址,DR模型下VIP可用公网地址,RIP用内网地址,将网关都指向同一个路由器,以此来实现DR模型的LVS负载均衡
服务器 | 网卡地址 |
Director | eth0:172.16.8.6(作为VIP) eth1:192.168.10.1(作为DIP) |
RS1 | eth0:192.168.10.11(作为RIP) lo:0 172.16.8.6 (VIP) gw:192.168.10.13 |
RS2 | eth0:192.168.10.12 (作为RIP) lo:0 172.16.8.6 (VIP) gw:192.168.10.13 |
Client(网关服务器) | eth0:192.168.10.13 eth1:172.16.10.1 |
拓扑图:
1.Director服务器的配置
准备二块网卡设置VIP与DIP的地址
[root@master ~]# ifconfig eth0 172.16.8.6/16 //VIP [root@master ~]# ifconfig eth1 192.168.10.1/24 //DIP
2、RS1的配置
创建网页文件 # yum -y install httpd //没有httpd的话则安装 # vim /var/www/html/index.html 写如如下内容 <h1>web1</h1>
修改内核参数来先限制arp的广播和应答:
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
配置VIP与DIP:
[root@master ~]# ifconfig eth0 192.168.10.11 //RIP
[root@master ~]# ifconfig lo:0 172.16.8.6 netmask 255.255.255.255 broadcast 172.16.8.6 up //配置VIP必须不让realserver对外广播
配置路由与网关:
[root@master ~]# route add -host 172.16.8.6 dev lo:0 //请求是VIP的包,以lo:0接口出去,于是源地址还是为VIP,不会导致因为从eth0出去将源地址变为RIP [root@master ~]# route add default gw 192.168.10.13 //指向路由服务器
3、RS2的配置
创建网页文件 # yum -y install httpd //没有httpd的话则安装 # vim /var/www/html/index.html 写如如下内容 <h1>web2</h1>
修改内核参数来先限制arp的广播和应答:
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
配置VIP与DIP:
[root@master ~]# ifconfig eth0 192.168.10.12 //RIP
[root@master ~]# ifconfig lo:0 172.16.8.6 netmask 255.255.255.255 broadcast 172.16.8.6 up //配置VIP必须不让realserver对外广播
配置路由与网关:
[root@master ~]# route add -host 172.16.8.6 dev lo:0 //请求是VIP的包,以lo:0接口出去,于是源地址还是为VIP,不会导致因为从eth0出去将源地址变为RIP [root@master ~]# route add default gw 192.168.10.13 //网关指向路由服务器
4、配置路由服务器
启动一台主机配置成路由服务器,添加以下规则:
配置网卡:
添加路由规则:
[root@master ~]# route add -net 192.168.10.0 netmask 255.255.255.0 dev eth1 //发往192.168.10网段的请求经过eth1出去 [root@master ~]# route add -net 172.16.0.0 netmask 255.255.0.0 dev eth0 //发往172.16.0.0网段的请求经过eth0出去
5、在Director服务器上添加集群服务
[root@master ~]# ipvsadm -A -t 172.16.8.6:80 -s rr [root@master ~]# ipvsadm -a -t 172.16.8.6:80 -r 192.168.10.11 -g [root@master ~]# ipvsadm -a -t 172.16.8.6:80 -r 192.168.10.12 -g
测试:
从图看出vip与RIP不在同一网段的DR模型配置成功!
注:如果各个网卡都是桥接的话,反应可能有点延迟,测试时,最好把各个网卡放在同一HOST-ONLY下,我这里是虚拟机:如图
在路由服务器上测试,如图: