三废的日常--Nginx实现负载均衡

本文详细解读了Nginx如何通过upstream配置实现负载均衡,包括轮询、权重、ip_hash策略,并介绍了动静分离、高可用性保障措施,如使用keepalived和CDN。还涉及静态资源缓存和不同负载均衡策略的应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第二天。。小废给大废买了杯奶茶。。

大废:这才差不多,讲了这么多早就应该给我奶茶了,吧唧吧唧。。

大废:那今天就来讲讲Nginx是如何实现负载均衡吧。

二废:这个我知道,我看过Nginx的配置,nginx通过upstream下的配置,对配置的服务器进行负载均衡,具体配置如下*。

http {  listen 80;  server_name localhost;    upstream webservers {      ip_hash;      server 192.168.0.1:8080;      server 192.168.0.2:8080;   }...}

其中,listen是访问nginx的端口,server_name是访问路径,这里默认是 localhost,端口默认是80。server是两台应用服务器,由Nginx通过负载均衡策略来选择访问应用服务器,做到了应用负载。

大废:二废看来昨天偷偷做功课了呀。这样的架构设计看起来是可以支撑业务的快速增长,但所有的访问都会直接请求服务器,这显然是不太安全,因此一般也会在软负载均衡后面,增加一个网关。这样所有流量经过Server时都要先去网关进行鉴权,除了鉴权外,网关还可以起到协议转换、流量控制等功能。

小废:我看书上介绍Nginx还可以对静态资源进行处理,这是怎么做到的呀

大废:没错,如果应用服务器有一些静态资源,后端服务器每次都要从磁盘加载文件会比较影响性能,而Nginx的proxy cache功能能够提升对静态资源的处理能力。​​​​​​​

location /static/images/ {  root /home/www/;  charset utf-8;}

注:实际上静态资源在服务器上的位置为:/home/www/static/images/hello.png

这样配置后,如此访问便可以访问到对应的静态资源 http://localhost:8080/static/images/hello.png 此时Nginx作为了一台静态资源服务器。​​​​​​​

location /static/images/ {  alias /home/www;  charset utf-8;}

注:这样访问的服务器上的位置为:/home/www/hello.png

小废:这样是不是就做到了动静分离。那Nginx如何保证高可用呢?

大废:由于Nginx在上面整个架构中作为流量的入口,如果Nginx不能正常工作或服务器宕机,将导致整个服务不可用。因此可以通过keepalived的机制来保证Nginx双活。

大废:架构一定要根据实际业务来设计,脱离业务的设计是没有意义的,对于业务量不大的系统,用Nginx作为负载均衡是完全够用的。当然,对于大型互联网企业则需要调整一些设计,比如静态资源应该部署在CDN上, CDN 会自动选择离用户最近的节点返回给用户,同时,流量很大时可以选择DNS负载均衡解析域名,大概如下图。

总结:

轮询策略配置:

在配置文件upstream中,ip_hash是指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,可以解决session不能跨服务器的问题。同时,还有以下其他几种轮询策略,依次介绍如下。

  1. 轮询,默认策略,不需要加任何配置,是upstream模块默认的负载均衡策略,会将每个请求顺序分发到不同的后端服务器上。

  2. 权重(weight):指定轮询的访问权重,用于后端服务器性能不均时的策略。

  3. upstream webservers {  server 192.168.0.1:8080 weight=7;    server 192.168.0.2:8080 weight=3;}
  4. ip_hash(依据ip分配):指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,可以解决session不能跨服务器的问题。

  5. least_conn(最少连接):将请求转发给连接数较少的服务器。

upstream webservers {    least_conn;    server 192.168.0.1:8080 weight=7;    server 192.168.0.2:8080 weight=3;}

    6. fair:按照服务器端的响应时间来分配请求,响应时间短的优先分配。

​​​​​​​

