高并发高可用架构设计之Nginx部署
本篇文章主要搭建nginx的双机热备搭建,实现Nginx的高可用。
以下介绍LVS+keepalived+nginx部署。
先来简单介绍下nginx吧:
nginx以占用内存小,并发高著称,常用作反向代理和负载均衡。
nginx高可用方案使用最广的是LVS+keepalived+双机热备,接下来说下怎么部署。
nginx高可用
上图为nginx的负载均衡架构图,解决了web容器的的单点故障和高并发的问题,当LVS的master节点故障时,LVS的backup节点会替代主节点;但是当一台nginx故障时,请求将会打到另一台上。
LVS
LVS(Linux Virtual Server)即Linux虚拟服务器,实现了基于IP的数据请求负载均衡调度方案;是四层负载均衡。
流程是:客户端发出请求,会先到DNS服务器上,之后解析到LVS负载均衡调度器上,LVS会虚拟出来一个外网IP(即VIP),此时客户端用户会连接到这个VIP,LVS会根据指定的调度算法确定具体要连接到哪一台nginx服务器上。如下图:
keepalived
主要使用keepalived来做nginx的健康检测和高可用,keepalived的高可用是通过VRRP协议实现的。VRRP协议保证当主机的下一个路由器出现故障时,由另外一个路由器代替出现故障的路由器进行工作,从而保证网络通信的连续性和可靠性。
LVS实现负载均衡,但他并不知道nginx是否正常运行,即使nginx挂掉,LVS依旧会把请求发送到挂掉的服务器。
keepalived实现了真机故障隔离和负载均衡器间的失败切换,防止单点故障。
Nginx双机热备
双机热备是指一台服务器提供服务,另一台处于备用状态,当主机挂掉后,备用机器会代替主机继续服务。双机热备主要解决nginx单点故障问题。
搭建
准备四台服务器,我搭建时使用的是CentOS7。
主机:192.168.2.130,做nginx1;
主机:192.168.2.131,做nginx2;
主机:192.168.2.132,做keepalived的master节点;
主机:192.168.2.133,做keepalived的backup节点;
虚拟IP(VIP):192.168.2.150
服务器安装依赖
安装Nginx
在192.168.2.130和192.168.2.131两台机器上安装nginx,命令如下
安装keepalived
在192.168.2.132和192.168.2.133两台机器上安装keepalived,命令如下
安装ipvsadm
用于查看lvs转发及代理情况的工具,只需要在 192.168.2.132和 192.168.2.133上安装即可
配置nginx服务器
在 192.168.2.130和 192.168.2.131构建虚拟网络接口子接口
添加一个host,去接收报文交给lo:1处理
配置keepalived
配置keepalived的mater节点
修改keepalived文件
修改内容如下
保存退出,重启keepalived服务
systemctl restart keepalived
配置keepalived的backup节点,操作如上,配置文件内容如下
ipvsadm操作
查看当前配置的虚拟服务和各个RS的权重
ipvsadm -Ln
查看当前ipvs模块中记录的连接
ipvsadm -Lnc
测试
访问VIP,即192.168.2.150,可看到展示nginx访问页面,多刷新几次,可看到nginx两台机器在轮询访问。
将nginx服务停掉一台,看到访问会都到还运行的机器上;将keepalived的master节点停掉,请求依然好用,说明backup起作用了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库