window下nginx 1.7.4 做多個tomcat負載均衡
1、下載最新版nginx
http://nginx.org/download/nginx-1.7.4.zip
http://nginx.org/en/download.html
配置參考官方資料:http://nginx.org/en/docs/windows.html
2、安裝
下載後解壓到安裝目錄下即可。
啟動:cmd下執行:nginx
其它命令:
過載 :nginx -s reload
停止:nginx -s stop
關閉 :nginx -s quit
3、配置tomcat
要均衡兩個tomcat,需要修改一些埠,一個預設,一個tomcat修改成其它埠(改為在預設埠值+1)。
有三處埠修改:
1)<Server port="8006" shutdown="SHUTDOWN">
2) <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
3)<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
還有一處是兩個tomcat都需要改的地方:在Engine上添加個jvmRoute屬性,要求兩個tomcat的值都不一樣
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
4、修改nginx配置
開啟nginx的conf/nginx.conf
修改位置為:
1)不加權重的情況:
Xml程式碼- http {
- include mime.types;
- default_type application/octet-stream;
- #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
- # '$status $body_bytes_sent "$http_referer" '
- # '"$http_user_agent" "$http_x_forwarded_for"';
- #access_log logs/access.log main;
- sendfile on;
- #tcp_nopush on;
- #keepalive_timeout 0;
- keepalive_timeout 65;
- #gzip on;
- #設定負載均衡的伺服器列表
- upstream spagobi {
- #根據ip計算將請求分配各那個後端tomcat,許多人誤認為可以解決session問題,其實並不能。
- #同一機器在多網情況下,路由切換,ip可能不同
- #ip_hash;
- server localhost:8080 ;
- server localhost:8081 ;
- }
- server {
- listen 80;
- server_name spagobi;
- #charset koi8-r;
- #access_log logs/host.access.log main;
- location / {
- root html; #專案的根目錄
- index index.html index.htm;#定義首頁索引檔案的名稱
- proxy_pass http://spagobi; #請求轉向upstream spagobi定義的伺服器列表
- #以下是一些反向代理的配置可刪除.
- #proxy_redirect off;
- #後端的Web伺服器可以通過X-Forwarded-For獲取使用者真實IP
- #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_max_body_size 10m; #允許客戶端請求的最大單檔案位元組數
- client_body_buffer_size 128k; #緩衝區代理緩衝使用者端請求的最大位元組數,
- proxy_connect_timeout 3;
- proxy_send_timeout 30;
- proxy_read_timeout 30;
- proxy_buffer_size 4k; #設定代理伺服器(nginx)儲存使用者頭資訊的緩衝區大小
- proxy_buffers 4 32k; #proxy_buffers緩衝區,網頁平均在32k以下的話,這樣設定
- proxy_busy_buffers_size 64k; #高負荷下緩衝大小(proxy_buffers*2)
- proxy_temp_file_write_size 64k; #設定快取資料夾大小,大於這個值,將從upstream伺服器傳
- }
- #error_page 404 /404.html;
2、加權重的配置:
Xml程式碼- #keepalive_timeout 0;
- keepalive_timeout 65;
- #gzip on;
- #設定負載均衡的伺服器列表
- upstream www.xxx.com {
- #根據ip計算將請求分配各那個後端tomcat,許多人誤認為可以解決session問題,其實並不能。
- #同一機器在多網情況下,路由切換,ip可能不同
- #ip_hash;//如果ip_hash開啟,則根據ip的hash值計算到一個固定的server上,這樣每次請求都會固定這個server,也就變向解決了session共享的問題,保證該使用者的所有請求都會在一個tomcat上,而不會跑到其它tomcat上
- server localhost:8080 weight=8 max_fails=3 fail_timeout=30s;
- server localhost:8081 weight=2 max_fails=3 fail_timeout=30s;
- }
- server {
- listen 80;
- server_name www.xxx.com;
- #charset koi8-r;
- #access_log logs/host.access.log main;
- location / {
- root html;
- index index.html index.htm;
- proxy_pass http://www.xxx.com;
- #以下是一些反向代理的配置可刪除.
- #proxy_redirect off;
- #後端的Web伺服器可以通過X-Forwarded-For獲取使用者真實IP
- #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_max_body_size 10m; #允許客戶端請求的最大單檔案位元組數
- client_body_buffer_size 128k; #緩衝區代理緩衝使用者端請求的最大位元組數,
- proxy_connect_timeout 3;
- proxy_send_timeout 30;
- proxy_read_timeout 30;
- proxy_buffer_size 4k; #設定代理伺服器(nginx)儲存使用者頭資訊的緩衝區大小
- proxy_buffers 4 32k; #proxy_buffers緩衝區,網頁平均在32k以下的話,這樣設定
- proxy_busy_buffers_size 64k; #高負荷下緩衝大小(proxy_buffers*2)
- proxy_temp_file_write_size 64k; #設定快取資料夾大小,大於這個值,將從upstream伺服器傳
- }
- #error_page 404 /404.html;
nginx的upstream目前支援5中方式的分配:
1)、輪詢;
Xml程式碼- upstream backend{
- server localhost:8080 ;
- server localhost:8081 ;
- }
2)、weight (權重);
Xml程式碼- upstream backend{
- server localhost:8080 weight=8 max_fails=3 fail_timeout=30s;
- server localhost:8081 weight=2 max_fails=3 fail_timeout=30s;
- }
3)、ip_hash(客戶端ip的hash來固定到固定的後端某一個伺服器上);
Java程式碼- upstream backend{
- ip_hash;
- server localhost:8080;
- server localhost:8081;
- }
4)、fair(根據後端伺服器響應時間);
Xml程式碼- upstream backend{
- server localhost:8080;
- server localhost:8081;
- fair;
- }
5)、url_hash (按訪問url的hash結果來分配請求,使每個url定位到同一臺後端伺服器)
Xml程式碼- upstream backend{
- server localhost:8080;
- server localhost:8081;
- hash $request_uri;
- hash_method crc32;
- }
5、測試
從新啟動兩個tomcat,然後啟動nginx,瀏覽器輸入 http://localhost/,重新整理瀏覽器,看對映的tomcat的變化,不加權重的,採用奇偶切換,加權重的,按照權重出現的比例切換。
參考
1、Nginx 簡單的負載均衡配置示例
http://www.360doc.com/content/11/0722/02/1542811_135112833.shtml
2、Nginx詳細配置(含負載均衡)
http://wenku.baidu.com/link?url=NP77-jpwGha-SZoQmm3ncqtKzRIdoGbu_Uxp7tp4fymOmEKVEJnO0jGUf_wDH-fqI3sZ0EuRbYZZ3WSNvC62uTUf8j53zjT_OAQrpCgUYTm