日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Nginx+tomcat 做負載均衡

系統 2309 0

架構描述

前端一臺nginx服務器做負載均衡器,后端放N臺tomcat組成集群處理服務,通過nginx轉發到后面(注:沒做動靜分離,靜態動態全部都轉給tomcat)

優點:實現了可彈性化的架構,在壓力增大的時候可以臨時添加tomcat服務器添加到這個架構里面去

一,配置nginx

1,??下載包

Wget? http://sysoev.ru/nginx/nginx-0.6.32.tar.gz

ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

2,??安裝nginx包

????a.安裝pcre

????tar zxvf pcre-7.2.tar.gz

????cd pcre

?./configure??--prefix = /pcre

?Make;make install

b, 安裝nginx

tar zxvf nginx-0.6.32.tar.gz

cd nginx-0.6.32

./configure??--prefix=/nginx –with-pcre=/pcre??--with-http_rewrite_module

Make;make install

3,? 修改配置文件

Vi /nginx/conf/nginx.conf

?

#用戶組

user nobody nobody;?????????????????

#cpu個數,可以按照實際服務器來計算

worker_processes??8;????????????????

worker_rlimit_nofile 51200;?????????

events {

????use epoll;

#連接數

????worker_connections??8192?;??????

}

http {

????include???????mime.types;

????default_type??application/octet-stream;

????server_names_hash_bucket_size 128;

#????access_log??off;

#????access_log??logs/access.log;

#緩存的時間,(可以根據不同文件設置不同時間)

?#???expires???????????2h;??????

????tcp_nodelay on;

????keepalive_timeout??30;??????

????gzip??on;

????gzip_min_length??10;

????gzip_buffers?????4 8k;

????gzip_http_version 1.1;

????gzip_types???????text/plain application/x-javascript text/css text/html application/xml;

????????sendfile?????????on;

????????tcp_nopush???????on;

????????reset_timedout_connection??on;

?????client_max_body_size?30m;?

#設定負載均衡列表???????

upstream??backend???????????

?{??????????????????????

server???172.23.254.2:8080;???

server???172.23.254.3:8080;

}

?

#設定虛擬主機

server {

????????listen???????80;

????????server_name?? www.abc.com ;

#對?/?所有做負載均衡 (本機nginx采用完全轉發,所有請求都轉發到后端的tomcat集群)

???????location / {???????

????????root /web/www ;

???????index index.jsp index.htm index.html;

????????????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;

???????proxy_pass??http://backend;???

???????}

}

}

主要在配置proxy與upstream

Upstream具有負載均衡能力,可以自動判斷下面的機器,并且自動踢出不能正常提供服務的機器。

?

?

4,啟動程序

/nginx/sbin/nginx

5,編寫啟動腳本

Vi nginx.sh

#!/bin/sh

CWD=`pwd`


case $1 in
??????? start)
??????????????? /nginx/sbin/nginx;
??????????????????????? ;;
??????? stop)
??????????????? kill -2 `ps -ef|grep "/nginx/sbin/nginx"|grep -v "grep"|awk '{print $2}' `
??????????????????????? ;;
??????? restart)
??????????????? cd "$CMD"
??????????????? $0 stop
??????????????? $0 start
??????? ;;
??????? *)
??????? echo $"Usage: $0 {start|stop|restart}"
??????? exit 1
esac
exit 0

?

????二,配置tomcat

1,??下載tomcat5.59

tar zxvf tomcat5.59

????????2,修改配置文件

????????????a,配置數據源

????????????b,優化tomcat最大并發數

????????????????????<Connector port="8080" maxHttpHeaderSize="8192"

???????????????maxThreads="2048" minSpareThreads="100" maxSpareThreads="200"

???????????????enableLookups="false" redirectPort="8443" acceptCount="500"

???????????????connectionTimeout="20000" disableUploadTimeout="true" />

????????????c,添加虛擬主機

