【运维项目经历|003】:Nginx集群化运维升级项目

目录

项目名称

项目背景

项目目标

项目成果

我的角色与职责

我主要完成的工作内容

本次项目涉及的技术

本次项目遇到的问题与解决方法

本次项目中可能被面试官问到的问题

问题1:为什么选择nginx-1.25.4版本,nginx官方最新版本是哪一个版本?

问题2:Nginx应用场景?

问题3:Nginx 有哪些优点?

问题4:nginx中怎么配置反向代理?

问题5:什么是正向代理?

问题6:什么是反向代理?

问题8:nginx和apache的区别

问题9:什么是动态资源、静态资源分离?

问题10:Nginx负载均衡实现的策略有哪些?

问题11:nginx的URL重定向怎么配置的?

经验教训与自我提升

展望未来


项目名称

项目简称或代号:SUN项目(这个可以自己随便编一个,每个公司的每个项目简称或代号都是内部任意起名的,显得专业一点,一般是项目关键词的首拼,比如这个CSUN是:ScaleUp Nginx)

项目全名:Nginx集群化运维升级项目 - "ScaleUp Nginx"

项目背景

随着公司业务的发展和用户量的不断增长,现有的Nginx服务器集群已逐渐无法满足高性能、高可用的要求。同时,老旧的Nginx版本存在安全隐患和性能瓶颈,需要进行升级和优化。因此,公司决定启动"ScaleUp Nginx"项目,对Nginx集群进行全面的升级和改造。

项目目标

  1. 升级Nginx到[ nginx-1.25.4]版本,提高安全性和性能。

  2. 优化Nginx集群架构,提高系统的可扩展性和容错能力。

  3. 实现Nginx集群的自动化运维,减少人工干预和错误。

  4. 制定完善的监控和告警策略,确保Nginx集群的稳定运行。

项目成果

  1. 成功将Nginx升级到 nginx-1.25.4版本,并通过安全测试。

  2. 构建了高性能、高可用的Nginx集群架构,支持水平扩展和负载均衡。

  3. 实现了Nginx集群的自动化运维,包括配置管理、版本更新、故障恢复等。

  4. 建立了完善的监控和告警系统,确保Nginx集群的稳定运行。

我的角色与职责

在"ScaleUp Nginx"项目中,我担任运维团队的核心成员,负责Nginx集群的升级、优化和自动化运维工作。

我主要完成的工作内容

  1. 研究Nginx最新版本的功能和性能,制定升级方案。

  2. 编写自动化脚本,实现Nginx集群的自动化部署和配置管理。

  3. 优化Nginx集群架构,包括负载均衡、缓存、SSL配置等。

  4. 搭建监控和告警系统,实时监控Nginx集群的运行状态。

本次项目涉及的技术

  1. Nginx及其模块(如ngx_http_ssl_module、ngx_http_proxy_module等)

  2. 自动化运维工具(如Ansible、Shell脚本等)

  3. 监控和告警系统(如Prometheus、Grafana、zibbix等)

  4. 版本控制系统(如Git)

本次项目遇到的问题与解决方法

问题1:nginx-1.25.4版本与现有应用存在兼容性问题。

解决方法:分析兼容性问题的原因,调整Nginx配置或应用代码,确保兼容性。

问题2:自动化部署脚本执行过程中存在错误。 解决方法:检查脚本逻辑和语法,发现因为操作系统未安装开发工具包组件,修复错误并在nginx自动化安装脚本中添加安装开发工具包组件的相关命令,并进行充分的测试。

本次项目中可能被面试官问到的问题

问题1:为什么选择nginx-1.25.4版本,nginx官方最新版本是哪一个版本?

nginx官方发布的版本公告为2024-04-23发布的版本nginx-1.26.1,截至2024年5.13日并未发布新版本。

选择nginx-1.25.4版本是因为新版本nginx的功能相比于老版本更强大和更加稳定。没有考虑最新版本是因为考虑到最新版本发布的时间并不久,可能会存在稳定性等未知因素,经综合考虑觉得采用新版本但不能是最新的nginx版本。

问题2:Nginx应用场景?

  • http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。

  • 虚拟主机。可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。

  • 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。

  • nginz 中也可以配置安全管理、比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截。

