LVS的DR模式实现负载均衡

来源:互联网 发布:网络大电影制作流程 编辑:程序博客网 时间:2024/05/29 10:10

一: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 InActConnTCP  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 = 1net.ipv4.conf.default.rp_filter = 1net.ipv4.conf.default.accept_source_route = 0kernel.sysrq = 0kernel.core_uses_pid = 1net.ipv4.tcp_syncookies = 1kernel.msgmnb = 65536kernel.msgmax = 65536kernel.shmmax = 68719476736kernel.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



原创粉丝点击