首頁 >後端開發 >php教程 >Tomcat+Nginx叢集與負載平衡

Tomcat+Nginx叢集與負載平衡

WBOY
WBOY原創
2016-07-29 09:16:011084瀏覽

轉載請註明出處:http://blog.csdn.net/l1028386804/article/details/48272857

今天就和大家一起來實現Tomcat和nginx的集群與均衡負載

今天就和大家一起來實現Tomcat和nginx的集群與均衡負載

連接埠規劃

註:此連接埠是在同一台機器上啟動2個tomcat,需要修改一下連接埠不重複,如果一台機器只部署1個tomcat其連接埠可以一樣。 1800528015其中 jvmRoute="jvm1" 在不同的tomcat中名稱不一樣。
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
         channelSendOpti

  <Manager className="org.apache.catalina.ha.session.DeltaManager"
           expireSessi
           notifyListeners/>

  <Channel className="org.apache.catalina.tribes.group.GroupChannel">
    <Membership className="org.apache.catalina.tribes.membership.McastService"
                address="228.0.0.4"
                port="45564"
                frequency="500"
                dropTime="3000"/>
    <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
              address="auto" <!--可写你自己的ip地址-->
              port="5001"
              autoBind="100"
              selectorTimeout="5000"
              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=""/>
  <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

  <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
            tempDir="/tmp/war-temp/"
            deployDir="/tmp/war-deploy/"
            watchDir="/tmp/war-listen/"
            watchEnabled="false"/>

  <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
  <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>    
注意在同一台機器上:Receiver 節點連接埠:port="5001"

序號

SHUTDOWN

AJP

8009

8080

5001

2

1、Tomcat 叢集設定
在server.xml中修改:

將:

<Engine name="Catalina" defaultHost="localhost">
修改為:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">  

節點中加入以下內容實作Session複製共用:



2、修改tomcat的web.xml

需要修改tomcat的web.xml設定參數才能真正實現session同步複製的設定

<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<distributable /> (在倒数第二行增加这个代码才能实现session同步复制功能)
</web-app>

、最佳化:優化
1)Windows:
set JAVA_OPTS = " -server -Xms512M -Xmx2048M -XX:MaxNewSize=256M -XX:PermSize=256M 
-XX:MaxPermSize=512M -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails  
-XX:+PrintGCTimeStamps -Djava.awt.headless=true"  
2)Linux
JAVA_OPTS = " -server -Xms512M -Xmx2048M -XX:MaxNewSize=256M -XX:PermSize=256M 
-XX:MaxPermSize=512M -XX:+UseConcMarkSweepGC  -XX:+PrintGCDetails  
-XX:+PrintGCTimeStamps -Djava.awt.headless=true" 

2、其他最佳化配置:

1)加入如下配置1
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="500" minSpareThreads="50" />
修改
<Connector port="8080" protocol="HTTP/1.1" c
               redirectPort="8443" />
為修改
<Connector port="8080"  executor="tomcatThreadPool" protocol="HTTP/1.1"
               c
               enableLookups="false" redirectPort="8443" />

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

<Connector port="8009" executor="tomcatThreadPool"
               c
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
修改
<Connector port="8080" protocol="HTTP/1.1"
               c
               redirectPort="8443" />
<Connector port="8080"  protocol="HTTP/1.1"
               maxThreads="500"
               acceptCount="50" c
               enableLookups="false" redirectPort="8443" />

註:兩者的主要區別是:executor被起用且關聯時maxThreads="500" 被忽略。


3)幾個屬性解釋:

maxThreads

Tomcat使用執行緒來處理接收的每個請求。這個值表示Tomcat可建立的最大的線程數。預設值200。 可依機器的時期效能和記憶體大小調整,一般可以在400-500。最大可以在800左右。
acceptCount


指定當所有可以使用的處理請求的執行緒數都被使用時,可以放到處理佇列中的請求數,超過這個數的請求將不予處理。預設值10。
minSpareThreads


Tomcat初始化時所建立的執行緒數。預設值4。
connnectionTimeout


網路連線逾時,預設值20000,單位:毫秒。設定為0表示永不逾時,這樣設定有隱患的。通常可設定為30000毫秒。 (本系統由於與後台系統介面逾時時間較長,使用設定為60000)
enableLookups


是否反查域名,預設值為true。為了提高處理能力,應設定為false
Executor節點


表示Tomcat元件之間共享的執行緒池。
maxIdleTime


空閒線程被關閉之前的毫秒數。預設值是60000。
  • 三、Nginx + Tomcat負載平衡配置

在設定檔/usr/local/nginx/conf/nginx.conf檔中新增以下程式碼

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
其中tomcat名稱隨意,注意IP位址和連接埠。

修改Server節點中location:

<Connector port="8009"
         maxThreads="500"  c
         enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
  upstream  tomcat {
        server 192.168.100.50:8080  weight=1;
        server 192.168.100.50:8081  weight=1;
  }

注意http://tomcat中tomcat名稱與上面的配置一樣。


版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。

以上就介紹了Tomcat+Nginx叢集與負載平衡,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn