一、是什么

     keepalived是集群管理中保证集群高可用的一个服务软件,它的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后,自动将web服务器加入到服务器集群中。解决了静态路由的单点故障问题。

二、工作原理

     keepalived是以VRRP协议为实现基础的,VRRP全程Virtual Router Redundancy Protocol ,即虚拟路由冗余协议。

     虚拟路由冗余协议,可以认为是实现路由器高可用的协议。也就是说N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip,master不断向backup发送心跳信息,告诉backup自己还活着,当backup收不到心跳消息时就认为master已经宕机啦,这时就需要根据VRRP的优先级来选举一个backup当master。从而保证高可用。

      keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护、以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。。

三、配置文件

      keepalived只有一个配置文件keepalived.conf,里面主要包括以下几个配置区域,分别是global_defs、static_ipaddress、

vrrp_script、vrrp_instance和virtual_server.

1、global_defs区域

主要是配置故障发生时的通知对象以及机器标志

 

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id 192.168.224.206
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}



  • notification_email  故障发生时给谁发邮件通知
  • notification_email_from  通知邮件从哪个地址发出
  • smtp_server 通知邮件的smtp地址
  • smtp_connect_timeout 连接smtp服务器的超时时间
  • enable_traps开启SNMP(Simple Network Management Protocol)陷阱
  • router_id 标志本节点的字符串,通常为ip地址,故障发生时邮件会通知到

2、vrrp_script区域

   用来做健康检查的,当检查失败时会将vrrp_instance的priority减少相应的值,

vrrp_script chk_nginx {
       script "/usr/local/keepalived-1.3.4/nginx_check.sh"
       interval 2 
       weight -20
}



   script:自己写的监测脚本。

   interval 2:每2s监测一次

   weight -20:监测失败,则相应的vrrp_instance的优先级会减少20个点

3、vrrp_instance 

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    mcast_src_ip 192.168.224.206
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.224.208
    }
    track_script{
    chk_nginx
  }
}

state:只有BACKUP和MASTER。MASTER为工作状态,BACKUP是备用状态

interface:为网卡接口:可通过ip addr查看自己的网卡接口

keepalived怎么修改VRRP报文是IPV6 keepalived_vrrp exited with_配置文件

virtual_router_id:虚拟路由标志。同组的virtual_router_id应该保持一致。它将决定多播的MAC地址。

priority:设置本节点的优先级,优先级高的为master

advert_int:MASTER与BACKUP同步检查的时间间隔

virtual_ipaddress:这就是传说中的虚拟ip