百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

4步配置Nginx + Keepalived + Havip,解决前端单点问题

off999 2025-01-16 20:28 10 浏览 0 评论

本文出自头条号老王谈运维,转载请说明出处。

前言

在现实生产环境中,对于HTTP或HTTPS的请求,Linux运维工程师使用Nginx作为服务器的负载均衡,与此同时Nginx自身也成为了新的单点故障,即:只要 Nginx 挂了,网站也就挂了。

此文档主要是为了解决前端 Nginx 单点问题,使用Keepalived + Havip 实现NGINX 高可用。

如果无特殊要求,建议还是通过SLB + 两台NGINX 方式来解决NGINX 单点问题

一、环境准备

VPC 环境 (必须,因为HAVIP 只能基于VPC)

  • OS :CentOS 7.4
  • Node 1: 172.16.51.149 (master)
  • Node 2:172.16.51.148 (backup)
  • EIP: 用于绑定在HAVIP 上,对外提供服务
  • HAVIP: 集群虚拟IP (需要申请)

HAVIP 申请条件

对客户的要求是大客户(已上云规模),并且需要用户具备自行配置的能力。提供用户对HAVIP的具体使用场景。

(如自建 Mysql 高可用/VPN/SNAT等,仅支持当前已有产品不支持的场景。例如,服务节点高可用的需求 SLB 主备服务器组功能可以满足,请引导用户使用 SLB )。

二、拓扑情况

(阿里云HAVIP控制台自动生成的拓扑)

三、应用环境搭建

  • NGINX 搭建 (过程略)
  • Keepalived 搭建 (过程略,直接用yum 安装即可)
  • 配置开机启动 (我这里应用环境都是采用yum 安装,系统环境是CentOS 7.4 )直接使用以下命令设置开机启动即可

设置开机启动

systemctl enable nginx
systemctl enable keepalived

四、配置Keepalived

配置文件详解可参考文档尾部的《参考文档》

master 配置

! Configuration File for keepalived
 global_defs { 
 router_id LVS_DEVEL
}
 vrrp_instance VI_1 {
 state MASTER
 interface eth0
 virtual_router_id 55
 priority 100
 advert_int 1
 authentication {
 auth_type PASS
 auth_pass 1111
 }
 virtual_ipaddress {
 172.16.51.252 dev eth0 label eth0:havip # 配置HAVIP 地址
 }
 unicast_src_ip 172.16.51.149 # 单播模式,本机IP
 unicast_peer {
 172.16.51.148 #BACKUP 主机IP 地址
 }
}
Backup 配置
! Configuration File for keepalived
 global_defs { 
 router_id LVS_DEVEL
}
 vrrp_instance VI_1 {
 state BACKUP
 interface eth0
 virtual_router_id 55
 priority 80
 advert_int 1
 authentication {
 auth_type PASS
 auth_pass 1111
 }
 virtual_ipaddress {
 172.16.51.252
 }
 unicast_src_ip 172.16.51.148 # 单播模式,本机IP
 unicast_peer {
 172.16.51.149 #BACKUP 主机IP 地址
 }
}

五、验证

需要先启动两台服务器的NGINX 和Keepalived ,启动方式直接使用

systemctl start nginx (keepalived) 即可
  • 确认havip 是否存在

配置完成且正常启动 keepalived 后,HAVIP 会在Master 节点上现出来

  • 控制台页面主备信息可以正常显示
  • 访问验证

直接访问HAVIP 的公网IP地址,正常情况下访问到的内容是 Master(node1,主实例) 上

  • 模拟宕机验证

关闭ECS主实例(master 节点),确认备实例是否能被正常访问以及节点状态是否发生变化

HAVIP 自动绑定到node2 实例上

之前的主实例由于宕机,自动降为备实例,老的备实例升级为主实例

再次访问HAVIP 的公网地址,访问到的内容是node2

注:

如果需要监控进程和端口的,可以自行写脚本完成

参考文档

https://www.keepalived.org/manpage.html

https://blog.csdn.net/u012758088/article/details/76599500


网站崩溃找不到原因?平台搭建无从下手?热门技术不想落伍?想要变强找不到资料?

加入[IT拯救联盟],让大牛和同伴拯救你,带你装x带你飞。定期干货分享、大牛专业解答、实用IT工具优选.....

私信小编“联盟”,即可加入我们~

