keepalived主要是通过VRRP协议实现高可用的,VRRP是Virtual Router RedundancyProtocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行,VRRP是通过一种竞选机制来将路由的任务交给某台VRRP路由器的。 在 Keepalived服务正常工作时,主 Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活看,当主 Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主 Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的 IP资源及服务。而当主 Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。 VRRP是遑过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主挂了的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。在 Keepalived服务对之间,只有作为主的服务器会一直发送 VRRP广播包,告诉备它还活着,此时备不会枪占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性.接管速度最快可以小于1秒。 一个master的配置示例: [lh@nginx-master keepalived]$ cat /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id yw #定义路由标识信息,相同局域网要唯一 } vrrp_script chk_nginx_proxy { script '/server/scripts/chk_nginx_proxy.sh' #监控nginx的脚本 interval 2 weight 2 } vrrp_instance VI_1 { #定义实例 state MASTER # 状态参数 interface eth1 #指定网卡 virtual_router_id 55 #同一个集群ID要一致 priority 150 #优先级 越大越优先 advert_int 1 #主备通讯时间间隔 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.97.190.128/24 #定义的虚拟IP地址 } track_script { chk_nginx_proxy } } 备机的keepalived配置 备机的keepalived配置 使用ip addr show 查看master机器的IP信息: 可以发现128这个ip目前在这个机器上: master ip addr show 将master的keepalived停掉: [lh@nginx-master keepalived]$ sudo service keepalived stop Stopping keepalived: [ OK ] 然后在备机查看ip信息: 备机 ip addr show 可以发现IP已经漂移到了备机上,如果此时master上的keepalived重新启动,会发现128这个ip又会回到master机器上,因为master优先级比backup的高。 附chk_nginx_proxy.sh的脚本内容: [lh@nginx-master keepalived]$ cat /server/scripts/chk_nginx_proxy.sh #! /bin/sh if [ `netstat -lntup|grep nginx|wc -l` -ne 2 ];then /etc/init.d/keepalived stop fi [lh@nginx-master keepalived]$ |
|
来自: flyk0tcfb46p9f > 《电脑》