日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

負載均衡-在window與linux下配置nginx_負載集群教程

編輯Tag賺U幣

最近有些時間,開始接觸負載均衡方面的東西,從硬件F5再到Citrix Netscalar。不過因為硬件的配置雖然不復(fù)雜,但那些不費的價格也讓一般用戶望而卻步(十幾萬到幾十萬),所以只能轉(zhuǎn)向nginx,squid這類有反向代理功能的軟件了。好在其設(shè)置都不是很麻煩。

本文就之前所做過的安裝和配置步驟做一下總結(jié)分享出來,以免日后忘記了。

首先是windows系統(tǒng),這里建議使用window 2003企業(yè)版,而不要作用win7(太新了,我遇到無法啟動nginx的問題)。要說的是,在windows下配置安裝nginx還是很容易的,少了linux下下載tar再配置編譯參數(shù)等等步驟,我們只要從下面的地址下載相應(yīng)的zip包(大約750kb)即可,地址如下:

http://sysoev.ru/nginx/nginx-0.8.21.zip

需要說明的是這個下載包是nginx 0.8.21開發(fā)版,換句話說其只能用于搭建測試環(huán)境等用途的,不能用于實際的生產(chǎn)環(huán)境(受限于windows文件句柄數(shù)限制)。

下載并將該包中的文件解壓到c盤上,為了配置使用方便,我將其解壓后的文件夾名稱從“nginx-0.8.19”改為"nginx”,這樣我們只要將要負載均衡的站點在iis中設(shè)置好之后,將相應(yīng)的鏈接地址放到nginx的相應(yīng)配置文件中即可,這里我們打開C:\nginx\conf\nginx.conf文件,將下面的內(nèi)容放到該文件的“server { ”上方行處:

upstream  mylocalsite {

server   10.0.2.137:8088;

server   10.0.2.137:8089;

}

因為nginx無法運行動態(tài)腳本,所以這里要使用proxy_pass屬性進行代理,所以找到該配置文件的如下內(nèi)容:

location / {

root   html;

index  index.html index.htm;

}

修改其內(nèi)容如下:

location / {

proxy_pass http://mylocalsite;

}

修改完之后,還要修改一下server的偵聽端口,原內(nèi)容如下:

server {

listen       80;

server_name  localhost;

……

修改完后的內(nèi)容如下:

server {

listen       8086;

server_name  10.0.2.136;

……

這樣,nginx就會在啟動之后開始偵聽本地IP(10.0.2.136)的8086端口請求,然后將其請求轉(zhuǎn)向到mylocalsite 中所指定的兩個iis站點,并將執(zhí)行的結(jié)果轉(zhuǎn)發(fā)給客戶端。如果一切配置正確,這時可以運行 c:/nginx/nginx.exe (或在cmd下運行“start nginx”),就可以在任務(wù)管理器中看到一個nginx進程啟動了。(注:如果配置文件有錯誤,可以到C:\nginx\logs\error.log查看錯誤日志,進一步排錯)。

注: 關(guān)閉ngnix的命令: nginx -s stop

配置文件ngnix.conf正確性判斷的命令: nginx -t

當(dāng)然Nginx 負載均衡的功能也是很強的,并且其一般作為七層負載均衡(應(yīng)用協(xié)議層)。下面就其upstream所支持的四個常用設(shè)置進行說明:

1)、輪詢(默認):每個請求按時間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動剔除。

2)、weight :指定輪詢幾率,weight和訪問比率成正比,用于后端服務(wù)器性能不均的情況。

2)、ip_hash :每個請求按訪問ip的hash結(jié)果分配,這樣每個訪客固定訪問一個后端服務(wù)器,可以解決session的問題。

3)、fair(第三方):按后端服務(wù)器的響應(yīng)時間來分配請求,響應(yīng)時間短的優(yōu)先分配。

4)、url_hash(第三方)

按上面的說明,可以將之前我們的upstream做如下修改:

upstream  mylocalsite {

server   10.0.2.137:8088 weight=2;

server   10.0.2.137:8089 weight=1;

}

這個當(dāng)來了三個HTTP請求時,其中的兩個會被分配到10.0.2.137:8088 上,一個分配到10.0.2.137:8089 。當(dāng)然一開始可以其分攤的請求可以不是太嚴格按其設(shè)置,但當(dāng)請求數(shù)多了之后,基本上就接近于我們分指派的權(quán)值了。當(dāng)然就負載均衡的算法而言,使用weight只是其中的一種,而經(jīng)常使用的還有許多,比如lvs就在其內(nèi)部實現(xiàn)了多種的負載均衡算法,可以根據(jù)用戶的實際環(huán)境進行設(shè)置布署。。當(dāng)然就目前而言,nginx的算法相比較還是少了許多,呵呵。

可以說在windows下安裝配置還是很方便的,但如果使用loadrunner做并發(fā)測試時,就會發(fā)現(xiàn)其logs/error.log就會報如下錯誤:

maximum number of descriptors supported by select() is 1024 while connecting to upstream

我曾經(jīng)在網(wǎng)上查過解決方案,包括修改配置文件的worker_connections ,如下:

worker_rlimit_nofile 20240;

events {

#use epoll;//linux下使用

worker_connections  20240;

}

但依舊不能將文件句柄數(shù)擴充到20240,還是報1024最大句柄數(shù)錯誤。最后實在沒辦法了,只得開始嘗試在linux下安裝配置nginx。也就引發(fā)了下面的內(nèi)容。

其實在網(wǎng)上有關(guān)介紹如何在linux下安裝nginx的要比windows下的要多得多,必定這是‘本家’吧。

