• Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群,Tomcat集群


    Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群,Tomcat集群

     

     原文地址:http://fanshuyao.iteye.com/

     

    在Win7实现Tomcat+Nginx 负载均衡配置

     

    一、首先需要下载tomcatnginx,然后解压。

    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: om-7.0.70-1confserver.xml

    修改关闭端口

    Xml代码  

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

     

    修改请求端口

    Xml代码  

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

     

    D: om-7.0.70-2confserver.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: om-7.0.70-1confserver.xml

    D: om-7.0.70-2confserver.xml

    找到Engine 

    Xml代码  

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

     在后面加上 jvmRoute,如:

    D: om-7.0.70-1confserver.xml配置下如

    Xml代码  

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

     

    D: om-7.0.70-2confserver.xml配置如下

     

    Xml代码  

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

     

     

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

     

    1、找到nginx.conf文件,我的在D: ginx-1.11.2conf ginx.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. 10.             proxy_send_timeout          1;   
    11. 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. 10.     <div style="color: red;font-weight: bold;">study项目。</div>  
    11. 11.     <%   
    12. 12.   //HttpSession session = request.getSession(true);   
    13. 13.   System.out.println(session.getId());   
    14. 14.   out.println("<br> SESSION ID:" + session.getId()+"<br>");   

    15. %>   

    1. 16.       

    17. </body>  

    18. </html>  

     

    2、分别启动2Tomcat

     

    分别进行D: om-7.0.70-1in、D: om-7.0.70-2in目录,点击startup.bat启动Tomcat

     

    3、启动Nginx服务器

    使用Windows命令行启动

    (1)进入D盘:d:

    (2)进入D: ginx-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/

  • 相关阅读:
    android 通过canvas旋转 绘制文字 竖直等不同方向的显示
    [转]在.NET环境中实现每日构建(Daily Build)NAnt篇
    [转]如何让Android字体自适应屏幕分辨率
    [转]调用相机并将照片存储到sd卡上
    [转]在.NET环境中实现每日构建(Daily Build)ccnet,MSBuild篇
    [转]使用ANT打包Android应用
    [转]通过创建一个位图的XY Chart来学习Android绘图类Rect,Paint,Bitmap,Canvas(附源码)
    [转]android webview学习
    [转]敏捷开发中编写高质量Java代码
    MSDN Visual C++ 开发中心
  • 原文地址:https://www.cnblogs.com/curen/p/5653541.html
Copyright © 2020-2023  润新知