nginx+keepalived实现高可用实践

 更新时间:2026年05月11日 09:05:46   作者:叮当~~~  
keepalived是一个集群管理工具,保证集群高可用,通过VRRP协议选举出主节点,保证业务连续性,文中以部署Nginx+Keepalived高可用集群为例,详细描述了部署过程

什么是keepalived?

keepalived是集群管理中保证集群高可用的一个服务,类似于heartbeat,用来防止单节点故障。

keepalived工作原理

keepalived是以VRRP协议为基础实现的。

Virtual Route Redundancy Protocol,即虚拟路由冗余协议,它主要是实现路由器高可用的容错协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master,这样的话就可以保证路由器的高可用了。。

部署nginx+keepalived

环境准备:

  • 10.3.145.110[ master ]: nginx+keepaived
  • 10.3.145.111[ backup ]: nginx+keepalived

由于keepalived中的arp数据包要广播发送,eepalived中的master和backup要在同一个网段,确保它们之间相互通信。

VIP: 10.3.145.112 ( 必须局域网内是没有用过的 IP )

1.每台机器都要部署 nginx 作为web服务
# yum install -y nginx
# systemctl start nginx

2.每台机器都要部署 keepalived 服务
# yum install -y keepalived 
# systemctl start keepalived

3.修改keepalived的配置文件
[root@master ~]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
global_defs {
   router_id director1		
}

vrrp_instance VI_1 {
    state MASTER            #10.3.145.111的keepalived配置文件只需该成 BACKUP
    nopreempt				    
    interface ens33         #vip绑定机器的网卡接口
    virtual_router_id 90    #VRID 同一组集群,主备一致 
    priority 100	
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 11112
    }
    virtual_ipaddress {
		10.3.145.109        #vip地址
    }
}
4.都重启 keepalived 服务
# systemctl restart keepalived

查看vip是否生效:
# ip a

5.测试:把master的keepalived服务停止,切换到backup查看vip是否漂移

[root@master ~]# systemctl stop keepalived

[root@backup ~]# ip a    #查看到VIP,nginx高可用部署成功

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 高性能软件负载OpenResty介绍和安装使用详解

    高性能软件负载OpenResty介绍和安装使用详解

    OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项,这篇文章主要介绍了高性能软件负载OpenResty介绍和安装,需要的朋友可以参考下
    2023-12-12
  • Centos7安装、卸载nginx及配置,配置成系统服务方式(一步到位)

    Centos7安装、卸载nginx及配置,配置成系统服务方式(一步到位)

    这篇文章主要介绍了Centos7安装、卸载nginx及配置,配置成系统服务方式(一步到位),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 在nginx中设置三级域名的方法示例

    在nginx中设置三级域名的方法示例

    这篇文章主要介绍了在nginx中设置三级域名的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • nginx配置之部署后刷新产生404错误的解决

    nginx配置之部署后刷新产生404错误的解决

    文章总结:在前端部署过程中遇到浏览器刷新出现nginx_error的问题,通过配置nginx.conf文件中的try_files指令来解决,针对单页面应用的逻辑问题,确保登录页面的逻辑正确处理会话存储中的token,以避免页面刷新后回到登录页面的情况
    2026-02-02
  • Nginx中指令server_name的详细使用指南

    Nginx中指令server_name的详细使用指南

    对于Web开发者来说,Nginx是一个强大且灵活的Web服务器和反向代理服务器,下面这篇文章主要介绍了Nginx中指令server_name详细使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-07-07
  • nginx 搭建http-flv(rtmp)流媒体的方法步骤

    nginx 搭建http-flv(rtmp)流媒体的方法步骤

    本文主要介绍了nginx 搭建http-flv(rtmp)流媒体的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧<BR>
    2023-06-06
  • Nginx如何封禁IP和IP段的实现

    Nginx如何封禁IP和IP段的实现

    这篇文章主要介绍了Nginx如何封禁IP和IP段的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 讨论nginx location 顺序问题

    讨论nginx location 顺序问题

    在有一次配置时发现,请求 uri 明明是符合了前缀匹配 ^~ 规则,但 nginx 却没有使用,这让我对上述结论产生了疑惑。后续通过调研、实践后发现,上述结论可以说对,但也不对,是不是更疑惑了?没关系,看完这篇文章你就知道我为什么会这样说了
    2022-05-05
  • nginx代理本地文件夹如何获取数据

    nginx代理本地文件夹如何获取数据

    本文介绍了如何在Windows上安装和配置Nginx,包括下载、解压、启动服务以及修改配置文件以实现特定功能,还提供了关于Nginx常用命令的说明,方便用户管理服务
    2025-01-01
  • Nginx反向代理与缓存实现代码

    Nginx反向代理与缓存实现代码

    文章系统解析Nginx反向代理核心配置、缓存机制、性能优化、安全防护及高级应用场景,涵盖负载均衡、缓存策略、限流规则、日志监控等关键内容,提供生产环境配置建议与云原生适配方案,助力高效部署与运维,感兴趣的朋友跟随小编一起看看吧
    2025-08-08

最新评论