1. 程式人生 > >Nginx效能調優之負載均衡

Nginx效能調優之負載均衡

一 什麼是負載均衡

nginx可以成為代理伺服器(如何配置可以點這裡看我上一篇部落格)統一收斂流量,再將流量分發給後端伺服器,當後端伺服器不止一個時,就涉及分發演算法問題,這就是負載均衡。通過合理地演算法實現更高的負載及效能。

二 常見負載均衡演算法

  • ll+weight: 輪詢加權重(預設)
  • ip_hash:基於Hash計算 ,用於保持session一至性
  • url_hash:靜態資源快取,節約儲存,加快速度(第三方)
  • least_conn :最少連結(第三方)
  • least_time :最小的響應時間,計算節點平均響應時間,然後取響應最快的那個,分配更高權重(第三方)

接下來演示前兩個

三 配置演示

配置 upstream 以及 location 可以實現負載均衡
注:我在虛擬機器安裝了兩臺tomcat,埠號一個時8080,另一個是8081。(如何配置同時執行兩臺toncat可以看這篇部落格)兩臺tomcat的webapps目錄下都有snowman/hello.html檔案,內容tomcat1是“this is 111”,tomcat2是“this is 222”。

輪詢演算法
upstream servers {
    server 127.0.0.1:8080 weight=1;
    server 127.0.0.1:8081 weight=2;
}
location /snowman {
    proxy_pass http://servers;
}

在這裡插入圖片描述
這裡配置了第一臺tomcat權重為1,第二臺權重為2,所以在訪問時應該是一次tomcat1,一次tomcat2,一次tomcat2,再一次tomcat1,一次tomcat2,一次tomcat2…
啟動tomcat1,tomcat2,nginx,curl進行訪問
在這裡插入圖片描述

ip_hash演算法

upstream模組加上ip_hash,很簡單。

upstream servers {
ip_hash;
}

在這裡插入圖片描述
將訪問的ip進行hash,然後固定分配到某臺伺服器上,優先順序高於輪詢演算法。
在這裡插入圖片描述
upstream 相關引數:

service	#反向服務地址 加埠
weight	#權重
max_fails	#失敗多少次 認為主機已掛掉則,踢出
fail_timeout	#踢出後重新探測時間
backup	#備用服務,“正牌”伺服器掛掉之後起來
max_conns	#允許最大連線數
slow_start	#當節點恢復,不立即加入,而是等待 slow_start	後加入服務對列。