(注,主轉發的虛擬主機必須用localhost,否則nginx不能通過內網ip轉發,而只有通過域名轉發

????????????d,測試

????????????????打開 http://ip :8080

????????????????頁面能訪問則正常

2,??其他的tomcat服務器也用同樣的配置

三,做tomcat集群

????兩臺機器?172.23.254.2??172.23.254.3

????做集群需要修改的文件配置有三個地方

????1,修改conf/server.xml配置文件
????????a.?找到Engine標簽,加入屬性?jvmRoute="worker1"

b.找到Cluster標簽,去掉注釋,同時修改tcpListenAddress為本機ip 172.23.254.2?(注:這一段Cluster必須放在hosts里面)

?????

2,??修改應用的web.xml

修改web應用里面WEB-INF目錄下的web.xml文件,加入標簽

<distributable/>

直接加在</web-app>之前就可以了

這個是加入tomcat的session復制的,做tomcat集群必須需要這一步,否則用戶的session就無法正常使用。

3,??開啟防火墻

這兩個tomcat之間必須開啟防火墻信任。

分別啟動兩個tomcat,查看每一個tomcat是否都啟動了8080端口以及4001端口

再用netstat –an?查看鏈接情況

tcp????????0??????0 172.23.254.2:43320??????172.23.254.3:4001??????ESTABLISHED

tcp????????0??????0 172.23.254.2:46544??????172.23.254.3:4001??????TIME_WAIT??

tcp????????0??????0 172.23.254.2:40118??????172.23.254.3:4001??????ESTABLISHED

tcp????????0??????0 172.23.254.2:4001???????172.23.254.3:48804?????ESTABLISHED

tcp????????0??????0 172.23.254.2:4001???????172.23.254.3:34254?????ESTABLISHED

如果兩臺機器的4001端口分別建立了連接,則說明集群配置成功,可以進行session復制。

?

?

可能存在的問題

1,??session復制問題

以前用apache做負載均衡的時候,是選擇了用?session sticky的模式,這樣的話,用戶每次進來都會是同一個服務器中的session,不會被轉發到其他的服務器上。在這樣的情況下,tomcat即使不做session復制也不會影響用戶訪問。但是nginx并不支持sticky功能。所以必須要做session復制。否則很多地方就根本沒法用。比如登錄過程,先等到了第一個tomcat上,產生了一個session,在刷新頁面,刷到另外一個tomcat的機器上,沒有這個session,就會出現問題了。所以程序員在寫jsp的時候也要注意這一點

??舉個簡單的例子,比如我們在單機應用情況下修改SESSION中用戶的某一個數據,那么通常就是:
User user = (User)request.getSession().getAttribute(“user”);
User.setName(“my name”);
????這樣我們就是直接存取出來,然后進行修改,雖然在單機情況下沒有問題,但是在集群條件下,這樣就導致了多臺WEB服務器上的SESSION不同步的問題,因為SESSION并沒有改變,Tomcat無法監視session中某個數據的值是否發生了變化。因此,我們還需要執行如下操作以保證SESSION的同步:
Request.getSession().setAttribute(“user”, user);
????所以,我們在操作SESSION的時候要特別注意!另外的建議就是,我們應該盡可能的不要修改SESSION中的數據。

?

??可能經常會遇到session復制不正常的情況。除了在服務端找原因再也程序上找下原因。都是有可能導致session復制不正常的

?

2.頁面同步

?????為確保后面tomcat的服務器上的頁面程序是一致的,可以采用如下方式

?????a,rsync同步,或者做成頁面按鈕,提供給編輯,修改了程序即使點擊同步

?????b,共享區域存儲,或者采取drbd網絡raid模式

?

3,確認nginx可以轉發成功,

在nginx上wget一下后面轉發的url(包過端口),如果可以打開,那就可以轉發過去。如果不能打開,則無法轉發

Nginx+tomcat 做負載均衡


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 固原市| 旺苍县| 青浦区| 凤城市| 东兰县| 丰台区| 营口市| 卓尼县| 渝北区| 康平县| 汾阳市| 新晃| 凤冈县| 偃师市| 区。| 泗阳县| 峨眉山市| 嵩明县| 迭部县| 永和县| 阿坝县| 乳源| 丰宁| 淮北市| 新密市| 株洲县| 民县| 屏南县| 秭归县| 沾益县| 恩施市| 浙江省| 察哈| 攀枝花市| 桂阳县| 翁源县| 鸡泽县| 富源县| 宜春市| 天镇县| 岳池县|