文章目錄
- 1 OSS
- 1.1 什么是 OSS 存儲?
- 1.2 OSS 核心功能
- 1.3 OSS 的優勢
- 1.4 典型使用場景
- 1.5 如何接入 OSS?
- 1.6 注意事項
- 1.7 cloudreve實戰演示
- 1.7.1 配置cloudreve連接阿里云oss
- 1.7.2 常見錯誤
- 1.7.3 安全測試影響
- 2 反向代理
- 2.1 正向代理和反向代理
- 2.2 演示
- 2.3 安全測試影響
- 3 負載均衡
- 3.1 負載均衡的核心作用
- 3.2 常見負載均衡算法
- 3.3 負載均衡的實現層級
- 3.4 典型負載均衡方案
- 3.5 關鍵實踐要點
- 3.6 應用場景示例
- 3.7 常見挑戰與解決
- 3.8 演示
- 結語
1 OSS
OSS(對象存儲服務)介紹
以阿里云 OSS(Object Storage Service)為例
1.1 什么是 OSS 存儲?
OSS(Object Storage Service)是對象存儲服務,由云服務商(如阿里云、AWS S3、騰訊云 COS 等)提供的一種海量、安全、低成本的云存儲服務。
- 核心特點:
- 對象存儲:數據以對象(Object)形式存儲,每個對象包含數據本身、元數據和唯一標識符(Key)。
- 無限擴展:支持海量數據存儲,理論上容量無上限。
- 高可用性:數據跨多設備、多機房冗余存儲,保障 99.9999999999%(12 個 9)的持久性。
- 低成本:按實際使用量付費(存儲量、流量、請求次數等),無前期硬件投入。
1.2 OSS 核心功能
- 數據存儲與管理
- 支持文本、圖片、音視頻、日志等任意類型文件存儲。
- 提供文件夾(目錄)模擬功能,可通過
Key
(如images/2023/photo.jpg
)管理文件層級。
- 訪問與控制
- 權限管理:支持私有讀寫、公共讀、自定義權限(如通過 STS 臨時令牌授權)。
- 訪問方式:
- API/SDK:通過 RESTful API 或各類語言(Python/Java/Go 等)的 SDK 接入。
- 控制臺:通過網頁管理文件。
- 工具:OSS Browser、ossutil 等客戶端工具。
- 數據處理
- 圖片處理:縮放、裁剪、水印、格式轉換等。
- 視頻處理:轉碼、截圖、水印等。
- 數據加速:結合 CDN 實現全球加速訪問。
- 數據安全
- 加密存儲:支持服務器端加密(SSE)、客戶端加密。
- 日志與監控:記錄訪問日志,監控存儲桶(Bucket)流量、請求次數等。
- 版本控制:防止文件誤刪或覆蓋,支持歷史版本恢復。
1.3 OSS 的優勢
場景 | 傳統存儲(如硬盤/NAS) | OSS 存儲 |
---|---|---|
擴展性 | 受硬件限制,擴容復雜 | 按需自動擴展,無需手動管理 |
可靠性 | 依賴單設備,易丟失數據 | 多副本冗余,跨機房容災 |
成本 | 前期硬件投入高 | 按使用量付費,無前期成本 |
訪問速度 | 本地網絡延遲低 | 結合 CDN 可全球加速 |
適用場景 | 小規模、高頻讀寫場景 | 海量數據、低頻率訪問場景 |
1.4 典型使用場景
- 靜態資源托管
- 網站圖片、CSS/JS 文件、視頻等靜態資源存儲,結合 CDN 加速訪問。
- 大數據分析
- 存儲海量日志、傳感器數據,供 Hadoop/Spark 等大數據框架直接分析。
- 備份與歸檔
- 冷數據(如數據庫備份、監控錄像)存儲,支持低頻訪問存儲(IA)和歸檔存儲類型以降低成本。
- 云原生應用
- 容器化應用、Serverless 函數(如 AWS Lambda)的持久化存儲方案。
1.5 如何接入 OSS?
以阿里云 OSS 為例:
-
創建存儲桶(Bucket)
- 登錄阿里云控制臺,選擇地域(Region)和存儲桶名稱(全局唯一)。
- 設置存儲類型(標準/低頻/歸檔)、權限(如私有讀寫)。
-
上傳/下載文件
- 通過 API/SDK 或控制臺上傳文件,生成訪問鏈接(需配置權限)。
# Python SDK 示例(上傳文件) from oss2 import Auth, Bucket auth = Auth('<AccessKey>', '<SecretKey>') bucket = Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'my-bucket') bucket.put_object('example.txt', 'Hello OSS!')
-
管理文件生命周期
- 配置自動刪除過期文件、轉換存儲類型等規則。
1.6 注意事項
- 費用優化:根據訪問頻率選擇合適的存儲類型(標準/低頻/歸檔)。
- 流量控制:外網下載可能產生流量費用,建議結合 CDN 或內網傳輸。
- 版本控制:開啟版本控制避免誤刪文件。
- 安全性:避免使用公開讀寫權限,推薦通過臨時令牌(STS)授權訪問。
1.7 cloudreve實戰演示
- 原理:內容分發
- 影響:
- 演示:軟件地址見下面鏈接1
- 環境:window server + cloudreve + 阿里云oss
1.7.1 配置cloudreve連接阿里云oss
第一步:啟動應用,如下圖所示,
第三步:阿里云oss新建bucket,配置AccessKey、SecretKey,如果已配置過,跳過該步驟繼續第三步
第二步:管理面板配置OSS存儲策略,如下圖所示,
第四步:上傳文件測試,成功長傳如圖所示,
1.7.2 常見錯誤
阿里云OSS回調錯誤(203: error status:301.)
- 臨時解決方案:阿里云ecs服務器安全組臨時添加允許所有來源所有類型的請求
1.7.3 安全測試影響
上傳的文件或解析的文件均來自于oss資源,無法解析
- 修復上傳安全
- 文件解析不一樣
- 存在AccessKey隱患
2 反向代理
2.1 正向代理和反向代理
對比維度 | 正向代理 (Forward Proxy) | 反向代理 (Reverse Proxy) |
---|---|---|
定義 | 代理客戶端向外部服務器發送請求,隱藏客戶端身份。 | 代理服務器接收客戶端請求,隱藏后端服務器身份。 |
位置 | 部署在客戶端側(如企業內網、用戶設備)。 | 部署在服務端側(如數據中心、云服務器)。 |
作用方向 | 客戶端主動配置代理,代理代表客戶端訪問目標服務。 | 客戶端無感知,代理直接接收請求并轉發給后端服務。 |
隱藏對象 | 隱藏客戶端的真實 IP 或身份。 | 隱藏后端服務器的真實 IP 或架構細節。 |
主要用途 | - 突破網絡限制(如訪問被屏蔽的網站) - 匿名訪問 - 客戶端緩存加速 | - 負載均衡 - 安全防護(如防 DDoS) - 服務端緩存加速 - SSL 終端卸載 |
典型場景 | - 企業內網用戶通過代理訪問外網 - VPN 或科學上網工具 | - 網站使用 Nginx 反向代理分發請求 - CDN 節點代理源站 |
配置方 | 由客戶端主動配置(瀏覽器或系統設置)。 | 由服務器管理員配置,客戶端無感知。 |
加密與安全 | 可能用于加密客戶端到代理的通信(如 HTTPS)。 | 通常用于加密客戶端到代理的通信,并保護后端服務器。 |
常見工具 | Squid、Shadowsocks、VPN | Nginx、HAProxy、Cloudflare、Traefik |
核心區別總結
- 作用方向
- 正向代理:客戶端主動通過代理訪問外部資源(代理代表客戶端)。
- 反向代理:服務端通過代理接收請求并分發(代理代表服務端)。
- 隱藏對象
- 正向代理:隱藏客戶端身份。
- 反向代理:隱藏服務端身份。
- 典型應用
- 正向代理:科學上網、內網訪問外網。
- 反向代理:負載均衡、CDN、API 網關。
2.2 演示
演示環境:windows server + BT寶塔面板+nginx
配置反向代理地址如下圖所示:
配置文件如下所示:
location /
{expires 12h;if ($request_uri ~* "(php|jsp|cgi|asp|aspx)"){expires 0;}proxy_pass https://www.baidu.com;proxy_set_header Host www.baidu.com;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header REMOTE-HOST $remote_addr;add_header X-Cache $upstream_cache_status;proxy_set_header Accept-Encoding "";sub_filter_once off;proxy_cache cache_one;proxy_cache_key $host$uri$is_args$args;proxy_cache_valid 200 304 301 302 12h;
}
效果如下圖所示:
2.3 安全測試影響
影響:訪問目標只是一個代理,非真實應用服務器
tips:正向代理和反向代理都是解決訪問不可達的問題,但由于反向代理中多出一個可以重定向解析的功能操作,導致反向代理站點指向和真實應用沒有關系。
3 負載均衡
負載均衡(Load Balancing)是一種將網絡流量、計算任務或數據請求合理分配到多個服務器或資源的技術,旨在提高系統性能、可靠性和資源利用率。以下是負載均衡的核心概念和應用解析:
3.1 負載均衡的核心作用
- 流量分發
將用戶請求均勻分配到多臺服務器,避免單點過載。 - 高可用性
自動檢測故障節點,將流量切換到健康服務器,保障服務連續性。 - 橫向擴展
通過增加服務器實例應對高并發,提升系統吞吐量。 - 優化資源利用
根據服務器性能動態分配任務,避免資源浪費。
3.2 常見負載均衡算法
算法類型 | 原理 | 適用場景 |
---|---|---|
輪詢(Round Robin) | 按順序依次分配請求 | 服務器性能相近的無狀態服務 |
加權輪詢 | 根據服務器權重分配流量(權重=性能) | 服務器性能差異較大的場景 |
最少連接(Least Connections) | 優先分配給當前連接數最少的服務器 | 長連接場景(如數據庫、WebSocket) |
IP哈希 | 根據客戶端IP哈希值固定分配到某服務器 | 需要會話保持(Session粘滯) |
響應時間優先 | 選擇響應最快的服務器 | 對延遲敏感的應用 |
3.3 負載均衡的實現層級
- 四層負載均衡(傳輸層,TCP/UDP)
- 基于IP和端口進行流量轉發(如LVS、F5)。
- 高性能,適用于低延遲場景(如游戲、視頻流)。
- 七層負載均衡(應用層,HTTP/HTTPS)
- 解析應用層協議,支持基于URL、Cookie的路由(如Nginx、HAProxy)。
- 功能強大,支持SSL終止、內容壓縮、緩存等。
3.4 典型負載均衡方案
- 硬件負載均衡器
- 專用設備(如F5 BIG-IP、Citrix ADC),性能高但成本昂貴。
- 軟件負載均衡器
- 開源工具(如Nginx、HAProxy、Envoy),靈活且易于擴展。
- 云服務負載均衡器
- AWS ALB/NLB、阿里云SLB、騰訊云CLB,集成自動擴縮容和健康檢查。
- DNS負載均衡
- 通過DNS解析將域名映射到多個IP,簡單但缺乏實時健康檢測。
3.5 關鍵實踐要點
- 健康檢查(Health Check)
- 定期檢測后端服務器狀態(如HTTP狀態碼、端口連通性)。
- 會話保持(Session Persistence)
- 使用Cookie或IP哈希確保用戶請求分配到同一服務器。
- 彈性伸縮(Auto Scaling)
- 結合云平臺動態增減服務器實例(如AWS Auto Scaling + ALB)。
- 安全防護
- 在負載均衡層集成WAF、DDoS防護(如Cloudflare、阿里云盾)。
3.6 應用場景示例
- Web服務:通過Nginx將HTTP請求分發到多臺Tomcat服務器。
- 微服務架構:Kubernetes使用Ingress Controller實現服務間流量調度。
- 數據庫讀寫分離:將讀請求分配到多個從庫,寫請求指向主庫。
- 全球加速:使用CDN和地理負載均衡將用戶導向最近的節點。
3.7 常見挑戰與解決
- 單點故障:部署負載均衡器集群(如Keepalived實現主備切換)。
- 性能瓶頸:使用DPDK(數據平面開發套件)優化網絡包處理。
- 復雜路由邏輯:七層負載均衡結合API網關(如Kong、Traefik)。
3.8 演示
基于web服務,這里通過nginx將http請求分發到多臺服務器
環境:windows server + BT寶塔面板 + Nginx
影響:有多個服務器加載服務,測試過程中存在多個目標情況
nginx基礎負載均衡
http {upstream backend_servers {# 定義后端服務器列表server 192.168.1.101:80;server 192.168.1.102:80;server 192.168.1.103:80;}server {listen 80;server_name example.com;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;}}
}
結語
?QQ:806797785
??倉庫地址:https://gitee.com/gaogzhen
??倉庫地址:https://github.com/gaogzhen
[1]cloudreve github地址[CP/OL].
[2]站長工具-ping檢測[CP/OL].