LVS-DR配置篇

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 -Ln
      IP Virtual Server version 1.2.1 (size=4096)
      Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
      TCP  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 -Ln
IP 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.cf
      debugfile /var/log/ha-debug
      logfile /var/log/ha-log
      logfacility     local0
      keepalive 2
      deadtime 30
      warntime 10
      initdead 120
      udpport 694
      bcast   eth0
      auto_failback on               # 表示自动回切
      node    server1                # 在前的是主,在后的是备
      node    server2
      ping 172.25.31.250
    • authkeys,配置完成后必须将其修改为600;

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

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

      [root@server1 ha.d]# vim /etc/ha.d/ldirectord.cf
      
      checktimeout=3
      
      checkinterval=1
      
      autoreload=yes
      
      quiescent=no
      
      virtual=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 keepalived

global_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的高可用和健康检查;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值