一、是什么
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查看自己的网卡接口
virtual_router_id:虚拟路由标志。同组的virtual_router_id应该保持一致。它将决定多播的MAC地址。
priority:设置本节点的优先级,优先级高的为master
advert_int:MASTER与BACKUP同步检查的时间间隔
virtual_ipaddress:这就是传说中的虚拟ip