upstream webservers {    fair;    server 192.168.0.1:8080 weight=7;    server 192.168.0.2:8080 weight=3;}
高校信息中心部门工作管理系统 软件开发需求文档 1. 引言 1.1 项目背景 随着高校信息中心业务的不断拓展,部门日常工作日益繁杂,为提高工作管理效率、规范工作流程、便于工作考核,特计划开发部门工作管理系统,实现工作任务的数字化管理。 1.2 项目目标 开发一个基于 B/S 架构的部门工作管理系统,满足系统管理员、部门负责人、部门员工三类角色的工作需求,实现工作任务的全生命周期管理,支持工作统计与信息导出,提升部门工作管理的规范化和高效化水平。 1.3 项目范围 本系统仅用于高校信息中心内部的工作管理,涵盖用户管理、工作大类管理、任务管理、统计分析等功能模块,不涉及高校其他部门的业务管理。 2. 总体描述 2.1 系统目标 实现多角色用户的权限管理,确不同角色按权限操作。 实现工作任务的创建、下发、接收、执行、提交等全流程管理。 支持工作任务相关信息的详细记录,包括工作名称、时间、状态等。 提供工作统计分析功能,支持按时间对工作大类进行统计。 支持工作信息及佐证材料的导出,方便考核工作开展。 2.2 用户特点 系统管理员:熟悉系统管理操作,负责系统用户和基础数据管理。 部门负责人:了解部门工作规划,需要创建和下发任务,关注任务进展。 部门员工:主要执行任务,需要及时更新任务状态和提交相关材料。 2.3 运行环境 服务器操作系统:CentOS 7。 数据库:MySQL 5.7 及以上版本。 服务端:使用nodejs。 web应用:使用vue。 客户端:主流浏览器(Chrome 80 及以上、Firefox 75 及以上、Edge 80 及以上)。 3. 具体需求 3.1 功能需求 3.1.1 用户管理模块(系统管理员操作) 用户添加:录入用户基本信息(姓名、工号、所属部门、角色等),设置初始密码。 用户查询:可按姓名、工号、角色等条件查询用户信息。 用户修改:修改用户的基本信息(除工号外),可重置用户密码。 用户删除:删除不再使用系统的用户账号。 3.1.2 工作大类管理模块(系统管理员操作) 工作大类添加:录入工作大类名称、描述等信息。 工作大类查询:查询所有工作大类信息。 工作大类修改:修改工作大类的名称、描述等信息。 工作大类删除:删除不再使用的工作大类(需确该大类下无相关任务)。 3.1.3 任务管理模块 3.1.3.1 部门负责人操作 定制任务:创建新任务,填写任务基本信息(工作名称、所属工作大类、工作开始时间、工作结束时间、任务描述等)。 下发任务:将定制的任务下发给指定的部门员工,下发后任务状态为 “未领取”。 创建个人任务:创建属于自己的工作任务,填写相关信息,任务状态可自行设置为 “进行中” 等。 查看任务:查看所有自己创建、下发的任务及任务的详细状态(包括接收人、当前状态、完成情况等)。 任务催办:对处于 “未领取” 或 “进行中” 且即将超时的任务,向相关员工发送催办通知。 3.1.3.2 部门员工操作 接收任务:查看部门负责人下发的 “未领取” 任务,选择接收或拒绝(拒绝需填写理由)。 创建个人任务:创建属于自己的工作任务,填写相关信息。 更新任务状态:根据任务进展,将任务状态从 “进行中” 更新为 “已完成” 等。 填写量化指标:针对任务填写量化指标,如完成数量、完成比例等。 上传佐证材料:上传与任务相关的佐证材料,支持文本文件、图片、pdf 等多种格式。 查看个人任务:查看自己接收的任务和创建的个人任务及其详细信息。 3.1.4 统计分析模块 按时间统计:可按年、月、日等时间维度对各工作大类的任务数量、完成情况等进行统计。 统计结果展示:以表格、图表(柱状图、饼图等)形式展示统计结果。 信息导出:导出统计结果对应的工作信息及相关佐证材料,支持 Excel、PDF 等格式。
最新发布
07-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值