Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 261|回复: 0

[默认分类] Nginx + Tomcat6配置负载均衡

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-7-8 17:00:18 | 显示全部楼层 |阅读模式

      
    1. 安装nginx和Tomcat,这里假定nginx-0.7.65,Tomcat6.x。(Nginx可以从http://nginx.org/en/download.HTML下载)
       安装Nginx
       # ./configure
       # make
       # make install
       在这里假定Nginx安装在nginxhost,tomcat分别安装在tomcathost1和tomcathost2上;
    2. 修改/usr/local/nginx/conf/nginx.conf文件,
       http {  ...    upstream myhost {        server tomcathost1:8080 weight=1;        server tomcathost2:8080 weight=2;    }    server {        ...        location / {            proxy_pass http://myhost;        }        ...    }  ...  }
    3. 确定nginxhost和两台tomcathost可以互访,并且两个tomcat机器在一个网段内;
    4. 确定两台tomcat host多播已经打开,在Linux机器上可以使用cat /proc/net/dev_mcast检查,如果文件存在基本上就是打开了;另外确定两台tomcat机器的/etc/hosts文件中包含“xxx.xxx.xxx.xxx    hostname”比如“172.17.1.101    tomcathost1”或“172.17.1.102    tomcathost2”;
    5. 修改两个tomcat的conf/server.xml文件,对Engine节点分别添加JVMRoute="tomcat1"和jvmRoute="tomcat2",并添加以下内容:
    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"     channelSendOptions="6">            <Manager className="org.apache.catalina.ha.session.DeltaManager"        expireSessionsOnShutdown="false"        notifyListenersOnReplication="true"/>    <!--    <Manager className="org.apache.catalina.ha.session.BackupManager"        expireSessionsOnShutdown="false"        notifyListenersOnReplication="true"        mapSendOptions="6"/>    -->    <Channel className="org.apache.catalina.tribes.group.GroupChannel">        <Membership className="org.apache.catalina.tribes.membership.McastService"            address="228.0.0.5"            port="45564"            frequency="500"            dropTime="3000"/>        <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"            address="auto"            port="4000"            selectorTimeout="100"            maxThreads="6"/>        <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">            <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>        </Sender>        <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>        <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>    </Channel>    <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*/.gif;.*/.js;.*/.jpg;.*/.png;.*/.htm;.*/.html;.*/.css;.*/.txt;"/>        <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>    <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/></Cluster>
      
    6. 创建一个web app,这里为了简单使用tomcat自带的examples web app(webapps/examples),修改其中的WEB-INF/web.xml文件,在其中<display-name>Servlet and JSP Examples</display-name>节点后添加<distributable/>表明此应用与集群服务器复制Session;
    7. 在两个Tomcat的webapps/examples目录下各创建一个test.jsp文件,用来测试Cluster中两个Tomcat的Session复制,代码如下:
    <html><head>    <title></title></head><body><%    String mydata = request.getParameter("mydata");    if (mydata != null && mydata.length() != 0) {        session.setAttribute("mydata", mydata);    }        out.println("request.getLocalAddr(): " + request.getLocalAddr());    out.println("<br/>");    out.println("request.getLocalPort(): " + request.getLocalPort());    out.println("<br/>");    out.println("Session ID: " + session.getId());    out.println("<br/>");        out.println("mydata: " + session.getAttribute("mydata"));%><form>    <input type=text size=20 name="mydata">    <br>    <input type=submit></form></body></html>
    8. 启动Tomcat和Nginx,访问http://nginxhost/examples/,可以修改其中Session中的值,并且可以看到两个tomcat的Session中的值是一样的;
      
    参考资料:
    http://nginx.org/en
    http://wiki.nginx.org/Main

       
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-25 22:18 , Processed in 0.421136 second(s), 48 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表