首页 > 其他 > 详细

LVS的DR设置

时间:2017-01-12 16:29:14      阅读:209      评论:0      收藏:0      [点我收藏+]

DR模式实践

dr模式是通过改变mac地址转发进行分发请求,ip地址不进行任何改变,当res处理完请求的时候,直接返回给客户端,

src ip为客户端ip,dsc ip为vip


与NAT不同的是,不依赖于防火墙,同时请求会转发到DR上再转发到RS,RS返回给客户端;

首先需要有公网IP,内网IP不关心

耗费公网资源,如果有大量的RS则该模式是一个很大的缺陷;

技术分享

前期准备:

1、关闭防火墙,清除以前的规则(若是之前有的话)

2、修改主机名

3、环境

    四台机器:

              DR:NAT模式静态eth0【192.168.10.12

              RS1:NAT模式静态eth0【192.168.10.13

              RS2:NAT模式静态eth0【192.168.10.14

              localhost:NAT模式静态eth0【192.168.10.11】,用于测试

Direcotr配置

1、安装ipvsadm

[root@dr ~]# yum install -y ipvsadm

2、编辑脚本

[root@dr ~]# vim /usr/local/sbin/lvs_dr.sh

#! /bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward

ipv=/sbin/ipvsadm

vip=192.168.10.110                #这个IP为虚拟的ip,可以在上次HA中的/etc/ha.d/haresourses文件中设置可看到        

rs1=192.168.10.13

rs2=192.168.10.14

ifconfig eth0:0 down            #为了方便每次执行脚本时,提示文件已存在,所以要先宕掉这个虚拟的eth0

ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 up

route add -host $vip dev eth0:0

$ipv -C

$ipv -A -t $vip:80 -s rr

$ipv -a -t $vip:80 -r $rs1:80 -g -w 1

$ipv -a -t $vip:80 -r $rs2:80 -g -w 1

解释说明:

-g 表示dr模式

3、执行脚本并查看规则

[root@dr ~]# sh /usr/local/sbin/lvs_dr.sh

[root@dr ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.10.110:80 rr

  -> 192.168.10.13:80             Route   1      0          0         

  -> 192.168.10.14:80             Route   1      0          0

Real Server配置

4、要求两台RS服务器开启80服务端口

[root@rs1 ~]# yum install -y epel-release

[root@rs1 ~]# yum install -y nginx

[root@rs1 ~]# /etc/init.d/nginx start

[root@rs1 ~]# echo "11111111" > /usr/share/nginx/html/index.html

[root@rs1 ~]# curl localhost

11111111

 

[root@rs2 ~]# yum install -y epel-release

[root@rs2 ~]# yum install -y nginx

[root@rs2 ~]# /etc/init.d/nginx start

[root@rs2 ~]# echo "11111111" > /usr/share/nginx/html/index.html

[root@rs2 ~]# curl localhost

22222222

5、两台rs服务器都要编写该脚本

[root@r1 ~]# vim /usr/local/sbin/lvs_dr_rs.sh

#! /bin/bash

vip=192.168.10.110

ifconfig lo:0 down

ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up

route add -host $vip lo:0

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

解释说明:

arp_ignore和arp_announce   www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html

rs绑定是lo:0这块网卡

6、执行脚本

[root@r1 ~]# sh /usr/local/sbin/lvs_dr_rs.sh

[root@r1 ~]# ifconfig lo:0

lo:0      Link encap:Local Loopback

          inet addr:192.168.10.110  Mask:255.255.255.255

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

[root@r2 ~]# sh /usr/local/sbin/lvs_dr_rs.sh

[root@r2 ~]# ifconfig lo:0

lo:0      Link encap:Local Loopback

          inet addr:192.168.10.110  Mask:255.255.255.255

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

7、在网页中访问测试vip

技术分享

刷新一下

技术分享

解释说明:

多次刷新,在浏览中不容易看到效果,可能是缓存什么原因,它会一直访问这个页面

ps:

为了验证效果,在去打开另外一台虚拟机,当然会有疑问,为什么不能在这三台机器上去测呢,这个是有原因的,因为我们这上面每一个都绑定了一个vip,那么你去访问这两个rs,它肯定是访问自己,而dr呢,因为它有这个vip,但去curl的时候,它是不通的, 为什么呢?因为:虽然说你这个包能出去,但是你回不来,为什么回不来,因为netmask(4255),所以我们需要再打开一台虚拟机192.168.10.11来测试

[root@localhost ~]# curl 192.168.10.110

11111111

[root@localhost ~]# curl 192.168.10.110

222222

[root@localhost ~]# curl 192.168.10.110

11111111

[root@localhost ~]# curl 192.168.10.110

222222

[root@localhost ~]# curl 192.168.10.110

11111111

[root@localhost ~]# curl 192.168.10.110

222222

[root@localhost ~]# curl 192.168.10.110

11111111

[root@localhost ~]# curl 192.168.10.110

222222

[root@localhost ~]# curl 192.168.10.110

11111111

[root@localhost ~]# curl 192.168.10.110

222222

8、修改一下算法

[root@dr ~]# vim /usr/local/sbin/lvs_dr.sh

技术分享

9、执行脚本并查看规则

[root@dr ~]# sh /usr/local/sbin/lvs_dr.sh

[root@dr ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.10.110:80 wrr

  -> 192.168.10.13:80             Route   3      0          0      

  -> 192.168.10.14:80             Route   1      0          0

10、测试

[root@localhost ~]# curl 192.168.10.110

11111111

[root@localhost ~]# curl 192.168.10.110

11111111

[root@localhost ~]# curl 192.168.10.110

11111111

[root@localhost ~]# curl 192.168.10.110

222222

[root@localhost ~]# curl 192.168.10.110

11111111

[root@localhost ~]# curl 192.168.10.110

11111111

[root@localhost ~]# curl 192.168.10.110

11111111

[root@localhost ~]# curl 192.168.10.110

222222


本文出自 “linux” 博客,转载请与作者联系!

LVS的DR设置

原文:http://warm51fun.blog.51cto.com/3884274/1891295

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!