【運維項目經歷|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.pswp.cn/web/12805.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12805.shtml
英文地址,請注明出處:http://en.pswp.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;并可以獨立開發、測試、部署和運行。這些小型前端應用被組合在一起以形成一個完整的前端應用程序。 微前端的核心思想是將前端應…