keepalived工作原理和配置说明
keepalived是什么
keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。
keepalived工作原理
keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。
keepalived的配置文件
keepalived只有一个配置文件keepalived.conf,里面主要包括以下几个配置区域,分别是global_defs、static_ipaddress、static_routes、vrrp_script、vrrp_instance和virtual_server。
1、利用keepalived 实现主从VIP的切换
1.1、全局阶段
主要是配置故障发生时的通知对象以及机器标识
global_defs { notification_email { //定义邮件服务的 root@localhost //定义收件人,这里改为本机,只是测试使用 } notification_email_from kaadmin@localhost //定义发件人, smtp_server 127.0.0.1 //定义邮件服务器,一定不能使用外部地址 smtp_connect_timeout 30 //超时时间 router_id LVS_DEVEL }
1.2定义vrrp
vrrp_instance VI_1 { //定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称 state MASTER //开启后,该节点的优先级比另一节点的优先级高,所以转化为MASTER状态 interface eth0 //所有的通告等信息都从eth0这个接口出去 virtual_router_id 7 //虚拟路由的ID,而且这个ID也是虚拟MAC最后一段的来源,这个ID号一般不能大于255,且这个ID一定不能有冲突 priority 100 //初始优先级 advert_int 1 //通告的个数 authentication { //认证机制 auth_type PASS //认证类型 auth_pass 1111 //密码,应该为随机的字符串 } virtual_ipaddress { //虚拟地址,即VIP 172.16.6.100 } }
这样我们主节点的配置文件就修改好了,需要复制到从节点上,再做适当的修改就可以使用了
3.4登录到从节点
vrrp_instance VI_1 { state BACKUP //修改从节点的状态,主节点为MASTER,从节点就为BACKUP interface eth0 virtual_router_id 7 priority 99 //修改优先级,注意从节点的优先级一定要小于主节点 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.16.6.100 } }
3.5、然后在主节点启动服务
systemctl start keepalived systemct enable keepalived #开机自启动
ip addr show //查看我们定义的VIP
3.6、在从节点启动
systemctl start keepalived systemct enable keepalived #开机自启动
注:默认情况下ARRP工作在“抢占模式”下,如果发现一个节点的服务停止了,另一个节点会立即把VIP和VMAC“抢过来”,
如果在“非抢占模式”下,无论你的优先级过高,一个节点服务停止,另一个节点也不会“抢”VIP和VMAC,除非这个节点挂了,两一个节点才会“抢”。