keepalived安装部署

      对应CentOS系统,内置的镜像源中已经包含keepalived的安装包,不过版本会落后。如果yum安装的不是想要的版本,可以使用源码安装的方式。

yum一键安装

  • 安装依赖包
$ yum install -y curl gcc openssl-devel libnl3-devel net-snmp-devel


  • 安装keepalived
$ yum install  -y keepalived


keepalived配置文件解析

​ 一个功能比较完整的常用的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