Keepalived-VRRP虚拟路由冗余协议

Keppalived概念:keepalived是以VRRP协议为基础实现的,VRRP全称VirtualRouterRedundancyProtocol,中文名为虚拟路由冗余协议,VRRP的出现就是为了解决静态路由的单点故障问题,VRRP是通过一种竞选机制来将路由的任务交给某台VRRP路由器的。

在两个负载均衡调度器上安装Keepalived以实现高可用的目的。
两个调度器之间通过VRRP协议来保证高可用性,当一台调度器宕机时,另一台备用的立即接替原主机服务,当主机被修复之后又将服务返还给主机。

Keepalived故障切换原理:在主节点正常工作的时候,会不断地向备节点广播心跳消息,用来告诉备节点自己还活着,当主节点发生故障的时候,备节点就无法收到主节点广播的消息,即可判定主节点发生故障,进而调用自身的接管程序,接管主节点的IP资源及服务。而当主节点被修复时,备节点会释放主节点故障时自己所接管的IP资源和服务,恢复到原来备用的角色。

两个节点都为BACKUP节点,优先级一样,谁先启动谁就是主节点

配置文件详解

global_defs {	##全局定义,对整个Keepalived起作用
   router_id MySQL-HA	##运行Keepalived的机器的标识
} 

##配置虚拟路由器
vrrp_instance 名字 {
      state MASTER/BACKUP  ##主/备
      interface IFACE_NAME  ##绑定为当前虚拟路由器使用的物理接口;
      virtual_router_id VRID  ##当前虚拟路由器的惟一标识,范围是0-255;
      priority 100  ##当前主机在此虚拟路径器中的优先级;范围1-254;
      advert_int 1  ##vrrp通告的时间间隔;主备间通告时间检查的时间间隔,单位为s,默认1s
      
      ##配置认证
      authentication {
      auth_type AH|PASS		##加密认证|明文认证
      auth_pass <PASSWORD>  ##密码
      }
      
      ##设置VIP即虚拟IP地址
      virtual_ipaddress {
       <IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
       192.168.200.17/24 dev eth1
       192.168.200.18/24 dev eth2 label eth2:1
       }
       
       ##配置要监控的网络接口,一旦接口出现故障,则转为FAULT状态;
       track_interface {
       eth0
       eth1
       nopreempt:定义工作模式为非抢占模式;
       preempt_delay 300:抢占式模式下,节点上线后触发新选举操作的延迟时长;
       }
  }

##配置业务进程脚本
vrrp_script check_run {	
script "/home/mysql/mysql_check.sh"		##设置脚本文件名
interval 60		##设置脚本执行的时间间隔
fall 2		##定义检测失败的最大次数,表示当请求失败几次时就认为节点资源故障
rise 1		##定义请求成功的次数,表示当进行几次请求成功后就认为节点资源恢复正常
}

vrrp_sync_group VG1 {
group {		##设置同一组中的vrrp实例名
VI_1
}
}
##vrrp_sync_group配置VRRP同步组。不使用Sync Group的话,如果机器有两个网段,一个内网一个外网,每个网段开启一个VRRP实例。假设VRRP配置为检查内网,那么当外网出现问题时,VRRPD认为自己仍然健康,那么不会触发Master和Backup的切换,从而导致问题。Sync Group解决这个问题,可以把两个实例都放进一个Sync Group,这样的话,Sync Group里面任何一个实例出现问题都会发生切换

vrrp_instance VI_1 {
    state BACKUP		##实例出事状态
    interface ens32  	##实例绑定的网卡
    virtual_router_id 51		##VRID标记,值为0-255
    priority 90  	##优先级
    advert_int 1	##检查间隔
    nopreempt		##不发生抢占
    authentication {		##认证类型和密码
        auth_type PASS		##认证类型
        auth_pass 1234		##铭文认证密码
    }
 ##vrrp_instance配置VRRP实例。VRRP实例表示在上面开启了VRRP协议。这个实例说明了VRRP的一些特性,比如主从、VRID等等。可以在每个网卡上开启一个实例。VRRP实例主要定义vrrp_sync_group里面的每个组的漂移IP等。
 
    track_script {		##设置追踪脚本,调用vrrp_script使之生效
    check_run		##调用vrrp_script中定义的脚本
    }
    
    ##定义通知脚本
    notify_master /home/mysql/master.sh		##当切换到master时执行的脚本
    notify_stop /home/mysql/stop.sh		##vrrp停止以后执行的脚本
    notify_backup /home/mysql/backup.sh		##当前节点转为备节点时触发的脚本;
    notify_fault /home/mysql/fault.sh		##当前节点转为“失败”状态时触发的脚本;
    notify /home/mysql/general.sh		##通用格式的通知触发机制,一个脚本可完成以上三种状态的转换时的通知;

    virtual_ipaddress {		##指定漂移地址
        172.16.1.100/24	##不加掩码,默认是32位的
    }
}

配置的脚本

#!/bin/bash

kkk=`/usr/local/mysql/bin/mysqld -h127.0.0.1 -pmysql_passwd -Pmysql_port -N -s -e "show databases" 2>/dev/null`

if [ ! -z "$kkk" ]; then
    exit 0		##表示服务正常
else
    exit 1		##表示服务有报错
fi

当查看数据库里有哪些库时报错时,keepalived就会自动转移VIP到正常的backup节点

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值