天天看點

nginx的叢集原理與常用的排程算法

作者:黑馬金牌程式設計

1. master&worker——(管理和工作)

nginx的叢集原理與常用的排程算法
nginx的叢集原理與常用的排程算法

2、worker如何進行工作的?

nginx的叢集原理與常用的排程算法

3.一個master和多個woker有什麼好處?

1)可以使用nginx -s reload 熱部署,利用nginx進行熱部署操作

2)每個woker是獨立的程序,如果有其中一個woker出現問題,其他worker獨立的,

繼續進行争搶,實作請求過程,不會造成服務中斷。

4、需要設定多少個worker

worker數和伺服器的cpu數相等是最為适宜的

5、連接配接數worker_connection

第一個:發送請求,占用了worker的幾個連接配接數?

2或4個

第二個:nginx有一個master,有四個woker,每個woker支援最大的連接配接資料1024,支援的最大并發數是多少?

公式:

nginx的叢集原理與常用的排程算法

Nginx常用的排程算法與使用場景

1、輪詢(預設排程算法)

特點:每個請求按時間順序逐一配置設定到不同的後端伺服器處理。

适用業務場景:後端伺服器硬體性能配置完全一緻,業務無特殊要求時使用。

upstream backendserver {
server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
}           

2、權重輪詢

特點:指定輪詢幾率,weight值(權重)和通路比例成正比,使用者請求按權重比例配置設定。

适用業務場景:用于後端伺服器硬體性處理能力不平均的情形。

upstream backendserver {
server 192.168.0.14:80 weight=5 max_fails=2 fail_timeout=10s;
server 192.168.0.15:80 weight=10 max_fails=2 fail_timeout=10s;
}           

3、ip_hash IP哈希

特點:每個請求按通路ip的hash結果配置設定,這樣每個訪客固定通路一個後端伺服器,可以解決session會話保持問題。

适用業務場景:适用于需要賬号登入的系統,會話連接配接保持的業務。

upstream backendserver {
ip_hash;
server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
}           

4、最少連接配接數 least_conn

特點:按nginx反向代理與後端伺服器之間的連接配接數,連接配接數最少的優先配置設定。

适用業務場景:适用于用戶端與後端伺服器需要保持長連接配接的業務。

upstream backendserver {
least_conn; server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
}           

5、響應時間 fair

(需編譯安裝第三方子產品 ngx_http_upstream_fair_module)

特點:按後端伺服器的響應時間來配置設定請求,響應時間短的優先配置設定。

适用業務場景:對通路響應速度有一定要求的業務。

upstream backendserver {
fair;
server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
}           

6、URL配置設定 url_hash

(需編譯安裝第三方子產品 ngx_http_upstream_hash_module)

特點:按通路url的hash結果來配置設定請求,使同一個url通路到同一個後端伺服器。

适用業務場景:适用于後端伺服器為緩存伺服器時比較有效。

upstream backendserver {
server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
hash $request_uri;
}           

繼續閱讀