keepalived安装部署
对应CentOS系统,内置的镜像源中已经包含keepalived的安装包,不过版本会落后。如果yum安装的不是想要的版本,可以使用源码安装的方式。
yum一键安装
- 安装依赖包
 
$ yum install -y curl gcc openssl-devel libnl3-devel net-snmp-devel- 安装keepalived
 
$ yum install  -y keepalivedkeepalived配置文件解析
	一个功能比较完整的常用的keepalived配置文件,主要包含三块:全局定义块、VRRP实例定义块和虚拟服务器定义块。全局定义块是必须的,如果keepalived只用来做ha,虚拟服务器是可选的。
注释以“#”或“!”开头 到行尾,可从一行中的任何位置开始。
$ vim /etc/keepalived/keepalived.conf
##############【全局定义块】##############################
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 LVS_DEVEL     ##标识本节点的字条串,通常为hostname
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
#############【VRRP实例定义块】##############################
vrrp_instance lidabai {     #vrrp实例名
    state MASTER   #实例状态,只有MASTER(主)和BACKUP(备)两种状态
    interface eth0  #对外提供服务的网卡接口,即VIP绑定的网卡接口。
    mcast_src_ip:   #本机IP地址
    virtual_router_id 51  #虚拟路由的ID号,每个节点设置必须一样,可选择IP最后一段使用,相同的 VRID 为一个组,他将决定多播的 MAC 地址。
    priority 100   #节点优先级,取值范围0~254,MASTER要比BACKUP高
    advert_int 1  #MASTER与BACKUP节点间同步检查的时间间隔,单位为秒,主备须一致
    lvs_sync_daemon_inteface: #负载均衡器之间的监控接口,类似于 HA HeartBeat 的心跳线。但它的机制优于 Heartbeat,因为它没有“裂脑”这个问题,它是以优先级这个机制来规避这个麻烦的。在 DR 模式中,lvs_sync_daemon_inteface与服务接口interface使用同一个网络接口
    smtp_alert  #有故障时是否激活邮件通知
    nopreempt #禁止抢占服务。默认情况,当MASTER服务挂掉之后,BACKUP自动升级为MASTER并接替它的任务,当MASTER服务恢复后,升级为MASTER的BACKUP服务又自动降为BACKUP,把工作权交给原MASTER。当配置了nopreempt,MASTER从挂掉到恢复,不再将服务抢占过来。
    authentication {   #验证类型和验证密码。类型主要有 PASS、AH 两种,通常使用PASS类型,据说AH使用时有问题。验证密码为明文,同一vrrp 实例MASTER与BACKUP使用相同的密码才能正常通信。
        auth_type PASS
        auth_pass lidabai666
    }
    virtual_ipaddress {  #虚拟IP地址池,可以有多个IP,每个IP占一行,不需要指定子网掩码。注意:这个IP必须与我们的设定的vip保持一致,主备必须一致
        192.168.2.90
    }
}
#############【虚拟服务器定义块】##############################
virtual_server 192.168.200.100 443 {   #定义一个虚拟服务器,这个ip是virtual_ipaddress中定义的其中一个,后面一个空格,然后加上虚拟服务的端口号。
    delay_loop 6  #健康检查时间间隔(单位:秒)
    lb_algo rr  #负载均衡调度算法,互联网应用常用方式为wlc或rr
    lb_kind NAT  #负载均衡转发规则。包括DR、NAT、TUN 3种,一般使用路由(DR)转发规则。
    persistence_timeout 50 #http服务会话保持时间(单位:秒)
    protocol TCP  #转发协议(TCP/UDP)
    real_server 192.168.201.100 443 {  #真实服务器IP和端口,可以定义多个
        weight 1   #权重值,值越大,转发的优先级越高
        notify_down: 服务停止后执行的脚本
        TCP_CHECK:服务有效性检测
        SSL_GET {
            url {
              path /
              digest ff20ad2481f97b1754ef3e12ecd3a9cc
            }
            url {
              path /mrtg/
              digest 9b3a0c85a887a256d6939da88aabd8cd
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}
#############【扩展: 健康检查】
## keepalived 会定时执行脚本并对脚本执行的结果进行分析,动态调整 vrrp_instance 的优先级。如果脚本执行结果为 0,并且 weight 配置的值大于 0,则优先级相应的增加。如果脚本执行结果非 0,并且 weight配置的值小于 0,则优先级相应的减少。其他情况,维持原本配置的优先级,即配置文件中 priority 对应的值。
vrrp_script chk_nginx {
   script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
   interval 2 ## 检测时间间隔
   weight -20 ## 如果条件成立,权重-20
}- 配置文件语法检测
 
keepalived -t 可以检查配置文件的语法,默认检查的是/etc/keepalived/keepalived.conf。
$ keepalived -t