相关推荐

30s带你使用Python打包exe文件,并修改其图标

在Python中,我们可以使用PyInstaller或cx_Freeze等工具将Python脚本打包成可执行文件(.exe),并且能够修改生成的.exe文件的图标。使用PyInstaller...

Python一键打包为windows的exe文件,无需安装python环境即可执行

一、为什么要将Python打包为exe?在实际应用中,我们希望Python程序能在没有安装Python环境的电脑上直接运行。将Python代码打包为exe可执行文件,不仅能解决环境依赖问题,还便于程...

py2exe实现python文件打包为.exe可执行程序(上篇)

今天分享的内容为:python程序实现发送、读取邮件来控制电脑的关机与重启(作为py2exe打包成.exe可执行程序的基础文件)一、说明:本文介绍的是使用新浪邮箱作为例子进行讲解,代码实现如下:#c...

如何将python程序文件打包生成一个可执行文件(exe文件)

在开发Python程序后,有时我们希望将其打包成一个可执行的exe文件,方便在没有Python环境的计算机上运行。下面将详细介绍使用常见工具实现这一目标的方法。安装PyInstaller...

Python程序打包为EXE的全面指南:从入门到精通

引言在Python开发中,将程序打包成可执行文件(EXE)是分发应用程序的重要环节。通过打包,我们可以创建独立的可执行文件,让没有安装Python环境的用户也能运行我们的程序。本篇文章将详细介绍如何使...

10个你没有充分利用的令人惊叹的 Python 特性

Python的简单性和多功能性使其成为全球开发人员的最爱。每天有超过1000万开发者使用Python进行从网络开发、机器学习到网络脚本等各种开发,Python的功能非常强大。然而,我们中的...

编程语言可以用来做什么

1.web前端你每天浏览的网页,所看到的页面特效,均是由web前端工程师来实现的2.Java大型购物网站有关通信及网络企业大型企业级应用管理系统大型网游后台数据3.C++嵌入式三维游戏领域人工智能领域...

用Python进行机器学习(16)-内容总结

对于用Python进行机器学习的内容,到这里就要做一个阶段性总结啦,后续再写的文章就是关于深度学习的了,算是对该部分内容的进阶版。对于机器学习,我们主要介绍了五个方面的内容:第一个就是分类算法,主要包...

普通人如何利用python做自媒体赚收益

普通人利用Python做自媒体赚收益,最简单的方式是下载某些网站的视频,并利用剪影编辑视频,最后导出发布,每天可以制作个10几条,并设置好定时发布,每天如此坚持下去,一定会有所收获的...

AI能写什么做什么?这些技能已经颠覆你的认知!

在ChatGPT、文心一言等AI工具爆火的今天,人工智能早已不再是科幻电影里的概念,而是实实在在地渗透进我们的生活。**AI到底能写什么?能做什么?它的边界在哪里?**让我们一探究竟!---**1....

Python 3.14 新特性盘点,更新了些什么?

Python3.14.0稳定版将于2025年10月正式发布,目前已进入beta测试阶段。这意味着在往后的几个月里,3.14的新功能已冻结,不再合入新功能(除了修复问题和完善文档)。3...

每天一个Python库:sys模块的5个高频用法(建议收藏)

很多人学Python,一直卡在“写不了实用脚本”。其实,会用标准库,效率直接翻倍。今天分享的是:sys模块。这个模块虽然基础,但非常实用,下面是我亲测常用的5个功能1.获取命令行参数(自动化脚...

Python除了做爬虫抓数据还能做什么?其实还能监视和衡量网站性能

  借助这份对初学者友好的指南,您可以构建自己的自定义Python脚本来自动测量网站的关键速度和性能指标。  在过去的一个月中,Google宣布了许多通过关键速度和性能指标来衡量用户体验的方法。  巧...

python究竟可以用来做些什么

这里就不撰述python的一些像什么“高级语言”之类的比较常规的介绍了,还是老样子,说说一些比较常用的东西吧。python是什么python,一款可编程的开源软件,很多第三方库、框架也是开源的,比如强...

Python 实现 dubbo 协议接口自动化测试

前言python语言也可以实现对dubbo协议的接口进行调用与测试,可以使用python+hessian结合的方式,也可以使用python+telnet结合的方式模拟命令行的模式来实现对...

取消回复欢迎 发表评论: