分享

keepalived简单配置实现nginx高可用

 flyk0tcfb46p9f 2018-03-15

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]$

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多