LVS的DR模式实现负载均衡

一:DR工作模式的工作流程:


(a)当用户请求到达DirectorServer,此时请求的数据报文会先到内核空间的PREROUTING链此时报文的源IP为CIP,目标IP为VIP

(b)PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链

(c)IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址

(d)由于DS和RS在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至RealServer。

(e)RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。此时的源IP地址为VIP,目标IP为CIP

(f)响应报文最终送达至客户端

二:DR特点;

1、保证前端路由将目标地址为VIP报文统统发给Director Server,而不是RS

2、RS可以使用私有地址;也可以是公网地址,如果使用公网地址,此时可以通过互联网对RIP进行直接访问

3、RS跟Director Server必须在同一个物理网络中

4、所有的请求报文经由Director Server,但响应报文必须不能进过DirectorServer

5、不支持地址转换,也不支持端口映射

6、RS可以是大多数常见的操作系统

7、RS的网关绝不允许指向DIP(因为我们不允许他经过director)

8、RS上的lo接口配置VIP的IP地址

三:具体实现;

1、环境准备:一台虚拟机做director,两台real server


2、director负载均衡器配置;

[root@Centos6 ~]# ifconfig eth0:0 172.17.252.225 broadcast 172.17.252.225 up     #将VIP配置到本地网卡别名,并只广播自己
[root@Centos6 ~]# route add -host 172.17.252.225 dev eth0:0                      #配置VIP路由
[root@Centos6 ~]# ipvsadm -A -t 172.17.252.225:80 -s wrr                         #开启基于80端口的调度服务,调度方式为wrr
[root@Centos6 ~]# ipvsadm -a -t 172.17.252.225:80 -r 172.17.200.106:80 -g -w 1   #配置两台后端web服务real server,-g:DR工作模式,-w:权重(此处配为1)
[root@Centos6 ~]# ipvsadm -a -t 172.17.252.225:80 -r 172.17.250.111:80 -g -w 1
[root@Centos6 ~]# ipvsadm -Ln                                                    #可查看到港配置的规则
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.17.252.225:80 wrr
 -> 172.17.200.106:80            Route   1      0          0         
-> 172.17.250.111:80            Route   1      0          0
[root@Centos6 ~]# vim /etc/sysctl.conf                                          #然后修改配置文件,使其支持转发
net.ipv4.ip_forward = 1                                                         #centos 7里需要手动添加此行,Centos 6中直接修改
[root@Centos6 ~]# sysctl -p                                                     #该命令使修改的配置文件生效,并显示结果
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

3、后端web服务real server的配置;

[root@Centos6 ~]# ifconfig lo:0 172.17.252.225 broadcast 172.17.252.225 netmask 255.255.255.255 up   #将VIP配置到本地回环网卡lo上,并只广播自己
[root@Centos6 ~]# route add -host 172.17.252.225 lo:0                                                #配置本地回环网卡路由
[root@Centos6 ~]# echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore            #只回答来访问本地地址的ARP查询请求
[root@Centos6 ~]# echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce          #不看IP数据包的源地址,只要目的MAC地址是本地地址就行
[root@Centos6 ~]# echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore           #只有在接收请求报文的接口上配有请求的目标IP时,才响应
[root@Centos6 ~]# echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce         #必须避免将接口信息向非本网络进行通告

我这里用的Apache测试的,所以,在三台机器上分别启动httpd服务,若是有php页面的话,可以将php服务、数据库服务都启动,

四:测试;

在两个real server的/var/www/html下建两个index.html的页面,不同内容,用于区分director调度出不同的页面,测试是否配置成功;

方法:

1、直接在网页输入vip进行访问;

2、或者用另外一台虚拟机(除本实验用到的三台外的其他虚拟机)进行curl

五:实验总结;

相较于NAT模式,DR模式减轻了director负载均衡器的负担,不用进出都经过它,出的时候直接通过real server中的VIP去返回客户端响应;

关于实验中用到的ipvsadm命令;

其程序包来自ipvsadm,用法:

-A --add-service                        在服务器列表中新添加一条新的虚拟服务器记录

-s --scheduler                           使用的调度算法,rr| wrr| lc| wlc| lblb| lblcr| dh | sh | sed| nq  默认调度算法是 wlc

-a --add-server                         在服务器表中添加一条新的真实主机记录

-t --tcp-service                          说明虚拟服务器提供tcp服务

-u --udp-service                       说明虚拟服务器提供udp服务

-r --real-server                         真实服务器地址

-w --weight                              真实服务器的权值

-m --masquerading                  指定LVS工作模式为NAT模式

-g --gatewaying                       指定LVS工作模式为直接路由器DR模式(也是LVS默认的模式)

-i --ip                                       指定LVS的工作模式为隧道模式

-p                                            会话保持时间,定义流量呗转到同一个realserver的会话存留时间

eg:ipvsadm -A -t 192.168.1.2:80 -s wlc               -----》加director server

eg:ipvsadm -a -t192.168.1.2:80 -r192.168.2.10:80-m -w 1   ----》加real server



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值