(十) - 下載檔案
阿新 • • 發佈:2020-12-29
Nginx 負載均衡詳解
首先說下 upstream 這個配置的,這個配置是寫一組被代理的伺服器地址,然後配置負載均衡的演算法。這裡的被代理伺服器地址有 2 中寫法。
upstream mysvr {
server 192.168.10.121:3333;
server 192.168.10.122:3333;
}
server {
....
location ~*^.+$ {
proxy_pass http://mysvr; #請求轉向mysvr 定義的伺服器列表
}
}
然後,就來點實戰的東西。
1、熱備:如果你有 2 臺伺服器,當一臺伺服器發生事故時,才啟用第二臺伺服器給提供服務。伺服器處理請求的順序:AAAAAA 突然 A 掛啦,BBBBBBBBBBBBBB.....
upstream mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333 backup; #熱備
}
2、輪詢:nginx 預設就是輪詢其權重都預設為 1,伺服器處理請求的順序:ABABABABAB....
upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333; }
3、加權輪詢:跟據配置的權重的大小而分發給不同伺服器不同數量的請求。如果不設定,則預設為 1。下面伺服器的請求順序為:ABBABBABBABBABB....
upstream mysvr {
server 127.0.0.1:7878 weight=1;
server 192.168.10.121:3333 weight=2;
}
4、ip_hash:nginx 會讓相同的客戶端 ip 請求相同的伺服器。
upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333; ip_hash; }
5、如果你對上面 4 種均衡演算法不是很理解,可以檢視 Nginx 配置詳解,可能會更加容易理解點。
到這裡你是不是感覺 nginx 的負載均衡配置特別簡單與強大,那麼還沒完,咱們繼續哈,這裡扯下蛋。
關於 nginx 負載均衡配置的幾個狀態引數講解。
- down,表示當前的 server 暫時不參與負載均衡。
- backup,預留的備份機器。當其他所有的非 backup 機器出現故障或者忙的時候,才會請求 backup 機器,因此這臺機器的壓力最輕。
- max_fails,允許請求失敗的次數,預設為 1。當超過最大次數時,返回 proxy_next_upstream 模組定義的錯誤。
- fail_timeout,在經歷了 max_fails 次失敗後,暫停服務的時間。max_fails 可以和 fail_timeout 一起使用。
upstream mysvr {
server 127.0.0.1:7878 weight=2 max_fails=2 fail_timeout=2;
server 192.168.10.121:3333 weight=1 max_fails=2 fail_timeout=1;
}