keepalived结合nginx怎么实现高可用(nginxkeepalived几种模式)

keepalived结合nginx怎么实现高可用(nginxkeepalived几种模式)

浏览次数:
信息来源: 用户投稿
更新日期: 2026-02-26
文章简介

1.简介keepalived是一个基于vrrp协议来实现的lvs服务高可用方案,可以利用其来避免单点故障。一个lvs服务会有2台服务器运行keepalived,一台为主服务器(master),一

2025阿里云双十一服务器活动

1.简介

keepalived是一个基于vrrp协议来实现的lvs服务高可用方案,可以利用其来避免单点故障。一个lvs服务会有2台服务器运行keepalived,一台为主服务器(master),一台为备份服务器(backup),但是对外表现为一个虚拟ip,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟ip,继续提供服务,从而保证了高可用性。keepalived是vrrp的完美实现,因此在介绍keepalived之前,先介绍一下vrrp的原理。

1.vrrp协议简介

在现实的网络环境中,两台需要通信的主机大多数情况下并没有直接的物理连接。对于这样的情况,它们之间路由怎样选择?主机如何选定到达目的主机的下一跳路由,这个问题通常的解决方法有二种:

  1. 在主机上使用动态路由协议(rip、ospf等)

很明显,在主机上配置动态路由是非常不切实际的,因为管理、维护成本以及是否支持等诸多问题。配置静态路由就变得十分流行,但路由器(或者说默认网关defaultgateway)却经常成为单点故障。vrrp的目的就是为了解决静态路由单点故障问题,vrrp通过一竞选(election)协议来动态的将路由任务交给lan中虚拟路由器中的某台vrrp路由器。

2.vrrp工作机制

在一个vrrp虚拟路由器中,有多台物理的vrrp路由器,但是这多台的物理的机器并不能同时工作,而是由一台称为master的负责路由工作,其它的都是backup,master并非一成不变,vrrp让每个vrrp路由器参与竞选,最终获胜的就是master。master拥有一些特权,比如,拥有虚拟路由器的ip地址,我们的主机就是用这个ip地址作为静态路由的。拥有特权的master要负责转发发送给网关地址的包和响应arp请求。

vrrp通过竞选协议来实现虚拟路由器的功能,所有的协议报文都是通过ip多播(multicast)包(多播地址224.0.0.18)形式发送的。虚拟路由器由vrid(范围0-255)和一组ip地址组成,对外表现为一个周知的mac地址。所以,在一个虚拟路由器中,不管谁是master,对外都是相同的mac和ip(称之为vip)。客户端主机并不需要因为master的改变而修改自己的路由配置,对客户端来说,这种主从的切换是透明的。

在一个虚拟路由器中,只有作为master的vrrp路由器会一直发送vrrp通告信息(vrrpadvertisementmessage),backup不会抢占master,除非它的优先级(priority)更高。当master不可用时(backup收不到通告信息),多台backup中优先级最高的这台会被抢占为master。这种抢占是非常快速的(<1s),以保证服务的连续性。由于安全性考虑,vrrp包使用了加密协议进行加密。

3.vrrp工作流程

路由器启动时,如果路由器的优先级是255(最高优先级,路由器拥有路由器地址),要发送vrrp通告信息,并发送广播arp信息通告路由器ip地址对应的mac地址为路由虚拟mac,设置通告信息定时器准备定时发送vrrp通告信息,转为master状态;否则进入backup状态,设置定时器检查定时检查是否收到master的通告信息。

  1. 用vrrp虚拟mac地址响应路由器ip地址的arp请求;

  2. 转发目的mac是vrrp虚拟mac的数据包;

  3. 如果是虚拟路由器ip的拥有者,将接受目的地址是虚拟路由器ip的数据包,否则丢弃;

  4. 当收到shutdown的事件时删除定时通告定时器,发送优先权级为0的通告包,转初始化状态;

  5. 如果定时通告定时器超时时,发送vrrp通告信息;

  6. 收到vrrp通告信息时,如果优先权为0,发送vrrp通告信息;否则判断数据的优先级是否高于本机,或相等而且实际ip地址大于本地实际ip,设置定时通告定时器,复位主机超时定时器,转backup状态;否则的话,丢弃该通告包;

  1. 不能响应针对虚拟路由器ip的arp请求信息;

  2. keepalived结合nginx怎么实现高可用,nginxkeepalived几种模式

    不接受目的是虚拟路由器ip的所有数据包;

  3. 当收到shutdown的事件时删除主机超时定时器,转初始化状态;

  4. 主机超时定时器超时的时候,发送vrrp通告信息,广播arp地址信息,转master状态;

  5. 收到vrrp通告信息时,如果优先权为0,表示进入master选举;否则判断数据的优先级是否高于本机,如果高的话承认master有效,复位主机超时定时器;否则的话,丢弃该通告包;

4.arp查询处理

当内部主机通过arp查询虚拟路由器ip地址对应的mac地址时,master路由器回复的mac地址为虚拟的vrrp的mac地址,而不是实际网卡的mac地址,这样在路由器切换时让内网机器觉察不到;而在路由器重新启动时,不能主动发送本机网卡的实际mac地址。如果虚拟路由器开启的arp代理(proxy_arp)功能,代理的arp回应也回应vrrp虚拟mac地址。

2.搭建环境

1.服务器1:10.63.0.154安装keeplived并设置priority优先值为1002.服务器2:10.63.0.155安装keeplived并设置priority优先值为983.设置两台服务器对应的虚拟ip为:10.63.0.158

3.安装keepalived主节点

本次安装keepalived采用yum的模式,在服务器1上安装,主要操作步骤如下:

1.安装ipvsadm,指令:yuminstallipvsadm,安装完成后,可通过指令ipvsadm–v查看版本号。2.安装keepalived,指令:yuminstallkeepalived,安装完成后,可通过指令keepalived–v查看版本号。3.创建/usr/local/nginx/nginx_check.sh脚本。脚本内容如下:

a=`ps-cnginx--no-header|wc-l`

if[`ps-cnginx--no-header|wc-l`-eq0];then

fi

设置nginx_check.sh权限,设置命令为:chmod777/usr/local/nginx/nginx_check.sh

4.配置keepalived节点信息,默认配置文件为/etc/keepalived/keepalived.conf。keepalived.conf配置文件如下:

!configurationfileforkeepalived

script"/usr/local/nginx/nginx_check.sh"

}

ps-ef|grepnginx非systemctl配置开机启动:chmod+x/etc/rc.d/rc.local加入启动脚本其中路径一定要用全路径如:/usr/local/nginx/sbin/nginx

以上就是keepalived结合nginx怎么实现高可用的详细内容,更多请关注主机测评网其它相关文章!

标签:
什么是多云管理(什么是多云管理服务)
« 上一篇
返回列表
下一篇 »

如本文对您有帮助,就请抽根烟吧!