windows ,Tomcat+Nginx 負載均衡配置,集羣

在Win7實現Tomcat+Nginx 負載均衡配置

 

一、首先需要下載tomcat及nginx,然後解壓。

nginx-1.11.2

apache-tomcat-7.0.70-windows-x64.zip

 

然後解壓到某個文件夾裏面。

tomcat 需要有2個或者2個以上,不然體現不了集羣,所有把解壓的Tomcat複製一份,重新命名。

我是這樣的:

tom-7.0.70-1
tom-7.0.70-2

nginx-1.11.2

 

二、配置Tomcat

 

1、修改Tomcat端口

因爲Tomcat使用了端口,如果相同的端口,後啓動的tomcat會啓動不了,提示端口占用。所以先修改端口。

由於開發也需要一個Tomcat,所以我把集羣的2個Tomcat的端口都改了。

一個是:8081,對應tom-7.0.70-1

另一個是8082,對應tom-7.0.70-2

 

配置如下:

D:\tom-7.0.70-1\conf\server.xml

修改關閉端口

Xml代碼 

 收藏代碼

  1. <Server port="8015" shutdown="SHUTDOWN">  

 

修改請求端口

Xml代碼 

 收藏代碼

  1. <Connector port="8081" protocol="HTTP/1.1"  
  2.                connectionTimeout="20000"  
  3.                redirectPort="8443" />  

 

D:\tom-7.0.70-2\conf\server.xml

Xml代碼 

 收藏代碼

  1. <Server port="8025" shutdown="SHUTDOWN">  

 

Xml代碼 

 收藏代碼

  1. <Connector port="8082" protocol="HTTP/1.1"  
  2.                connectionTimeout="20000"  
  3.                redirectPort="8443" />  

 

2、修改 jvmRoute

同樣是在文件

D:\tom-7.0.70-1\conf\server.xml

D:\tom-7.0.70-2\conf\server.xml

找到Engine 

Xml代碼 

 收藏代碼

  1. <Engine name="Catalina" defaultHost="localhost" >  

 在後面加上 jvmRoute,如:

D:\tom-7.0.70-1\conf\server.xml配置下如

Xml代碼 

 收藏代碼

  1. <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">  

 

D:\tom-7.0.70-2\conf\server.xml配置如下

 

Xml代碼 

 收藏代碼

  1. <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">  

 

 

三、修改nginx配置文件nginx.conf

 

1、找到nginx.conf文件,我的在D:\nginx-1.11.2\conf\nginx.conf

 

2、在http{……}里加上upstream,如下 

 

Xml代碼 

 收藏代碼

  1. upstream tomcatCluster{# tomcatCluster和proxy_pass保持一樣  
  2.     #解決session的問題  
  3.     ip_hash;#加上這個,解決Session每次訪問頁面都不一樣,加上就一樣了。  
  4.           
  5.        #這裏是tomcat的地址,weight越大,訪問機率越大。  
  6.     server 127.0.0.1:8081 weight=1 fail_timeout=5s max_fails=1;  
  7.     server 127.0.0.1:8082 weight=2 fail_timeout=5s max_fails=1;  
  8.     }  

 

server:配置tomcat服務器請求的地址,2臺Tomcat服務就配置2個server

 

3、修改location / {……}

默認是這個的:

Xml代碼 

 收藏代碼

  1. location / {  
  2.             root   html;  
  3.             index  index.html index.htm;  
  4.         }  

 

修改成這樣:

Xml代碼 

 收藏代碼

  1. location / {  
  2.             #root   html;  
  3.         proxy_pass http://tomcatCluster;  
  4.             #index  index.html index.htm;  
  5.         proxy_set_header Host $host;  
  6.             proxy_set_header X-Real-IP $remote_addr;  
  7.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  8.             proxy_connect_timeout       1;  
  9.             proxy_read_timeout          1;  
  10.             proxy_send_timeout          1;   
  11.         }  

 

最簡單的配置就是:

Xml代碼 

 收藏代碼

  1. location / {  
  2.      proxy_pass http://tomcatCluster;  
  3. }  

 tomcatCluster 對應upstream後的命名。

 

下面的配置可以解決2個Tomcat服務器集羣,當一臺服務器掛掉(宕機)後,請求變得很慢的問題。

(Tomcat集羣一臺服務器掛掉後請求變慢解決方案)

Xml代碼 

 收藏代碼

  1. proxy_connect_timeout       1;  
  2. proxy_read_timeout          1;  
  3. proxy_send_timeout          1;   

 

 

四、測試

 

1、在Tomcat部署一個JavaWeb項目,配置一個index.jsp頁面,方便查看集羣后請求進入的是哪個Tomcat服務器。其實這步可以省略,但有更加好。

 

index.jsp代碼如下:

Html代碼 

 收藏代碼

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <title>學習項目</title>  
  8. </head>  
  9. <body>  
  10.     <div style="color: red;font-weight: bold;">study項目。</div>  
  11.     <%   
  12.   //HttpSession session = request.getSession(true);   
  13.   System.out.println(session.getId());   
  14.   out.println("<br> SESSION ID:" + session.getId()+"<br>");   
  15. %>   
  16.       
  17. </body>  
  18. </html>  

 

2、分別啓動2個Tomcat

 

分別進行D:\tom-7.0.70-1\bin、D:\tom-7.0.70-2\bin目錄,點擊startup.bat啓動Tomcat

 

3、啓動Nginx服務器

使用Windows命令行啓動

(1)進入D盤:d:

(2)進入D:\nginx-1.11.2目錄:cd nginx-1.11.2

(3)啓動服務:start nginx (啓動一閃而過,但打開進程管理器能看到是已經啓動的)

 

關閉服務的命令:nginx -s stop

重新加載的命令:nginx -s reload,修改配置文件後,可以使用該命令直接加載,不需要重啓。

 

4、在瀏覽器輸入地址測試

 

Nginx監聽的是80端口,瀏覽器直接輸入:http://localhost/

如果出現Tomcat的頁面,就證明成功。



 

由於我在Tomcat部署了項目,直接請求項目:http://localhost/study/

出現:



 



 顯示的信息是前面提過的index.jsp頁面

其中後綴 jmv1,jvm2對應Tomcat配置的jvmRoute,這樣可以清晰看出請求的是哪個Tomcat服務器。

 

另外說明的是:

 

Xml代碼 

 收藏代碼

  1. server 127.0.0.1:8081 weight=1 fail_timeout=5s max_fails=1;  

 裏面的weight表示權重,權重越大,請求機率越大

 

127.0.0.1:8081設置爲1,127.0.0.1:8082設置也爲1,請求的機率幾乎是請求完jvm1,再請求就是jvm2

127.0.0.1:8081設置爲1,127.0.0.1:8082設置爲2,請求的機率是請求2次8082纔會請求一次8081

127.0.0.1:8081設置爲1,127.0.0.1:8082設置爲5,請求的機率是幾乎所有請求都是8082

轉自:http://fanshuyao.iteye.com/,感謝作者分享

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章