日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx 负载均衡配置和策略

發(fā)布時間:2025/1/21 Nginx 114 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx 负载均衡配置和策略 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Nginx 的 HttpUpstreamModule 提供對后端(backend)server的簡單負(fù)載均衡。一個最簡單的 upstream 寫法例如以下:

upstream backend {server backend1.example.com;server backend2.example.com;server.backend3.example.com; }server {location / {proxy_pass http://backend;} }

1、后端server

通過 upstream 能夠設(shè)定后端server,指定的方式能夠是 IP 地址與port、域名、UNIX 套接字(socket)。當(dāng)中假設(shè)域名能夠被解析為多個地址。則這些地址都作為 backend。

以下舉例說明:

upstream backend {server blog.csdn.net/poechant;server 145.223.156.89:8090;server unix:/tmp/backend3; }

第一個 backend 是用域名指定的。第二個 backend 是用 IP 和port號指定的。

第三個 backend 是用 UNIX 套接字指定的。

2、負(fù)載均衡策略

Nginx 提供輪詢(round robin)、用戶 IP 哈希(client IP)和指定權(quán)重 3 種方式。

默認(rèn)情況下,Nginx 會為你提供輪詢作為負(fù)載均衡策略。

可是這并不一定可以讓你愜意。比方,某一時段內(nèi)的一連串訪問都是由同一個用戶 Michael 發(fā)起的,那么第一次 Michael 的請求可能是 backend2,而下一次是 backend3。然后是 backend1、backend2、backend3…… 在大多數(shù)應(yīng)用場景中,這樣并不高效。當(dāng)然。也正因如此,Nginx 為你提供了一個依照 Michael、Jason、David 等等這些亂七八糟的用戶的 IP 來 hash 的方式,這樣每一個 client 的訪問請求都會被甩給同一個后端server。詳細(xì)的使用方式例如以下:

upstream backend {ip_hash;server backend1.example.com;server backend2.example.com;server.backend3.example.com; }

這種策略中,用于進行 hash 運算的 key,是 client 的 C 類 IP 地址(C 類 IP 地址就是范圍在 192.0.0.0 到 223.255.255.255 之間,前三段號碼表示子網(wǎng)。第四段號碼為本地主機的 IP 地址類別)。

這種方式保證一個 client 每次請求都將到達同一個 backend。

當(dāng)然,假設(shè)所 hash 到的 backend 當(dāng)前不可用。則請求會被轉(zhuǎn)移到其它 backend。

再介紹一個和 ip_hash 配合使用的keyword:down。

當(dāng)某個一個 server 臨時性的宕機(down)時,你能夠使用“down”來標(biāo)示出來。而且這樣被標(biāo)示的 server 就不會接受請求去處理。

詳細(xì)例如以下:

upstream backend {server blog.csdn.net/poechant down;server 145.223.156.89:8090;server unix:/tmp/backend3; }

還能夠使用指定權(quán)重(weight)的方式。例如以下:

upstream backend {server backend1.example.com;server 123.321.123.321:456 weight=4; }

默認(rèn)情況下 weight 為 1,對于上面的樣例,第一個 server 的權(quán)重取默認(rèn)值 1,第二個是 4。所以相當(dāng)于第一個 server 接收 20% 的請求,第二接收 80% 的。要注意的是 weight 與 ip_hash 是不能同一時候使用的,原因非常easy,他們是不同且彼此沖突的策略。

3、重試策略

能夠為每一個 backend 指定最大的重試次數(shù),和重試時間間隔。

所使用的keyword是 max_fails 和 fail_timeout。例如以下所看到的:

upstream backend {server backend1.example.com weight=5;server 54.244.56.3:8081 max_fails=3 fail_timeout=30s; }

在上例中,最大失敗次數(shù)為 3,也就是最多進行 3 次嘗試,且超時時間為 30秒。max_fails 的默認(rèn)值為 1。fail_timeout 的默認(rèn)值是 10s。傳輸失敗的情形,由 proxy_next_upstream 或 fastcgi_next_upstream 指定。并且能夠使用 proxy_connect_timeout 和 proxy_read_timeout 控制 upstream 響應(yīng)時間。

有一種情況須要注意,就是 upstream 中僅僅有一個 server 時。max_fails 和 fail_timeout 參數(shù)可能不會起作用。

導(dǎo)致的問題就是 nginx 僅僅會嘗試一次 upstream 請求,假設(shè)失敗這個請求就被拋棄了 : ( ……解決辦法。比較取巧。就是在 upstream 中將你這個可憐的唯一 server 多寫幾次,例如以下:

upstream backend {server backend.example.com max_fails fail_timeout=30s;server backend.example.com max_fails fail_timeout=30s;server backend.example.com max_fails fail_timeout=30s; }

4、備機策略

從 Nginx 的 0.6.7 版本號開始。能夠使用“backup”keyword。當(dāng)全部的非備機(non-backup)都宕機(down)或者繁忙(busy)的時候。就僅僅使用由 backup 標(biāo)注的備機。必需要注意的是,backup 不能和 ip_hash keyword一起使用。

舉比例如以下:

upstream backend {server backend1.example.com;server backend2.example.com backup;server backend3.example.com; }

總結(jié)

以上是生活随笔為你收集整理的Nginx 负载均衡配置和策略的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。