LVS负载均衡架设,DR模式

lvs-dr模型 : 直接路由

Director在实现转发时不修改请求报文的IP首部,而是通过直接封装MAC首部来完成转发,目标MAC是Director根据调度方法挑选出的某RS的MAC地址

拓扑结构有别于NAT类型

架构特性:

(1) 保证前端路由器将目标地址为VIP的请求报文通过ARP地址解析后送往Director

解决方案:

1、静态绑定:在前端路由直接将VIP对应的目标MAC静态配置为Director的MAC地址,不靠谱也不常用

2、arptables:在各RS上,通过arptables规则拒绝其响应对VIP的ARP广播请求

3、内核参数:在RS上修改内核参数,并结合地址的配置方式实现拒绝响应VIP对ARP的响应请求

(2) RS的RIP可以使用私有地址,但也可以使用公网地址,此时可通过互联网上的主机直接对此RS发起管理操作

(3) 请求报文必须经由Director调度,但响应报文必须不能经由Director

(4) 各RIP必须与DIP在同一物理网络中,就是不能通过路由器转发否则会被修改MAC地址,可以通过交换机交换

(5) 不支持端口映射

(6) RS可以使用大多数的OS

(7) RS的网关一定不能指向Director

LVS负载均衡架设,DR模式_第1张图片

我们使用LVS配置,不懂的可以先看另一篇博客LVS基础  http://kmk0226.blog.51cto.com/5975994/1717592


架设DR模式的LVS负载均衡主要的思路就是VIP只能Directory上能够响应,RS上的VIP只能发送。

因此我们要先根据自己需要架设的服务拓扑图来规划IP地址以及测试。

1、根据上面的拓扑图先规划IP地址 

    

注意:DR模式与NAT模式不同,DR模式所有的IP地址都为公网地址并不是私有地址。

    VIP:192.168.100.2

    VIP为公网地址,因此这个地址需要能连通外部网络的。

    

    DIP:192.168.100.3

    DIP是公网地址

    

    RIP:192.168.100.4-6

    RIP为Real server的IP地址,拓扑图的三台服务器依次设置IP地址从4到6


2、设置完成IP地址架设网络以及对ARP广播做限制,最后进行测试是否连通。

    先配置各个服务器的IP地址:

    (注意:本次IP地址配置是命令方式的并不能永久生效,如果需要永久生效的话要在配置文件中配置具体,本章不做描述,如果需要请留言)

   (1) Directory:

        DIP: ifconfig eth0 192.168.100.3 netmask 255.255.255.0 up

        VIP:ifconfig eth0:0 192.168.100.2 netmask 255.255.255.255 broadcast 192.168.100.2 up

            由于vip只是用于标记用的,所以掩码设置为32位的, 并且设置广播域的范围只有192.168.100.2   

            route add -host 192.168.100.2 dev eth0:0

                如果主机的目标地址是192.168.100.2这个VIP就必须从eth0:0这个端口进出

            开启nat转发功能

            vim /etc/sysctl.conf

                修改net.ipv4.if_forward = 1

                    1为打开,0为关闭      

            sysctl -p : 让修改的配置立即生效      


   (2) Real Server:

        RIP: ifconfig eth0 192.168.100.4 netmask 255.255.255.0 up

        VIP: ifconfig lo:0 192.168.100.2 netmask 255.255.255.255 broadcast 192.168.100.2 up

            DR模型中在RS中的VIP是放在本地端口的,不对外通信的,只做帧首部用,具体原因请学习网络基础。

        RS还需要设置ARP限制,否则就算本地端口也会将自己的IP地址与外部通信。

            route add -host 192.168.100.2 dev lo:0

                如果主机的目标地址是192.168.100.2这个VIP就必须从lo:0这个端口进出

        

        2.4.26,2.6.4 kernael引入两个内核参数:

arp_announce: 定义arp限制通告级别

arp_ignore: 定义arp忽略arp请求级别或aro通告的级别

            

          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


    另外两台RS也做同样的操作,不过RIP需要修改成192.168.100.5192.168.100.6


  (3) 全部设置完之后测试各个IP地址之间是否能够正常通信,使用ping工具

        在每个主机上都ping一下其他主机的IP地址


3、测试需要架设的服务是否能够在Directory上正常访问

    本次以http为例,在各个RS上安装完http之后,在Directory使用curl http://192.168.100.4测试是否正常



测试完成之后就可以配置集群了。


LVS集群配置在Directory上配置:

ipvsadm -A -t 192.168.100.2:80 -s rr    //设置VIP为访问集群时候的IP地址,端口号为80,-s 代表使用自定义集群访问模式,rr为轮询,代表每个服务器都会轮换着访问
ipvsadm -a -t 192.168.100.2:80 -r 192.168.100.4 -g -w 1  //设置192.168.100.4为一个RS服务器,-g代表是开启DR模式, -w为权重,1为权重为1
ipvsadm -a -t 192.168.100.2:80 -r 192.168.100.5 -g -w 2  //设置192.168.100.5为一个RS服务器,-g代表是开启DR模式, -w为权重,2为权重为2
ipvsadm -a -t 192.168.100.2:80 -r 192.168.100.6 -g -w 3  //设置192.168.100.6为一个RS服务器,-g代表是开启DR模式, -w为权重,3为权重为3
注意:权重越大代表被访问到的几率越大,不过为RR轮询的时候是无效的。

配置完Directory之后集群的配置就已经配置完成了。


测试集群是否可以正常访问:

    1、实验环境中先确保iptables防火墙为关闭状态

    2、实验环境中确保selinux为关闭状态或警告状态

    3、在RS服务器中建立http页面,页面内容最好是能区分每个主机的不通内容,例如:192.168.100.4这样一个IP地址的内容

    4、在本地物理机直接访问VIP测试是否能够正常访问,并且是否是正常轮询访问的,如果都正常代表LVS集群已经架设完成



总结:

    LVS负载均衡集群对网络要求较高,如果内部网络架设不完整或者不通都将会导致集群无法正常访问,重点只要所有IP地址都能ping通就能正常架设成功。





你可能感兴趣的:(dr模型,lvs负载均衡集群)