下面給大家總結(jié)了幾種真正的nginx負(fù)載均衡的功能了,在此我們加了一個權(quán)重判斷法就是根據(jù)nginx負(fù)載的狀態(tài)實(shí)現(xiàn)分配訪問用戶到權(quán)重值少的機(jī)器了,具體配置如下。

nginx為后端web服務(wù)器(apache,nginx,tomcat,weblogic)等做反向代理
幾臺后端web服務(wù)器需要考慮文件共享,數(shù)據(jù)庫共享,session共享問題.文件共享可以使用nfs,共享存儲(fc,ip存儲都行)+redhat GFS集群文件系
統(tǒng),rsync+inotify文件同步等.小規(guī)模的集群中使用更多的是nfs.對于內(nèi)容管理系統(tǒng),單臺進(jìn)行發(fā)布信息,向多臺同步使用rsync+inotify就是個不錯的選擇.
小規(guī)模集群,單臺高性能數(shù)據(jù)庫(如志強(qiáng)雙四核,32/64/128G內(nèi)存)即可,大規(guī)模集群可能要考慮數(shù)據(jù)庫集群了,可以使用mysql官方提供的集群軟件,也
可以使用keepalived+lvs讀寫分離做Mysql集群.
session共享問題是一個大問題,如果nginx采用ip_hash的輪詢方法,每個ip在一定時間內(nèi)會被固定的后端服務(wù)器,這樣我們不用解決session共享問題.反之,
一個ip的請求被輪詢分發(fā)到多臺服務(wù)器上,就要解決session共享的問題,可以使用nfs共享session,把session寫入mysql或者memcache等方法,當(dāng)機(jī)器規(guī)模比較大
時,一般使用把session寫入memcache里面.
后端的web服務(wù)器如何配置我們這里就不討論了,后端服務(wù)器可能是apache,nginx,tomcat,lighthttp等,前端不關(guān)心后端到底是什么.
首先新建一個proxy.conf文件,方便后面我們進(jìn)行調(diào)用(配置多個集群的話,把公共參數(shù)寫到一個文件,然后繼續(xù)include是不錯的方法)
vi /usr/local/nginx/conf/proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_body_buffer_size 90;
proxy_connect_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64
我們這里討論nginx的兩種負(fù)載均衡方式 輪詢加權(quán)(也可以不加權(quán),就是1:1負(fù)載)和ip_hash(同一ip會被分配給固定的后端服務(wù)器,解決session問題)
這個配置文件,我們可以寫到nginx.conf里面(如果只有一個web集群),如果有多個web集群,最好寫到vhosts里面,以虛擬主機(jī)的方式,這里我寫到nginx.conf里面
第一種配置:加權(quán)輪詢,按服務(wù)器的性能給予權(quán)重,本例是1:2分配
upstream lb {
server 192.168.196.130 weight=1 fail_timeout=20s;
server 192.168.196.132 weight=2 fail_timeout=20s;
}
server {
listen 80;
server_name safexjt.com www.safexjt.com;
index index.html index.htm index.php;
location / {
proxy_pass http://lb;
proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
include proxy.conf;
}
}
第二種配置:ip_hash輪詢方法,不可給服務(wù)器加權(quán)重
upstream lb {
server 192.168.196.130 fail_timeout=20s;
server 192.168.196.132 fail_timeout=20s;
ip_hash;
}
server {
listen 80;
server_name safexjt.com www.safexjt.com;
index index.html index.htm index.php;
location / {
proxy_pass http://lb;
proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
include proxy.conf;
}
}
方法二 nginx負(fù)載均衡基于ip_hash實(shí)現(xiàn)session粘帖
1、輪詢(默認(rèn))
每個請求按時間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動剔除。
upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}
2、指定權(quán)重
指定輪詢幾率,weight和訪問比率成正比,用于后端服務(wù)器性能不均的情況。
upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
3、IP綁定 ip_hash
每個請求按訪問ip的hash結(jié)果分配,這樣每個訪客固定訪問一個后端服務(wù)器,可以解決session的問題。
upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
4、fair(第三方)
按后端服務(wù)器的響應(yīng)時間來分配請求,響應(yīng)時間短的優(yōu)先分配。
upstream backserver {
server server1;
server server2;
fair;
}
5、url_hash(第三方)
按訪問url的hash結(jié)果來分配請求,使每個url定向到同一個后端服務(wù)器,后端服務(wù)器為緩存時比較有效。
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
在需要使用負(fù)載均衡的server中增加
proxy_pass http://backserver/;
upstream backserver{
ip_hash;
server 127.0.0.1:9090 down; (down 表示單前的server暫時不參與負(fù)載)
server 127.0.0.1:8080 weight=2; (weight 默認(rèn)為1.weight越大,負(fù)載的權(quán)重就越大)
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup; (其它所有的非backup機(jī)器down或者忙的時候,請求backup機(jī)器)
}
max_fails :允許請求失敗的次數(shù)默認(rèn)為1.當(dāng)超過次數(shù)時,返回proxy_next_upstream 模塊定義的錯誤
fail_timeout:max_fails次失敗后,暫停的時間
網(wǎng)頁名稱:nginx負(fù)載均衡加權(quán)輪詢和ip_hash
地址分享:http://chinadenli.net/article8/cjicip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、動態(tài)網(wǎng)站、網(wǎng)站維護(hù)、服務(wù)器托管、App設(shè)計(jì)、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)