Nginx負載均衡
當你的網站訪問量越來越大,單臺服務器已經不能滿足你的要求,這個時候就出現了集羣,如何將請求均衡分擔到多臺服務器,從而保證不會導致有些機器太忙,有些機器又太空閒,從而最大程度地提高服務器性能。Nginx的反向代理就可以爲我們做到這些。
負載均衡算法
1、輪詢算法(round-bin)
將請求按順序輪流地分配到後端服務器上,它均衡地對待後端服務器,而不關心後端服務器實際的連接數和負載量。默認使用這個配置。
http {
upstream myapp1 {
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://myapp1;
}
}
}
2、加權輪詢
不同的後端服務器可能機器的配置和當前系統的負載並不相同,因此它們的抗壓能力也不相同。給配置高、負載低的機器配置更高的權重,讓其處理更多的請;而配置低、負載高的機器,給其分配較低的權重,降低其系統負載,加權輪詢能很好地處理這一問題,並將請求順序且按照權重分配到後端。
upstream myapp1 {
server srv1.example.com weight=3;
server srv2.example.com;
server srv3.example.com;
}
如上配置,如果有5個請求到服務器,則有3個請求會被分配到服務器1,其他2個請求被分配到2和3服務器。
3、最小連接數(least_conn)
將請求分配到連接數最小的服務器。
upstream myapp1 {
least_conn;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
4、哈希算法(ip_hash)
基於客戶機的IP地址根據散列算法將請求分配到後端服務器。此算法能保證具體的Ip總是被分配到具體的服務器,除非該臺服務器宕機了。
upstream myapp1 {
ip_hash;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}