通過 upstream 可以設定後端服務器,指定的方式可以是 IP 地址與端口、域名、UNIX 套接字(socket)。其中如果域名可以被解析爲多個地址,則這些地址都作爲 backend。
upstream backend {
server lxsym.blog.51cto.com;
server 192.168.11.68:8080;
server unix:/tmp/backend3;
}
upstream模塊負載均衡分配方式有:
1、輪詢(默認)
每個請求按時間順序逐一分配到不同的後端服務器,如果後端服務器down掉,能自動剔除。
2、weight(常用)
指定輪詢機率,weight和訪問比率成正比,用於後端服務器性能不均的情況。
upstream tel_img_stream {
server 192.168.11.68:20201 weight=100;
server 192.168.11.69:20201 weight=100;
}
2、ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端服務器,可以解決session的問題。
upstream tel_img_stream {
#ip_hash;
server 192.168.11.68:20201;
server 192.168.11.69:20201 weight=100 down;
server 192.168.11.70:20201 weight=100;
server 192.168.11.71:20201 weight=100 backup;
server 192.168.11.72:20201 weight=100 max_fails=3 fail_timeout=30s;
}
說明:
1).down 表示當前的server暫時不參與負載
2).weight 默認爲1.weight越大,負載的權重就越大。
3).backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這臺機器壓力會最輕。
4).上例中192.168.11.72:20201 設置最大失敗次數爲 3,也就是最多進行 3 次嘗試,且超時時間爲 30秒。max_fails 的默認值爲 1,fail_timeout 的默認值是 10s。
注意,當upstream中只有一個 server 時,max_fails 和 fail_timeout 參數可能不會起作用。
weight\backup 不能和 ip_hash 關鍵字一起使用。
3、fair、url_hash暫時不做介紹
最後在需要使用負載均衡的server中增加 proxy_pass http://tel_img_stream/;
獲取訪問head信息
location ~* ^/tel_img/(.*)$
{
proxy_pass http://tel_img_stream;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
location 對URL進行匹配.可以進行重定向或者進行新的代理 負載均衡。
若有什麼補充可以留言~