百万级并发架构设计:LVS+Nginx+Keepalived 方案详解!
off999 2025-09-21 21:05 50 浏览 0 评论
关注△mikechen△,十余年BAT架构经验倾囊相授!
大家好,我是mikechen睿哥。
随着互联网和移动应用的快速发展,应用的并发量不断增加,传统单机架构已无法满足大规模的高并发需求。
为了应对百万级并发访问,现代化的架构设计需要具备高可用性、负载均衡能力和弹性伸缩特性。
LVS(Linux Virtual Server)、Nginx 和 Keepalived ,通过它们的有机结合,可以有效地应对高并发压力。
如何实现百万级负载架构
整体架构,如下图所示:
整体架构,分工如下:
LVS:前端四层负载均衡,将流量分发到 Nginx;
Nginx:中间七层负载均衡,反向代理到后端应用;
Keepalived:监控 LVS 和 Nginx,提供 VIP 漂移;
后端应用:业务服务器(如 Tomcat、Spring Boot)。
Nginx
Nginx:作为反向代理和负载均衡器,在 Web 服务器前提供请求转发、缓存和 SSL 协议处理等功能。
Nginx 可以作为前端的负载均衡器,利用轮询、最少连接等策略将流量均衡分发到后端 Web 服务器。
Upstream 配置:通过 upstream 配置,Nginx 可以管理一组服务器,并对其进行负载均衡。
upstream backend_servers {# 负载均衡算法# least_conn;# ip_hash; server <app_server_ip_1>:<app_port> weight=5; server <app_server_ip_2>:<app_port> weight=5;# ... 添加更多应用服务器} server { listen <PORT>; server_name <your_domain_or_VIP>; location /{ proxy_pass http://backend_servers; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 其他 proxy 配置}# 其他 server 配置}Nginx 可以和 LVS 一起工作,提供七层负载均衡和高级流量管理。
LVS
LVS (Linux Virtual Server):提供四层负载均衡服务,负责将请求流量分发到多个后端 Web 服务器。
LVS 是内核级别的负载均衡,支持对 TCP 和 UDP 流量的高效转发。
它工作在操作系统的网络层,主要负责流量的分发和转发。
LVS工作原理
LVS 通过将客户端请求转发到多个真实服务器(Real Servers,简称 RS),实现负载均衡。
LVS 负责在请求和响应之间进行网络层的转发,通常采用轮询、最少连接、加权轮询等调度算法。
常用的调度算法:
- 轮询(Round Robin,RR):请求平均分配给所有服务器。
- 最少连接(Least Connections,LC):选择连接数最少的服务器。
- 加权轮询(Weighted Round Robin,WRR):根据权重分配请求。
LVS 提供了多种工作模式:
- NAT(Network Address Translation)模式:LVS 修改请求包和响应包的源 IP 和目标 IP,适用于内网小型集群。
- DR(Direct Routing)模式:LVS 只修改目标 MAC 地址,后端服务器直接向客户端响应,性能最好,适用于同网段部署。
- TUN(IP Tunnel)模式:LVS 使用 IP 隧道将流量传输给后端服务器,适用于跨网段部署。
LVS 作为负载均衡器,需要和 Keepalived 配合使用,以保证虚拟 IP 地址的高可用性。
Keepalived
Keepalived 是一款高可用性管理工具,使用 VRRP 协议实现主备 LVS 节点的 VIP 漂移。
当主节点故障时,VIP 会自动漂移到备节点,确保系统的高可用性。
Keepalived 通过 VRRP 协议在主备节点间共享虚拟 IP 地址。
主节点通过一定的优先级和健康检查机制,决定是否保持 VIP。
如果主节点失效,备节点会通过 Keepalived 获取 VIP,接管流量。
配置 Keepalived 时,需要为主备 LVS 服务器配置相同的 VIP 地址。
Keepalived 会定期检查 LVS 节点的健康状况,如果主节点出现故障,VIP 会迅速漂移到备节点。
vrrp_instance VI_1 { state MASTERinterface eth0 virtual_router_id 51 priority 100 advert_int 1 virtual_ipaddress {192.168.1.100}}最后,整体如下:
+--------------------------++-------------------++------------------+| LVS LoadBalancer|----|NginxFrontend|-----|WebServers||(Virtual IP Address)||(Proxy&Cache)||(Application)|+--------------------------++-------------------++------------------+|||+--------------------++--------------------++-----------------+|||||+----------++----------+||Keepalived||Keepalived|+-----------+|(Failover)||(Failover)||Database|+----------++----------++-----------+通过 Keepalived 实现 LVS 和 Nginx 的主备切换,保障系统的高可用性。
通过 LVS 和 Nginx 提供四层和七层的流量分发,确保流量均衡地分配到各个 Web 服务器。
以上
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
相关推荐
- 电脑装了两个系统怎么切换(电脑安装2个系统怎么更换启动)
-
1.点击运行打开电脑点击左下角的开始菜单栏选项,右击鼠标在序列栏中选择运行打开。2.输入msconfig接着在运行的输入框中输入msconfig点击确定即可打开系统配置。3.点击引导打开系统配置的页面...
- linux系统哪个版本好用(最好linux系统版本)
-
个人比较推荐Debian这个发行版本。DebianGNU/Linux于1993年首次公布,至今已经有近30年历史了。当然其他版本比如openSUSE,Slackware,ArchLinux,Ubu...
- win10激活在哪里查看(win10激活时间在哪里看)
-
在Windows10中,您可以通过以下方法查看激活状态:方法1:使用“设置”应用1.点击屏幕左下角的“开始”按钮,然后点击“设置”(齿轮图标)。2.在设置窗口中,点击“系统”图标。3.在“系统...
- 官方win10dll文件修复工具(官方win7dll文件修复工具)
-
当电脑丢失dll文件时,可以采用以下几种方法进行一键修复:从回收站还原:如果是不小心误删了一些计算机文件,导致电脑出现异常的情况时,首先就可以去回收站找回dll文件,如果文件还在,就可以通过还原操作来...
- qq所有历史旧版本大全(qq历史版本一览表)
-
有2种方法。一种是:你是QQ会员。你可以把旧版打开,聊天记录上传。然后打开新的QQ,下载。第2种是:你在硬盘上装了QQ软件,然后你就点卸载(uninst),把原来的卸了。然后按原位置覆盖,装上06版。...
- 电脑显示器分辨率怎么调(显示分辨率无法调整)
-
1、以win7为例,首先右键点击桌面,在右键菜单中直接显示了屏幕分辨率的选项,用鼠标点击一下这个选项。2、在分辨率设置选项页面中,有一个分辨率的选项,点击一下这个选项,上面默认显示的数值是你现在的屏幕...
- 8系统(8系统点检控制包含什么)
-
WIndows8系统是微软目前最新的操作系统,Moto的图形界面设计,使很多已经习惯于早期windows系统的用户难以接受,Windows8是一个向平板和桌面系统妥协的产物,存在着相当多的利弊。...
- 电脑软件管家(电脑软件管家在哪里找到)
-
电脑管家有着最大的安全云库,全新的杀毒引擎,深度清理电脑垃圾,为电脑重回巅峰状态,更有账号宝专版,10倍提升QQ防盗号能力,是很好用的。就自己而言,在电脑上用的是腾讯电脑管家这个第三方系统安全软件,管...
- 迅雷种子搜索器(迅雷种子搜索器手机版下载)
-
迅雷种子搜索方法: 1.在开始菜单栏或者到文件的安装路径文件夹中找到P2P种子搜索器。&nb...
- 手机怎么解压文件(苹果手机怎么解压文件)
-
手机解压文件方法:1、首先,在手机中找到文件管理,打开文件管理。2、打开文件管理之后找到压缩包,然后打开。3、打开安装包之后,选择需要的文件,。4、接下来找到“解压至”,点击“解压至”。5、点击之后,...
- 虚拟机安装centos7(虚拟机安装centos7图形界面)
-
安装CentOS7在虚拟机中,您可以按照以下步骤操作:1.下载CentOS7的ISO映像文件。2.打开虚拟机软件(如VMware、VirtualBox等)并创建一个新的虚拟机。3.在虚拟机创...
- 电脑老是重启(电脑老是重启什么原因造成的)
-
电脑由于工作环境积尘与空气湿度过大,经常使主板的接插件部分受潮产生氧化;特别是内存条插座、PCI扩展槽、键盘鼠标接口、LOT接口、CMOS电池压盒、ATX电源插座等。一旦它们出现接触不良现象,很容易出...
- win8系统怎么重装系统(win8.1系统重装教程)
-
1、修改Cortana资源占用:按Windows按钮,输入regedit,打开注册表编辑器,找到以下路径:HKEY_LOCAL_MACHINE—SYSTEM—CurrentControlSet—Ser...
- 手机163邮箱app下载(163邮箱下载手机版官网 app)
-
163邮箱登录首页入口为http://mail.163.com/网易163免费邮箱--中文邮箱第一品牌.容量自动翻倍,支持50兆附件,免费开通手机号码邮箱赠送3G超大附件服务.支持各种客户端软件收发,...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
慕ke 前端工程师2024「完整」
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
