免费在线a视频-免费在线观看a视频-免费在线观看大片影视大全-免费在线观看的视频-色播丁香-色播基地

Nginx負載均衡詳解

:2024年02月01日 騰訊云
分享到:

下面將介紹Nginx開源版內置的4種負載均衡策略和2種三方負載均衡策略,他們分別是:

下面將介紹Nginx開源版內置的4種負載均衡策略和2種三方負載均衡策略,他們分別是:

  • 輪詢

  • 最少連接數(shù)

  • ip_hash

  • hash

  • fair

  • consistent_hash

本文只是展示了部分nginx實現(xiàn)負載均衡時可以使用的策略模塊,另外在nginx商業(yè)版中還存在其他內置的策略模塊。負載均衡的三方策略可以在三方模塊列表這里找到。

輪詢

默認情況

nginx將所有請求均勻的分給集群中的每臺服務器。

upstream test {
    server 127.0.0.1:7001; # 等同于server 127.0.0.1:7001 weight=1;
    server 150.109.118.85:7001; # 等同于server 150.109.118.85:7001 weight=1;}server {
    listen 8081;
    server_name localhost;
    location / {
        proxy_pass http://test/;    }}

upstream:定義一個服務集群。 proxy_pass: 將匹配的請求代理轉發(fā)到proxy_pass后面配置的服務上,這里因為需要配置負載均衡,所以這里http://后面必須要跟上upstream定義的服務集群。

注意:upstream定義服務集群時,配置的服務地址只能是域名+端口或者ip+端口,不能帶有協(xié)議和路徑,否則nginx會報nginx: [emerg] invalid host in upstream這個錯誤信息。

加權(weight)
upstream test {
    server 127.0.0.1:7001 weight=2;
    server 150.109.118.85:7001 weight=1;}

前面兩次請求都會轉發(fā)到127.0.0.1:7001這個服務,后面一次請求會轉發(fā)到150.109.118.85:7001這個服務,再后面兩次轉發(fā)到127.0.0.1:7001,。。。

最少連接數(shù)

文件位置:src/http/modules/ngx_http_upstream_least_conn_module.c

nginx請求分配給active_connection/weight最小的服務器。

upstream test {
    least_conn;
    server 127.0.0.1:7001 weight=1;
    server 150.109.118.85:7001 weight=1;}

ip_hash

文件位置:src/http/modules/ngx_http_upstream_ip_hash_module.c

根據(jù)用戶的ip,計算出一個hash值,如果負載均衡緩存中有這個hash對應的服務器,那就直接轉發(fā)到對應的服務器上。

upstream test {
    ip_hash;
    server 127.0.0.1:7001;
    server 150.109.118.85:7001;}

nginx使用ip_hash策略后,只要用戶電腦的ip不變化,就會始終請求同一臺業(yè)務服務。

應用場景:在實現(xiàn)文件上傳功能時,要實現(xiàn)一個大文件上傳,往往會將這個大文件分成多個片段,然后上傳到服務器,如果使用前面給的策略,就會出現(xiàn)同一個文件的分片被上傳到不同服務器,導致文件合并失敗,不能達到預期效果。nginx使用ip_hash策略后,客戶端只要上傳了當前文件的一個片段,后續(xù)文件片段上傳的時候,nginx通過計算ip的hash,自動把請求轉發(fā)到hash對應的服務器。

hash

文件位置:src/http/modules/ngx_http_upstream_hash_module.c

可以進行hash計算的有remote_addr(客戶端ip)(從測試結果上面看感覺可以直接替換掉ip_hash)、request_uri(請求uri)、args(請求參數(shù)),下面主要以request_uri的使用作為展示,其他兩個使用都類似。

根據(jù)請求的uri計算出一個hash值,然后將該請求轉發(fā)到一臺服務器上面,后續(xù)請求通過hash計算后,如果有相同的hash,那么就會將該請求轉發(fā)到該hash對應的服務器。

如果集群中某臺服務器宕機之后會出現(xiàn)什么情況:假設r1命中a服務器;r2命中b服務器。當a服務器宕機,之前通過r1計算出來的hash與a服務器的對應情況會失效,r1將重新分配給b服務器。后續(xù)a服務器恢復正常后,r1還是會分配給b服務器。

upstream test {
    hash $request_uri;
    server 127.0.0.1:7001;
    server 150.109.118.85:7001;}

應用場景:所有請求相同的文件資源的請求都會被轉發(fā)到同一個服務器,資源更容易命中緩存,減少寬帶和資源下載時間。

consistent_hash

consistent_hash(一致性hash)這個模塊使用方式和nginx內置的hash模塊幾乎相同。能夠使用consistent_hash進行計算的內容和前面提到的nginx內置的hash模塊一樣,有remote_addr、request_uri、args。這是一個三方模塊,可以在ngx_http_consistent_hash這里下載。

upstream test {
    consistent_hash $request_uri;
    server 127.0.0.1:7001;
    server 150.109.118.85:7001;}

fair

響應時間短的服務優(yōu)先分配請求。這個是三方模塊,可以在nginx_upstream_fair這里下載模塊。這個模塊上次更新是8年前,可能需要考慮下是否需要使用這個。

upstream test {
    fair;
    server 127.0.0.1:7001;
    server 150.109.118.85:7001;}

測試中得出效果和輪詢默認情況效果一樣,暫時沒有找到問題在哪。。。

負載均衡相關參數(shù)

down

標識down的服務器暫時不支持資源請求。

upstream test {
    server 127.0.0.1:7001 down;
    server 150.109.118.85:7001;}

上面負載均衡的例子中,因為127.0.0.1:7001標識為down,所以不會有請求轉發(fā)到這個服務,所有的請求都會轉發(fā)到150.109.118.85:7001這個服務。

weight

集群中服務的權重值,默認是1。在只有weight這一個影響條件下,且集群中服務都正常,nginx會將更多的請求轉發(fā)到weight更大的服務。

upstream test {
    server 127.0.0.1:7001 weight=2;
    server 150.109.118.85:7001 weight=1;}

這個集群中127服務和150服務各處理的請求比例為2:1。

max_fails

允許服務處理請求時服務出錯的次數(shù),默認為1。當服務處理請求發(fā)生錯誤的次數(shù)超過max_fails時,后面的請求暫時不會轉發(fā)到這臺發(fā)生錯誤的服務。

upstream test {
    server 127.0.0.1:7001 max_fail=1;
    server 150.109.118.85:7001;}
fail_timeout

當服務處理請求發(fā)生錯誤的次數(shù)超過max_fails以后,nginx會暫時禁止將請求轉發(fā)到這個服務。當過去fail_timeout設置的時間以后,nginx會嘗試將請求轉發(fā)到剛才被禁止的服務,如果服務正常,那么后續(xù)的請求可以繼續(xù)轉發(fā)到這臺服務,如果服務錯誤,那么繼續(xù)等待fail_timeout時間后再來檢測。fail_timeout默認時間是10s。

upstream test {
    server 127.0.0.1:7001 max_fail=1 fail_timeout=10s;
    server 150.109.118.85:7001;}
backup

備用服務器,當所有非backup服務發(fā)生錯誤被停用或者設置為down時,nginx會啟用標識為backup的服務。

upstream test {
    server 127.0.0.1:7001 backup;
    server 150.109.118.85:7001;}
max_conns

這個功能存在于nginx商業(yè)版。同一服務同時處理請求的個數(shù)。防止服務因處理請求過多,服務器性能不足,發(fā)生宕機的情況。

upstream test {
    server 127.0.0.1:7001 max_conns=10000;
    server 150.109.118.85:7001;}
slow_start

這個功能存在于nginx商業(yè)版。當集群中錯誤服務等待fail_timeout時間后,nginx檢測到這個服務能夠正常使用后,再等待slow_start時間后,才正式使用這個服務。

upstream test {
    server 127.0.0.1:7001 slow_start=30s;
    server 150.109.118.85:7001;}

本文參與 騰訊云自媒體分享計劃,分享自作者個人站點/博客。

如有侵權請聯(lián)系 cloudcommunity@tencent.com 刪除

[我要糾錯]
[編輯:王振袢 &發(fā)表于江蘇]
關鍵詞: 下面 介紹 Nginx 開源 內置

來源:本文內容搜集或轉自各大網(wǎng)絡平臺,并已注明來源、出處,如果轉載侵犯您的版權或非授權發(fā)布,請聯(lián)系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內容的準確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負責,僅作分享之用,文章版權及插圖屬于原作者。

點個贊
0
踩一腳
0

您在閱讀:Nginx負載均衡詳解

Copyright©2013-2025 ?JSedu114 All Rights Reserved. 江蘇教育信息綜合發(fā)布查詢平臺保留所有權利

蘇公網(wǎng)安備32010402000125 蘇ICP備14051488號-3技術支持:南京博盛藍睿網(wǎng)絡科技有限公司

南京思必達教育科技有限公司版權所有   百度統(tǒng)計

主站蜘蛛池模板: 免费a一毛片| 韩国伦理剧在线看 | 一个人看www在线视频 | 诱人的护士5中文字幕 | 精品国产一区二区二三区在线观看 | 波多野结衣中文字幕久久 | 日韩一级特黄 | 欧美一区二区亚洲 | 精品 日韩 国产 欧美在线观看 | 深夜福利一区二区 | 黄色在线观看视频 | 亚洲欧美二区三区久本道 | 日本娇小hd | videost极度另类 | 日本xxxxx高清免费观看 | 亚洲另类在线观看 | 天天操操 | 中国一级片免费 | 一本大道高清香蕉中文大在线 | 国产成人a大片大片在线播放 | 性放荡的三级小说 | 污污视频在线免费看 | 日本久久久久久久中文字幕 | 日韩理论在线播放 | 日韩欧美亚洲国产一区二区三区 | 成人激情小视频 | 日本在线视频www色 日本综合在线 | 亚洲国产一区二区三区最新 | 日本动态120秒免费 日本二区视频 | 性色a v 一区 | 免费网站国产 | 午夜视频在线观看区二区 | 国产精品欧美亚洲韩国日本99 | 亚洲国产成人资源在线软件 | 色视频在线观看在线播放 | 激情亚洲 | 天天碰天天干 | 黄色视频毛片 | 日韩精品久久久久影院 | 手机看片国产免费久久网 | 麻豆国产精品高中生视频 |
最熱文章
最新文章
  • 阿里云上云鉅惠,云產(chǎn)品享最低成本,有需要聯(lián)系,
  • 卡爾蔡司鏡片優(yōu)惠店,鏡片價格低
  • 蘋果原裝手機殼