網站首頁 編程語言 正文
一、概述
Nginx的upstream目前支持的分配算法:
1、round-robin 輪詢1:1輪流處理請求(默認)
每個請求按時間順序逐一分配到不同的應用服務器,如果應用服務器down掉,自動剔除,剩下的繼續輪詢。
2、weight 權重(加權輪詢)
通過配置權重,指定輪詢幾率,權重和訪問比率成正比,用于應用服務器性能不均的情況。
3、ip_hash 哈希算法
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個應用服務器,可以解決session共享的問題。應用服務器如果故障需要手工down掉。
參數含義:
down:表示單前的server暫時不參與負載
weight:默認為1,weight越大,負載的權重就越大。
max_fails:允許請求失敗的次數默認為1.當超過最大次數時,返回proxy_next_upstream模塊定義的錯誤
fail_timeout:max_fails次失敗后,暫停的時間。
backup:其它所有的非backup機器down或者忙的時候,請求backup機器。
二、配置
?1、round-robin 輪詢(默認)
upstream tg-t4 { server 10.0.0.110:8099; server 10.0.0.110:8098; } server { listen 8096; server_name www.tg-t4.com; location / { proxy_pass http://tg-t4; } }
訪問結果:ABABABABA
2、加權輪詢
upstream tg-t4 { server 10.0.0.110:8099 weight=2; server 10.0.0.110:8098 weight=5; } server { listen 8096; server_name www.tg-t4.com; location / { proxy_pass http://tg-t4; } }
訪問結果:ABBABB ABBABB
注:weight影響的訪問結果是按最小比例算的,而不是理想狀態下:AABBBBB AABBBBB
3、ip_hash
upstream tg-t4 { server 10.0.0.110:8099; server 10.0.0.110:8098; ip_hash; } server { listen 8096; server_name www.tg-t4.com; location / { proxy_pass http://tg-t4; } }
訪問結果:
IP1:AAAAAA
IP2:BBBBBB
4、熱備
upstream tg-t4 { server 10.0.0.110:8099; server 10.0.0.110:8098 backup; } ? server { listen 8096; server_name www.tg-t4.com; location / { proxy_pass http://tg-t4; } }
訪問結果:
訪問1:兩個服務均正常。AAAAAA
訪問2:停用10.0.0.110:8099。BBBBBB
訪問3:重啟10.0.0.110:8099。AAAAAA
5、加參數優化
upstream tg-t4 { server 10.0.0.110:8099 weight=1 max_fails=2 fail_timeout=2; server 10.0.0.110:8098 weight=3 max_fails=2 fail_timeout=2 backup; } ? server { listen 8096; server_name www.tg-t4.com; location / { proxy_pass http://tg-t4; } }
訪問結果:同4
backup優先級最高,當有了這個參數設定,那么所對應的服務只能作為熱備。
配置文件參考:
https://www.jb51.net/article/235779.htm
輪詢方式參考:
https://www.jb51.net/article/178868.htm
七層與四層參考:
https://www.jb51.net/article/111345.htm
原文鏈接:https://blog.csdn.net/londa/article/details/123301649
相關推薦
- 2022-04-17 python中無法導入本地安裝好的第三方庫問題_python
- 2022-02-03 ionic錨點操作
- 2022-05-20 淺談redis的過期時間設置和過期刪除機制_Redis
- 2022-10-29 Android 開發 | API 指南- Content Provider 應用程序的使用方法
- 2022-06-09 Entity?Framework?Core基于數據模型創建數據庫_實用技巧
- 2023-03-02 Conan中的C/C++的依賴管理_C 語言
- 2022-12-09 Python?keras.metrics源代碼分析_python
- 2022-04-11 C++中函數重載詳解_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支