LVS-DR配置篇

来源:互联网 发布:盗图投诉淘宝复审 编辑:程序博客网 时间:2024/05/30 22:54

LVS-DR配置篇

此处主要介绍VS/DR模式,包括与keepalived和heartbeat的结合都是VS/DR模式的。

VS/DR模式

环境是redhat企业6.5版本的Linux系统,server1作为负载调度器VS,server3和server4作为后端服务器,开启httpd服务。
  • 负载调度器VS的配置:

    • 安装LVS的软件ipvsadm;

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

      此版本在安装软件时需要在yum源中加入HighAvailability,LoadBalancer,ResilientStorage,ScalableFileSystem项;

    • 建立一个虚拟服务器,VIP为172.25.31.100,开启端口为80,调度模式为rr轮询;

      [root@server1 ~]# ipvsadm -A -t 172.25.31.100:80 -s rr
    • 在虚拟服务器中加入后端真实服务器server3和server4,-g表示为DR模式;

      [root@server1 ~]# ipvsadm -a -t 172.25.31.100:80 -r 172.25.31.3:80 -g[root@server1 ~]# ipvsadm -a -t 172.25.31.100:80 -r 172.25.31.4:80 -g
    • 查看LVS策略是否添加上;

      [root@server1 ~]# ipvsadm -LnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  172.25.31.100:80 rr-> 172.25.31.3:80               Route   1      0          0         -> 172.25.31.4:80               Route   1      0          0
    • 在网络上添加VIP;

      [root@server1 ~]# ip addr add 172.25.31.100/24 dev eth0

      这里写图片描述

  • 后端服务器RS的配置:
    后端服务器server3和server4的配置相同,这里以server3为例;

    • 在server3上添加VIP;

      [root@server3 ~]# ip addr add 172.25.31.100/24 dev eth0
    • 下载arptables软件,隐藏RS;

      [root@server3 ~]# yum install arptables_jf.x86_64 -y
    • 配置arptables使得所有访问server3的VIP的数据包都被丢弃;

      [root@server3 ~]# arptables -A IN -d 172.25.31.100 -j DROP
    • 配置arptables使得从VIP传输的数据全部以本身IP传输;

      [root@server3 ~]# arptables -A OUT -s 172.25.31.100 -j mangle --mangle-ip-s 172.25.31.3
  • 测试
    在物理主机上对配置好的LVS进行测试,根据结果图可以看出,成功实现了负载均衡;
    这里写图片描述

LVS-heartbeat

原理篇提到过LVS是单点模式,而且并没有对RS进行健康检查,所以用heartbeat使得LVS实现双机热备,并且使用ldirectord对RS进行健康检查。LVS为VS/DR模式,在配置前,先删除之前配置好的LVS策略,并且删除配置的VIP,RS端的server3和server4配置不变;

[root@server1 ha.d]# ip addr del 172.25.31.100/24 dev eth0[root@server1 ha.d]# ipvsadm -C[root@server1 ha.d]# ipvsadm -LnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

server1和server2的配置完全相同,这里以server1为例,server1是主VS,server2是备用VS,LVS-heartbeat的配置如下:

  • 安装软件,软件包如下图所示;

    这里写图片描述

  • heartbeat和ldirectord的配置文件是/etc/ha.d目录下的ha.cf 、authkeys、haresources和ldirectord.cf,但是安装好软件后并没有配置文件,需要从其他地方复制;

    [root@server1 heartbeat]# cd /usr/share/doc/heartbeat-3.0.4/[root@server1 heartbeat-3.0.4]# cp authkeys ha.cf haresources /etc/ha.d/[root@server1 ~]# cd /usr/share/doc/ldirectord-3.9.5/[root@server1 ldirectord-3.9.5]# cp ldirectord.cf /etc/ha.d/
  • 分别对这四个配置文件进行配置,此处皆是本人设置的实际配置,如果有其他需要还可以进行其他的设置,其中未列出注释项;

    • ha.cf

      [root@server1 ha.d]# vim /etc/ha.d/ha.cfdebugfile /var/log/ha-debuglogfile /var/log/ha-loglogfacility     local0keepalive 2deadtime 30warntime 10initdead 120udpport 694bcast   eth0auto_failback on               # 表示自动回切node    server1                # 在前的是主,在后的是备node    server2ping 172.25.31.250
    • authkeys,配置完成后必须将其修改为600;

      [root@server1 ha.d]# vim /etc/ha.d/authkeysauth 33 md5 Hello![root@server1 ha.d]# chmod 600 /etc/ha.d/authkeys
    • haresources

      [root@server1 ha.d]# vim /etc/ha.d/haresourcesserver1 IPaddr::172.25.31.100/24/eth0 ldirectord httpd
    • ldirectord.cf

      [root@server1 ha.d]# vim /etc/ha.d/ldirectord.cfchecktimeout=3checkinterval=1autoreload=yesquiescent=novirtual=172.25.31.100:80        real=172.25.31.3:80 gate        real=172.25.31.4:80 gate        fallback=127.0.0.1:80 gate        service=http        scheduler=rr        protocol=tcp        checktype=negotiate        checkport=80        request="index.html"
  • 因为heartbeat是高可用套件,ipvsadm和ldirectord都是自动启动的,VIP也是自动添加的,所以不用手动添加;

  • 对server2也作如上配置,完成后启动heartbeat;

  • 测试

    • 高可用测试:
      启动heartbeat之后,server1上可以看到自动添加了VIP和LVS策略;

      这里写图片描述

      这里写图片描述

      当关闭server1的heartbeat之后,VIP和LVS策略会自动加到server2上,因为在配置文件中设置的自动回切,所以当server1重新启动后,VIP和LVS策略又会重新回到server1上;

      这里写图片描述

    • RS健康检查测试
      当关闭后端服务器的server3的httpd服务后,VS端的LVS策略上会自动取消server3的策略,当其重新开启,该策略又会加上去;

      这里写图片描述

      这里写图片描述

    • 根据测试结果可以看出,LVS-heartbeat可以解决LVS的单点问题和对后端服务器没有健康检查的问题,使得LVS在实际应用中具有更多的用途;