问题3:Nginx 有哪些优点?

  • 跨平台、配置简单。

  • 非阻塞、高并发连接:处理 2-3 万并发连接数,官方监测能支持 5 万并发。

  • 内存消耗小:开启 10 个 Nginx 才占 150M 内存。

  • 成本低廉,且开源。

  • 稳定性高,宕机的概率非常小。

  • 内置的健康检查功能:如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了。重新将请求提交到其他的节点上

问题4:nginx中怎么配置反向代理?

在nginx配置文件的server模块中配置要代理的后端服务器的信息,如下:

server {  
......location / {  proxy_pass http://ip:端口;  proxy_set_header Host $host;  proxy_set_header X-Real-IP $remote_addr;  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  }  
}#在server块中,你需要指定Nginx监听的端口和域名
#使用location指令来定义哪些URL应该被代理到后端服务器
#使用proxy_pass指令来指定请求应该被转发到的后端服务器地址。你可以使用在upstream指令中定义的服务器组名
#使用proxy_set_header指令来设置请求头,以便后端服务器能够正确地处理请求
如果要代理的后端服务器比较多,也可以在upstream模块中配置多个后端服务器地址端口信息,然后在server模块中直接调用这个upstream模块名称即可
upstream name_001 {  server backend1.example.com;  server backend2.example.com;  
}
​
server {  
.......location / {  proxy_pass http://name_001;  }  
}

问题5:什么是正向代理?

一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。

客户端才能使用正向代理。正向代理总结就一句话:代理端代理的是客户端。例如说:我们使用的OpenVPN 等等。

问题6:什么是反向代理?

反向代理(Reverse Proxy)方式,是指以代理服务器来接受 Internet上的连接请求,然后将请求,发给内部网络上的服务器并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

问题7:nginx反向代理服务器的优点是什么?

反向代理服务器可以隐藏源服务器的存在和特征。它充当互联网云和web服务器之间的中间层。这对于安全方面来说是很好的,特别是当使用web托管服务时。

问题8:nginx和apache的区别

  • 轻量级,同样起web服务,比apache占用更少的内存和资源。

  • 抗并发,nginx处理请求是异步非阻塞的,而apache则是阻塞性的,在高并发下nginx能保持低资源,低消耗高性能。

  • 高度模块化的设计,编写模块相对简单。

  • 最核心的区别在于apache是同步多进程模型,一个连接对应一个进程,nginx是异步的,多个连接可以对应一个进程。

问题9:什么是动态资源、静态资源分离?

动态资源、静态资源分离,是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。

动态资源、静态资源分离简单的概括是:动态文件与静态文件的分离。

问题10:Nginx负载均衡实现的策略有哪些?

  • 轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某个服务器宕机,能自动剔除故障系统。

upstream backserver { server 192.168.0.12; server 192.168.0.13; 
} 
  • 权重 weight:weight的值越大,分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。其次是为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。

# 权重越高,在被访问的概率越大,如上例,分别是20%,80%。
upstream backserver { server 192.168.0.12 weight=2; server 192.168.0.13 weight=8; 
} 
  • ip_hash( IP绑定):每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题

upstream backserver { ip_hash; server 192.168.0.12:88; server 192.168.0.13:80; 
} 
  • fair(第三方插件):必须安装upstream_fair模块。

对比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,响应时间短的优先分配。

# 哪个服务器的响应速度快,就将请求分配到那个服务器上。
upstream backserver { server server1; server server2; fair; 
} 
  • url_hash(第三方插件):必须安装Nginx的hash软件包

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。

upstream backserver { server squid1:3128; server squid2:3128; hash $request_uri; hash_method crc32; 
}

问题11:nginx的URL重定向怎么配置的?

  • 使用rewrite指令进行URL重写和重定向。rewrite指令的基本语法是rewrite regex replacement [flag];,其中regex是匹配URL的正则表达式,replacement是替换后的URL,flag是重写标记。

  • 如果只是进行简单的URL重定向,也可以直接使用return指令,如return 301 /new-url;表示将请求永久重定向到/new-url

示例配置:将/old-url重定向到/new-url的示例配置如下

server {  
......location /old-url {  return 301 /new-url; # 永久重定向到/new-url  }  
...... 
}
使用rewrite指令进行更复杂的URL重写和重定向:server {  
......location /old-url {  rewrite ^/old-url(.*)$ /new-url$1 permanent; # 永久重定向到/new-url,并保留查询参数  }  
......
}

经验教训与自我提升

通过本次项目,我深刻认识到运维工作的重要性和复杂性。我意识到自己在技术深度和广度上还有待提高,特别是在自动化运维和监控方面。未来,我将继续学习和实践,不断提高自己的技能和能力。

展望未来

展望未来,我将继续关注Nginx及其相关技术的发展趋势,不断探索和实践新的运维技术和方法。同时,我将与团队成员紧密合作,共同为公司业务的稳定和发展贡献力量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/12805.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

河南广电与LiblibAI签署战略合作协议

5月15日,河南广电科技与LiblibAI战略签约仪式在郑州中原福塔新闻发布厅隆重举行。双方将本着“共商、共享、共建、共赢”原则,基于全面、可持续的战略合作伙伴关系,发挥各自优势,共同聚焦生成式AI领域,围绕内容创作、商…

CPU占用率过高排查

CPU占用率高是设备本身的一种现象,直观表现为display cpu-usage命令查询结果中整机CPU占用率“CPU usage”偏高,如超过70%。在网络运行中CPU高常常会导致其他业务异常,如BGP震荡、VRRP频繁切换、甚至设备无法登录。 通常,整机CPU占…

Java基础教程 - 7 面向对象-1

更好的阅读体验:点这里 ( www.doubibiji.com ) 更好的阅读体验:点这里 ( www.doubibiji.com ) 更好的阅读体验:点这里 ( www.doubibiji.com ) 7 面向对象 面向对象&am…

无人售货奶柜:掘金新零售蓝海,

无人售货奶柜:掘金新零售蓝海, 在日新月异的商业浪潮中,无人奶柜犹如一股清新的创业飓风,正以不可阻挡之势吸引着众多创业者的目光。这股新兴力量以其独到之处和庞大的市场蓝海,预示着一场关于健康、便捷消费方式的深…

【C#】DateTime类型数组含有null?并排序

代码 internal class Program{static void Main(string[] args){List<DateTime?> dateTimes new List<DateTime?> { null,DateTime.MinValue,DateTime.MaxValue};var temp new List<DateTime?> { };dateTimes.Sort();//dateTimes.Reverse();foreach (va…

石碑之谜:滚动机关

描述 在蒙德和璃月的边界地带&#xff0c;有一个被遗忘的神庙&#xff0c;里面有一个奇怪的机关&#xff1a;滚动石碑。小熊必须操作这个112的长方体石碑&#xff0c;使其通过不同的地面环境&#xff0c;最终放置到神秘的符号“O”上&#xff0c;以解开通往宝藏的大门。 石碑…

Edwards爱德华PHM3000培训PPT课件内容可见图片详情

Edwards爱德华PHM3000培训PPT课件内容可见图片详情

golang encoding/json 使用基础

json 与 encoding/json JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;它基于 ECMAScript&#xff08;欧洲计算机协会制定的js规范&#xff09;的一个子集&#xff0c;采用完全独立于语言的文本格式来存储和表示数据。简洁和…

SDL系列(一)—— 小白入门

SDL &#xff08; Simple DirectMedia Layer &#xff09; 是一套开放源代码的 跨平台多媒体开发库 &#xff0c;使用 C 语 言写成。 SDL 提供了数种控制图像、声音、输出入的函数&#xff0c;让开发者只要用相同或是相似的 代码就可以开发出 跨多个平台&#xff08; Linu…

618有什么划算的数码产品?4款精选数码好物清单分享,赶紧码住!

随着618购物节慢慢开始&#xff0c;数码产品的大门已经向你敞开&#xff0c;等你来发现里面的各种乐趣。在这个购物的好时节&#xff0c;我们为你准备了一些很不错的数码东西&#xff0c;不管是喜欢新鲜科技的你&#xff0c;还是需要实用小工具的朋友们&#xff0c;这里都有可能…

安卓、iOS、iPad三端搞定,不再剧荒!

哈喽&#xff0c;各位小伙伴们好&#xff0c;我是给大家带来各类黑科技与前沿资讯的小武。 之前给大家推荐过各种看剧姿势&#xff0c;但很多苹果、平板端的小伙伴还是存在更好的需求体验&#xff0c;今天给大家推荐这款可以在安卓、iOS和平板上都能安装使用&#xff0c;不再剧…

2024自学网络安全的三个必经阶段(含路线图)_网络安全自学路线

一、为什么选择网络安全&#xff1f; 这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等一系列政策/法规/标准的持续落地&#xff0c;网络安全行业地位、薪资随之水涨船高。 未来3-5年&#xff0c;是安全行业的黄金发展期&#xff0c;提前踏入…

基于Django的图书管理系统

文章目录 前言一、页面展示1.登录2.前端页面3.后端页面 总结 前言 本网站调用Django编写了图书管理网站&#xff0c;可以在后端控制书籍&#xff0c;前端进行书籍预览 一、页面展示 1.登录 2.前端页面 3.后端页面 — ![在这里插入图片描述](https://img-blog.csdnimg.cn/dir…

低功耗音频编解码器CJC8990

由工采网代理的CJC8990是一款低功耗音频编解码器&#xff0c;拥有先进的功能并提供高质量音频&#xff0c;非常适合于便携式数字音频应用&#xff0c;支持多种音频数据格式&#xff0c;包括I2S, DSP模式。 产品介绍&#xff1a; 该芯片工作电压&#xff1a;1.5V&#xff5e;3…

甲方运营工具——安天威胁情报中心每日热点事件爬取

一、背景 本次是采用python爬取安天威胁情报中心的每日热点事件,进行甲方内部威胁情报同步的这样一个需求开发。 界面及内容: 二、逐步实现 2.1、分析请求页面的数据来源 通过请求页面我们看到安天对于第三方引用这些内容的真实性等是不予负责的;我们看到该页面的数据来源…

mysql 行转列 case when 和 聚合函数实现

一、原始数据## 二、行转列 第一步 SELECTCASE WHEN SUBSTRING( aaa.cost_code, 1, 3 ) 100 THEN aaa.budget_cost_budget ELSE 0 END b1,CASE WHEN SUBSTRING( aaa.cost_code, 1, 3 ) 300 THEN aaa.budget_cost_budget ELSE 0 END b2,CASE WHEN SUBSTRING( aaa.cost_cod…

Math.Round()函数说明

Math.Round()并不是严格意义上的是四舍五入函数。它默认的执行的是“银行家舍入”算法&#xff0c;即四舍六入五取偶。概括为&#xff1a;四舍六入五考虑、五后非零就进一&#xff0c;五后皆零看奇偶&#xff0c;五前为偶应舍去、五前为奇要进一。 当为5时&#xff0c;取离着最…

数据库第九次作业官方答案

文章目录 1.12.12.22.32.4 1.1 列出下图所示关系满足的所有非平凡的函数依赖(忽略蕴含的函数依赖)。 A B C − − − − − − − − − − − − ------------ −−−−−−−−−−−− a1 b1 c1 a1 b1 c2 a2 b1 c1 a2 b1 c3 非平凡的函数依赖有&#xff1a;A→B和C→B 2.1 …

淘宝店铺运营爆流课:助你打造高流量店铺,实现销售持续增长(52节课)

课程目录 01【开店类型第1课】货架式店铺.mp4 02【开店类型第2课】短视频店铺.mp4 03【开店类型第3课】直播型店铺.mp4 04【店铺基础操作第1课】如何发布一个成功的宝贝.mp4 05【店铺基础操作第2课】商品SKU设置技巧及库存设置方法.mp4 06【标题】如何制作一个爆款标题.mp…

微前端的概念

微前端是一种架构模式&#xff0c;用于构建单个现代web应用程序的多个小型独立前端应用。每个前端应用都有自己的代码库、技术栈和团队&#xff0c;并可以独立开发、测试、部署和运行。这些小型前端应用被组合在一起以形成一个完整的前端应用程序。 微前端的核心思想是将前端应…