LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

Nginx智能路由實(shí)現(xiàn)無(wú)縫擴(kuò)容方案實(shí)現(xiàn):先查舊盤,找不到自動(dòng)查新盤,用戶端完全無(wú)感

admin
2025年8月10日 21:57 本文熱度 396

在生產(chǎn)環(huán)境中使用時(shí),務(wù)必先經(jīng)過(guò)測(cè)試環(huán)境測(cè)試,測(cè)試通過(guò)后再上生產(chǎn)環(huán)境避免造成生產(chǎn)事故,若配置不當(dāng),可能引發(fā)性能、安全或邏輯等問(wèn)題甚至造成生產(chǎn)事故

?? 背景:存儲(chǔ)告急由于每個(gè)文件都提供了url地址鏈接,將文件遷移走肯定是不行的,如何擴(kuò)容且不中斷服務(wù)

隨著業(yè)務(wù)快速增長(zhǎng),我們的文件存儲(chǔ)服務(wù)器 /home/data/files2 磁盤使用率已飆升至 95%,觸發(fā)了嚴(yán)重預(yù)警,準(zhǔn)備擴(kuò)容

核心需求

  • ? 新增一塊4TB硬盤掛載至 /data2/app/files2
  • ? 遷移部分歷史文件到新盤
  • ? 文件無(wú)論放在哪里原有訪問(wèn)URL不能變(如 http://a.域名.com/files2/a.txt
  • ? 不能讓客戶端有訪問(wèn)波動(dòng)
  • ? 不能影響未遷移文件的正常訪問(wèn)
  • ? 支持未來(lái)持續(xù)橫向擴(kuò)展
  • 不重啟服務(wù)、不改代碼、不停機(jī)遷移


?? 方案:Nginx智能路由實(shí)現(xiàn)無(wú)縫擴(kuò)容

我們采用 主備式多路徑存儲(chǔ)架構(gòu),利用Nginx的 try_files 和命名location功能,實(shí)現(xiàn):“先查舊盤,找不到自動(dòng)查新盤,用戶端完全無(wú)感”

使用技術(shù) nginx命名location

示例 location @name { ... }  官方文檔原文是這樣解釋的:The “@” prefix defines a named location. Such a location is not used for a regular request processing, but instead used for request redirection. They cannot be nested, and cannot contain nested locations.   大概意思:“@”前綴定義了一個(gè)命名位置這樣的位置不用于常規(guī)請(qǐng)求處理,而是用于請(qǐng)求重定向它們不能嵌套,也不能包含嵌套位置

? 實(shí)現(xiàn)目標(biāo)架構(gòu)流程圖

??? 實(shí)戰(zhàn)配置:

新增一塊盤的情況

nginx

server {    listen 80;    server_name a.域名.com;    # 主存儲(chǔ)位置(舊硬盤)        location ~* ^/files2/ {alias /home/data/files2/;        try_files $uri @newfile_storage;                }    # 備用存儲(chǔ)位置(新硬盤)        location @newfile_storage {         alias /data2/app/files2/;         try_files $uri =404;             } }

新增多塊盤的情況

nginx

location ~*^/files2/ {    root /home/data;    try_files $uri $uri/@filestorage1;}# 多級(jí)目錄查找location @filestorage1 {    alias /data2/app/files2/1/;    try_files $uri $uri/@filestorage2;}location @filestorage2 {    alias /data2/app/files2/2/;    try_files $uri $uri/@filestorage3;}location @filestorage3 {    alias /data3/app/files3/;    try_files $uri $uri /=404;}

?? 配置解析:

1. 主入口location

nginx

location ~* ^/files2/ {    alias /home/data/files2/;    try_files $uri @newfile_storage;}~* ^/files2/:不區(qū)分大小寫(xiě)匹配/files2/路徑alias:映射到物理路徑try_files:優(yōu)先查找主存儲(chǔ),找不到則跳轉(zhuǎn)命名位置徑@newfile_storage2. 命名location(新存儲(chǔ))nginlocation @newfile_storage {    alias /data2/app/files2/;    try_files $uri =404;}@newfile_storage:內(nèi)部標(biāo)記,外部無(wú)法直接訪問(wèn)=404:最終未找到返回404

# 重新加載配置
nginx -s reload

遷移后驗(yàn)證

#遷移一個(gè)文件到新目錄mv  2023-01-video.png /data2/app/files2/#驗(yàn)證訪問(wèn)這個(gè)文件是否還能訪問(wèn)的到curl -I http://a.domain.com/files2/2023-01-video.png

方案優(yōu)勢(shì)總結(jié)


優(yōu)勢(shì)
說(shuō)明
零代碼改動(dòng)
程序仍寫(xiě)入原目錄,無(wú)需任何修改
URL永久有效
業(yè)務(wù)鏈接地址不變
客戶端無(wú)感知
體驗(yàn)無(wú)縫
易擴(kuò)展
可擴(kuò)展數(shù)多存儲(chǔ)節(jié)點(diǎn)
安全可控
無(wú)需開(kāi)放額外端口或服務(wù)

結(jié)語(yǔ)

存儲(chǔ)擴(kuò)容不應(yīng)成為業(yè)務(wù)瓶頸。通過(guò)Nginx的 try_files + named location 機(jī)制,實(shí)現(xiàn)了:“程序不改、URL不變、遷移無(wú)感、擴(kuò)展靈活”

適合系統(tǒng)做低成本、高可用的存儲(chǔ)橫向擴(kuò)容。


閱讀原文:原文鏈接


該文章在 2025/8/11 10:31:36 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
视频二区中文字幕欧美 | 婷婷久久五月综合色国产 | 日韩精品自在线二区 | 亚洲中文字幕乱码影院在线 | 日韩乱码中文字幕视频 | 日本精品一二区性爱片 |