DR模式下高可用的LVS

标签: HA  高可用  LB  keepalived

高可用的LVS(DR模式)—(HA+LB)

Keepalived:

什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生,那说到keepalived时不得不说的一个协议就是VRRP协议,可以说这个协议就是keepalived实现的基础。

VRRP( Virtual Router Redundancy Protocol )协议:

网络在设计的时候必须考虑到冗余容灾,包括线路冗余,设备冗余等,防止网络存在单点故障,那在路由器或三层交换机处实现冗余就显得尤为重要,在网络里面有个协议就是来做这事的,这个协议就是VRRP协议,Keepalived就是巧用VRRP协议来实现高可用性(HA)的。
1.用于实现路由器冗余的协议
2.解决静态路由单点故障问题
3.通过一种竞选(election)协议来实现虚拟路由器的功能

配置高可用的负载均衡
1.虚拟服务器得到最新版本的keepalived包并解压安装

tar zxf keepalived-2.0.6.tar.gz
cd keepalived-2.0.6
#安装keepalived的依赖包:openssl-devel
yum install openssl-devel.x86_64

2.编译keepalived的源码包

./configure --prefix=/usr/local/keepalived --with-init=SYSV
make   (默认makefile文件)
make install 

3.制作软连接方便keepalived的管理与设置,并给他的脚本执行权限

ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived

6.将server1中源码编译好的keepalived发送到server4,在sever4中同样制作软连接:

  ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
  ln -s /usr/local/keepalived/etc/keepalived/ /etc/
  ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
  ln -s /usr/local/keepalived/sbin/keepalived /sbin/

7.在server1(主)中配置/keepalived的配置文件:

Keepalived配置文件详解:

Keepalived的所有配置都在一个配置文件里面设置,支持的配置项主要分三类:
   1. 全局配置(Global Configuration):作用于整个keepalived服务
   2.VRRPD配置:keepalived的核心
   3. 虚拟服务配置:指定服务与负载均衡
   配置文件都是以块(block)形式组织的,每个块都在{ }包围的范围内
   #和!开头的行都是注释
 vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

全局配置
----

global_defs {              #全局定义块
   notification_email {    #邮件通知
     [email protected]
   }
   #notification_email指定keepalived在发生事件(切换),需要发送email到的对象。可以有多个,每行一个。
   notification_email_from [email protected]
   smtp_server 127.0.0.1     #smtp_*指定发送email的smtp服务器
   smtp_connect_timeout 30
   router_id LVS_DEVEL       #router_id运行keepalived的机器的一个标识
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

VRRPD配置
-------

vrrp_instance VI_1 {
##state指定instance的初始化状态,在两台router都启动后,马上会发生竞选,高priority的会竞选为Master,因而这里的state并不表示这台就一直是Master
    state MASTER              # 指定该节点为主节点,备用节点设置为BACKUP
    interface eth0            #绑定虚拟IP的网络接口
    virtual_router_id 1       #设置验证信息,两个节点需一致
    priority 100              # 主节点的优先级,数值在1~254,注意从节点必须比主节点的优先级别低
    advert_int 1              #组播信息发送间隔,两个节点需一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
       virtual_ipaddress {
        172.25.1.100          #指定虚拟IP,两个节点需设置一样
    }
}


虚拟服务配置
------

virtual_server 172.25.1.100 80 {
    delay_loop 3              #指定检查间隔
    lb_algo rr                #指定lvs算法
    lb_kind DR                #指定lvs模式为DR
    #persistence_timeout 50   #持久连接设置,会话保持时间,在此处需要注释
    protocol TCP              #指定转发协议为TCP协议
    #后端实际TCP服务配置
    real_server 172.25.1.2 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
    real_server 172.25.1.3 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

4.开启keepzlived

/etc/init.d/keepalived start

5.查看日志,判定是否更新了MASTER和BACKUP
server1:
这里写图片描述
server4:
这里写图片描述
6.将配置好的keepalived文件发送给备机(server4),修改MASTER为BACKUP

scp -r /etc/keepalived root@172.25.1.4:/etc

4.删除server1和server4上子网掩码为24的ip172.25.1.100(虚拟服务器的vip)

ip addr del 172.25.1.100/24 dev eth0

这里写图片描述
5.在测试端curl 172.25.1.100
这里写图片描述

破坏server1 echo c > /proc/sysrq-trigger查看server1和server4的日志:我们可以清楚的看到,server4变为MASTER,继续提供服务,测试端不会停止。当server1恢复正常后,server1立即竞选变为MASTER,servere4恢复为BACKUP

这里写图片描述

原文链接:加载失败,请重新获取