一、LVS NAT的实现

实现实验环境

准备3台主机,分别作Director,RS1,RS2,通过访问web服务来测试集群功能!

各网卡配置如下,

服务器网卡地址
Director

eth0:172.16.8.8(作为VIP)

eth1:192.168.10.1(作为DIP)

RS1eth0:192.168.10.11(作为RIP)
RS2eth0:192.168.10.12 (作为RIP)


拓扑图:

wKiom1NOFbrigWNkAAEtQwiZDt8377.jpg


1.Director服务器的配置

设置VIP与DIP的地址

[root@master ~]# ifconfig eth0 172.16.8.8/16  //VIP
[root@master ~]# ifconfig eth1 192.168.10.1/24  //DIP


如下图:

wKiom1NL8MeD44EXAAQSZfAMupY427.jpg


2、RS1服务器的配置

配置RIP地址:

[root@master ~]# ifconfig eth0 192.168.10.11/24 //RIP

如图

wKiom1NL8UiTy2q1AAJg0LwkUZg604.jpg


把RS1服务器的默认网关指向DIP

[root@master ~]# route add default gw 192.168.10.1

如图

wKioL1NL8c_CU0RrAADkCU4RFrA033.jpg


创建测试网页文件

# 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

如图

wKioL1NL8h_y2L55AALiJaUeSaY812.jpg


把RS2服务器的默认网关也指向DIP

[root@master ~]# route add default gw 192.168.10.1

如图:

wKioL1NL8mDiMBK0AAD8v_O_KMw348.jpg


创建网页文件:

# 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


如图:

wKiom1NL9raD1vE_AADVrwfzgYs745.jpg


5、打开游览器输入VIP地址172.16.8.8测试

查看ipvsadm状态

wKiom1NL9wOw0lrGAAEZ2r6AUcE866.jpg

从上图看出,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)


拓扑图:

wKioL1NOJQfhn86NAAFL-ZLPGmE414.jpg


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

wKioL1NOKXCBe_HkAAEDM4u94rA560.jpg


配置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

wKiom1NOKcrQj74UAANcNlcyg48212.jpg

wKioL1NOKb-A8qQ3AAEJ12Fhuyc374.jpg


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

wKiom1NOKhbxjSgyAALZX9-yw0g373.jpg


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

wKiom1NOKW7zi3ZqAADt11jHVDk771.jpg


打开网页测试:

wKioL1NOKjfQlP1WAADkotaFUFw994.jpg

wKiom1NOKmKiuep5AAEBL5LvEJM495.jpg

wKioL1NOKjqAUB1PAADt11jHVDk174.jpg


从上图看出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


拓扑图:

wKiom1NOLPexqZm4AAFehSYih0A918.jpg


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 //指向路由服务器

wKioL1NOM1TivFhbAAC4k1J26sQ633.jpg


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 //网关指向路由服务器

wKioL1NOM3DxcDh6AADa0SmyyVk079.jpg


4、配置路由服务器

启动一台主机配置成路由服务器,添加以下规则:

配置网卡:

wKiom1NOM0HxERkrAAPvkj_LYX0760.jpg


添加路由规则:

[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出去

wKiom1NONHfTI99KAACeORZviec609.jpg


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


测试:

wKioL1NONZ_Rbr5MAAEOlFSjk0c415.jpg

wKioL1NONiSD4q_eAADQZAu8xC4366.jpg

wKiom1NONk3BqQG3AAEjZYuLEKE324.jpg


从图看出vip与RIP不在同一网段的DR模型配置成功!


注:如果各个网卡都是桥接的话,反应可能有点延迟,测试时,最好把各个网卡放在同一HOST-ONLY下,我这里是虚拟机:如图

wKiom1NOOH3TBwRlAAKVw_JP36k694.jpg


在路由服务器上测试,如图:

wKioL1NOOKzQ3zT8AAE2_41fX7Y469.jpg