Ngnix做tomcat分发配置

本文介绍了一种通过Nginx进行流量分发以减轻单台Tomcat服务器压力的方法。具体实现中,Nginx作为前端服务器接收请求,并将其分配到后端三台Tomcat服务器上。此外还详细展示了Nginx和Tomcat的相关配置。

最近在项目上遇到单台tomcat服务器压力过大问题,尝试使用Ngnix做分发。


大概结构是这样的:


有一台单独的Ngnix服务器,开放了一个端口(1002)接收数据,然后实际的应用部署在其他三台服务器上:


Ngnix 的配置如下: 


##---------------------------------------------------------------------------
         upstream uplog{
                server 192.168.5.112:3002 weight=6;
                server 192.168.5.114:3002 weight=6;
                server 192.168.5.116:3002 weight=6;
         }
        server {
                listen  1002;
                server_name 192.168.5.43;
                access_log /var/www/nginx/log.log;
                error_log   /var/www/nginx/logError.log;
                location / {
                        proxy_pass http://uplog;
                }
        }
}


注意:upstream 对应的uplog 一定要和 server中localtion 中的 /proxy_pass http://uplog对应。
然后其他三台tomcat的配置如下:


<?xml version='1.0' encoding='utf-8'?>
<Server port="2002" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.core.JasperListener" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"                                                                                                                                                              />
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListen                                                                                                                                                             er" />
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  <Service name="Catalina">
        <Connector port="<span style="color:#ff0000;">3002</span>" protocol="HTTP/1.1"
                        acceptCount="5000"
                        connectionTimeout="15000"
                        maxHttpHeaderSize="8192"
                        useBodyEncodingForURI="true"
                        enableLookups="false"
                        maxThreads="5000"
                        maxKeepAliveRequests="100"
                        keepAliveTimeout="10000"
                redirectPort="4002" URIEncoding="UTF-8"/>
<!--
        <Connector executor="tomcatThreadPool"
                        port="8080"
                        protocol="org.apache.coyote.http11.Http11AprProtocol"
                        acceptCount="5000"
                        connectionTimeout="15000"
                        maxHttpHeaderSize="8192"
                        useBodyEncodingForURI="true"
                        enableLookups="false"
                        redirectPort="8443"
                        URIEncoding="UTF-8"
                        maxThreads="5000"
                        maxKeepAliveRequests="100"
                        keepAliveTimeout="10000"
                                />
-->
    <Engine name="Catalina" defaultHost="<span style="color:#ff0000;">192.168.5.112</span>">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
        <Host name="<span style="color:#ff0000;">192.168.5.112</span>"  appBase="webapps" unpackWARs="false" autoDe                                                                                                                                                             ploy="false">
                <Context path="/data" docBase="/var/www/appLog" reloadable="fals                                                                                                                                                             e" sessionCookiePath="/" />
        </Host>
    </Engine>
  </Service>
</Server>

tomcat配置对应的 defaultHost 和resourceName和Ngix对应的配置一定要写IP,如果 写hostname就无法接收到。


还有就是tomcat服务器上的防火墙一定要记得关闭,否则是无法做到分发的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值