Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了能够实现高可用的VRRP (Virtual Router Redundancy Protocol ,虚拟路由器冗余协议)功能。所以,Keepalived除了可以管理LVS软件外,还能够做为其余服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件nginx
Keepalived高可用服务对之间的故障切换转移,是经过 VRRP 来实现的。在 Keepalived服务正常工做时,主 Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点本身还活着,当主 Master节点发生故障时,就没法发送心跳消息,备节点也就所以没法继续检测到来自主 Master节点的心跳了,因而调用自身的接管程序,接管主Master节点的 IP资源及服务。而当主 Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色
bash
关于怎么安装这里不作叙述,首先配置 master 节点负载均衡
! Configuration File for keepalived global_defs { router_id ip地址 #路由器标识,最好写主机名或者IP地址,用于标识 } vrrp_script chk_nginx { #配置检查方式,chk_nginx为自定义名称 script "/etc/keepalived/nginx_check.sh" #脚本的文件地址 interval 2 weight 20 #此值须要大于MASTER的priority减去BACKUP的priority } vrrp_instance VI_1 { state MASTER #主节点为:MASTER,备节点为:BACKUP interface eth0 #当前虚拟机网卡 virtual_router_id 51 # 虚拟路由编号,主从要一直 priority 100 #优先级 数值越大,获取处理请求的优先级越高 advert_int 1 authentication { #此为认证方式,MASTER和BACKUP统一 auth_type PASS auth_pass 1314 } track_script { #调用上面的检查脚本 chk_nginx } virtual_ipaddress { #设定VIP地址 18.50.129.74/24 } }
继续配置slave节点。从节点backup配置和主节点同样,只是state要改为backup, priority 值要比master小点便可。测试
! Configuration File for keepalived global_defs { router_id ip地址 } vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 weight 20 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1314 } track_script { chk_nginx } virtual_ipaddress { 18.50.129.74/24 } }
最后编写脚本 nginx_check.shspa
#!/bin/bash A=`ps -C nginx --no-header | wc -l` if [ $A -eq 0 ]; then /usr/local/nginx/sbin/nginx sleep 2 if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then pkill keepalived fi fi
脚本说明:设计
脚本逻辑为检测进程若是没有nginx就尝试启动一次,而后等礴两秒,再检测,若是尚未上进程就结束keepalived进程。这样VIP就会移动到备份节点code
我这里是yum安装的Nginx,因此直接使用nginx命令能够启动nginx,若是你是源码安装,或者须要配置下环境变量或者更改下启动命令和绝对路径,并测试是否能正常启动router
若是以为等待两秒的时候过长能够更改成1秒进程
测试:ip
查看两个节点的Nginx服务是否启动成功,若是keepalived启动成功会调用启动Nginx,前提须要保证Nginx能正常启动
在Master故意更改错Nginx配置文件,并中止Nginx服务过几秒查看VIP是否已经移动至BACKUP,正常是会移动到BACKUP节点
恢复Master节点,查看VIP是否回到Master,正常VIP会绑定到Master