負載均衡
負載均衡實現利用服務器集群處理客戶端請求,提高訪問效率,降低服務器響應壓力。負載均衡的調度算法含義參照:Nginx入門介紹。通過修改Nginx.conf配置文件(詳見Nginx中nginx.conf配置文件詳解 ),可以選用不同的負載均衡的調度算法。
1.不同的負載均衡調度算法的應用
(1)采用輪詢調度算法(默認的)-應用例子
upstream test {
server 127.0.0.1:8001;
server 10.10.11.85:8001;
}
server {
listen 8081;
server_name localhost;
location / {
proxy_pass http://test/;
}
}
其中upstream塊定義了集群服務器,在location塊中proxy_pass中進行調用。
(2)采用權重輪詢調度算法-應用例子
upstream test {
server 127.0.0.1:8001 weight=2;
server 10.10.11.85:8001 weight=3;
}
其中weight=2的服務器會被動用2次,而后weight=3的服務器會被調用3次,周而復始。
(3)采用IP哈希調度算法-應用例子
upstream test {
ip_hash;
server 127.0.0.1:8001 ;
server 10.10.11.85:8001;
}
采用IP哈希調度算法可以解決大文件分塊上傳時,不能傳到同一臺服務器上的問題。
(4)采用URL哈希調度算法-應用例子
upstream test {
hash $request_uri;
server 127.0.0.1:8001 ;
server 10.10.11.85:8001;
}
這種算法對于利用后端服務器緩存的情況下,能夠減少帶寬。
2.一些重要的命令和參數
在定義集群服務器中,某個服務器后通過以下命令和參數實現重要功能
(1)down:表示該服務器下線,不參與負載均衡;
(2)backup:表示該服務器為備份服務器,當集群中其他服務器宕機時可用
(3)max_fails:表示該服務器處理客戶端請求經過幾次失敗后認定該服務器宕機,默認為1
(4)fail_timeout:單獨使用時表示該服務器被認為宕機后,經過多久會再次被嘗試加入集群,默認為10S
(5)max_conns:表示該服務器允許連接數的上限,默認為0即無限制
upstream test {
server 127.0.0.1:8001 down ;
server 10.10.11.85:8001 backup;
server 10.10.11.86:8001 max_fails=2 fail_timeout=30s;;
server 10.10.11.87:8001 max_fails=2 fail_timeout=30s; ;
}
通常max_fails和fail_timeout配合使用,表示在fail_timeout內失敗max_fails次以后,認為該服務器宕機,然后再等待fail_timeout后,再嘗試與該服務器通信。
動靜分離
動靜分離就是將動態資源和靜態資源分開;動態資源包括需要訪問數據庫獲得的數據;靜態資源如圖片、html、css等文件。
動靜分離的方式有多種,動態資源和靜態資源分別部署在不同服務器或者同一服務器的不同路徑下,也可以是在訪問時通過location塊Nginx中location塊配置入門 中與正則字符串的匹配(后綴模式)區分出動態資源和靜態資源,從而代理到不同服務器中進行處理,例如:
不區分大小寫的匹配模式,以.css結尾的文件,在/res/css/lead/中尋找該css文件。
location ~* .css$ {
root /res/css/lead/;
}