因為之前網(wǎng)管只在虛擬機上安裝了CentOS5,所以只能就嘗試在該linux分支版本下安裝了。好在虛擬機已安裝完了,剩下的工作并不太多。

首先需要以root身份登陸系統(tǒng),然后切換身份為超級管理員:

sudo -s          # 先成為超級管理員

然后進入到src目前下,并在當(dāng)前目錄下download nginx.tar.gz包

cd /usr/src      # 將文件下載到這個目錄

wget http://sysoev.ru/nginx/nginx-0.7.62.tar.gz# 下載安裝包

tar xzvf nginx-0.6.34.tar.gz   #解壓

如果下載的nginx 中默認可能沒有 rewirte規(guī)則,因此需要下載pcre包的擴展來實現(xiàn)這個功能:

wget http://syslab.comsenz.com/downloads/linux/pcre-7.8.tar.bz2    # 下載pcre

tar xjvf pcre-7.8.tar.bz2                   # 解壓pcre

下面編譯安裝pcre

cd /usr/src/pcre-7.8;

./configure --prefix=/usr/local/pcre --enable-utf8 --enable-unicode-properties

下面編譯安裝nginx

cd /usr/src/nginx-0.7.62

開始配置要編譯的參數(shù)(注:內(nèi)容較長,容易輸錯。具體參數(shù)設(shè)置參見http://wiki.codemongers.com/NginxChsInstall)

./configure --prefix=/usr/local/nginx  --sbin-path=/usr/local/nginx/sbin/nginx  --conf-path=/usr/local/nginx/conf/nginx.conf

--error-log-path=/usr/local/nginx/logs/error.log --http-log-path=/usr/local/nginx/logs/access.log

--pid-path=/usr/local/nginx/var/nginx.pid --lock-path=/usr/local/nginx/var/nginx.lock

--http-client-body-temp-path=/dev/shm/nginx_temp/client_body --http-proxy-temp-path=/dev/shm/nginx_temp/proxy

--http-fastcgi-temp-path=/dev/shm/nginx_temp/fastcgi

--user=www --group=www --with-cpu-opt=pentium4 --without-select_module --without-poll_module

--with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module

--without-http_ssi_module --without-http_userid_module --without-http_geo_module --without-http_memcached_module

--without-http_map_module" #如要取消ssl可去掉該項

--without-mail_pop3_module --without-mail_imap_modul --without-mail_smtp_module --with-pcre=/usr/local/pcre/lib

接下來就開始編譯生成相應(yīng)的文件了:

make

make install

然后/dev/shm 也就是內(nèi)存中,建立一個nginx_temp文件夾

mkdir /dev/shm/nginx_temp

接著創(chuàng)建www用戶和組,以及其使用的目錄:

/usr/sbin/groupadd www -g 48

/usr/sbin/useradd -u 48 -g www www

mkdir -p /data0/vshare/htdocs

chmod +w /data0/vshare/htdocs

chown -R www:www /data0/vshare/htdocs

這時可以擴充一下文件句柄數(shù)(windows下就沒這么容易擴展了,哎)

ulimit -SHn 51200 #設(shè)置打開文件句柄

到這里,我們就可以使用linux下的vi編輯器編輯一下:

cd /usr/src/nginx-0.7.62/conf/

vi nginx.conf

將之前在window下的修改內(nèi)容替換(按下insert鍵進入到編輯模式)到當(dāng)前的文件中,當(dāng)修改完成了,按冒號(":")切換到命令模式下,然后敲入“wq”,保存并退出。(強制退出(不保存)的話,輸入q!,然后回車)

注:

events {

use epoll;

worker_connections  20240;

}

注:use epoll; //linux下使用,更多內(nèi)容參見NginxChsOptimizations

這樣就可以運行nginx了:

/usr/local/nginx/sbin/nginx -t –c

啟動完成后,可以通過如下指令查看其在內(nèi)存中的運行信息:

# ps aux | egrep '(PID|nginx)'

這樣當(dāng)我們再使用loadrunner運行時,就可以看到error.log中就不再報那個惱人的“1024錯誤了”。

當(dāng)然在nginx中,還支持文件緩存,以便于將那些靜態(tài)文件緩存到本地的nginx服務(wù)器上,只不過要修改一下其config文件配置,如下:

vi nginx.conf

在文件中的相應(yīng)節(jié)點處輸入如下內(nèi)容:

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|html|htm|css)$ {        #指定緩存文件類型

expires 7d;      #設(shè)置瀏覽器過期時間7天

root data/nginx_cache/iis;          #靜態(tài)文件根目錄目錄(必須對應(yīng)proxy_temp_path)

proxy_store on;        #開啟緩存機制

proxy_store_access user:rw group:rw all:rw;       #緩存讀寫規(guī)則

proxy_temp_path data/nginx_cache/iis;            #存放靜態(tài)文件的緩存目錄

#    include proxy.conf;          # 外聯(lián)proxy理的詳細配置如proxy_set_header, client_max_body_size

.

if (!-e $request_filename) {

proxy_pass http://10.0.2.136;/

}

}

這樣就會在data/nginx_cache/iis目前下生成相應(yīng)的gif,jpg等文件的臨時信息,當(dāng)客戶端請求到來時,就會從該目錄中檢索相應(yīng)文件綁定之后返回給客戶端,以減輕iis服務(wù)器和網(wǎng)絡(luò)帶寬的壓力。

來源:網(wǎng)絡(luò)搜集//所屬分類:負載集群教程/更新時間:2012-08-11
相關(guān)負載集群教程