LVS-keepalived

LVS-keepalived是实现LVS高可用的另一种方式,该方式应用的较LVS-heartbeat多一点,且不需要借助其他软件来实现后端服务器的健康检查;LVS-keepalived的配置所示,本此配置只代表个人,使用时可以根据实际情况配置;本次配置采用server2为主VS,server1为备用VS,在server1和server2上均作如下配置,此处以server2为例,但是在server1中编辑配置文件时略有不同,会在配置文件中说明;
  • keepalived的安装

    • 在官网上下载源码安装包,本次使用的是keepalived-1.3.5.tar.gz,解压后安装,源码包的安装不作赘述;

      [root@server2 keepalived-1.3.5]# ./configure --prefix=/usr/local/keepalived --with-init=SYSV[root@server2 keepalived-1.3.5]# make[root@server2 keepalived-1.3.5]# make install
    • 使用以下步骤复制配置文件和所需文件等;

      [root@server2 keepalived]# cp -r /usr/local/keepalived/etc/keepalived/  /etc[root@server2 keepalived]# chmod +x /usr/local/keepalived  /etc/rc.d/init.d/keepalived[root@server2 keepalived]# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/init.d/[root@server2 keepalived]# cp /usr/local/keepalived/sbin/keepalived  /sbin[root@server2 keepalived]# cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/
  • keepalived的配置
    keepalived的配置文件是/etc/keepalived/keepalived.conf,server1的配置会有所不同,会在代码框中说明;
    keepalived的配置文件编写是非常严格的,配置文件内容如下:

[root@server2 ~]# vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {   notification_email {     root@localhost   }   notification_email_from keepalived@localhost   smtp_server 127.0.0.1   smtp_connect_timeout 30   router_id LVS_DEVEL   vrrp_skip_check_adv_addr   # vrrp_strict                  # 如果不注释,启动后会在iptables中加入策略,导致数据无法传入   vrrp_garp_interval 0   vrrp_gna_interval 0}vrrp_instance VI_1 {    state MASTER                 # server1中此处应是 BACKUP    interface eth0    virtual_router_id 99    priority 100                 # server1中此处应该小于100    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        172.25.31.100/24/eth0         # 设置的VIP    }}virtual_server 172.25.31.100 80 {    delay_loop 6    lb_algo rr    lb_kind DR                      # 工作模式为DR    # persistence_timeout 50        # 此处是持续连接,在需要连续访问时开启,如lftp、mysql等    protocol TCP    real_server 172.25.31.3 80 {        weight 1        TCP_CHECK {            connect_timeout 3            nb_get_retry 3            delay_before_retry 3        }    }    real_server 172.25.31.4 80 {        weight 1        TCP_CHECK {            connect_timeout 3            nb_get_retry 3            delay_before_retry 3        }    }}
  • 配置完成后开启keepalived,后端服务器server3和server4配置不变;
  • 检测方式与LVS-heartbeat相同,可以检测出LVS-keepalived实现了LVS的高可用和健康检查;
原创粉丝点击