ホームページ >バックエンド開発 >PHPチュートリアル >Tomcat+Nginx クラスターと負荷分散

Tomcat+Nginx クラスターと負荷分散

WBOY
WBOYオリジナル
2016-07-29 09:16:011088ブラウズ

転載する場合は出典を明記してください: http://blog.csdn.net/l1028386804/article/details/48272857

今日は、Tomcat と nginx のクラスタリングと負荷分散を実装するために協力します

1. Tomcatクラスター構成 ポートの計画

注: このポートは、同じマシン上で 2 つの Tomcat を起動するために使用されます。マシンが 1 つの Tomcat のみをデプロイする場合は、そのポートを同じにする必要があります。

シリアル番号

シャットダウン

AJP

http

クラスターレシーバー

1

8005

8009

8080

5001

2

8015

8019

8081

5002

1. Tomcat クラスター構成

server.xml を変更します。

は:
<Engine name="Catalina" defaultHost="localhost">
は次のように変更されます:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">  

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>    

同じマシン上にあることに注意してください: 受信ノード ポート: port="5001" そうでなければ同じです。

2. tomcat の web.xml を変更する

セッション同期レプリケーションの設定を実際に実現するには、tomcat の web.xml 構成パラメーターを変更する必要があります

<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>
2. メモリ最適化構成。

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" />

2) または

変更する
<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" />
変更されます
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

<Connector port="8009"
         maxThreads="500"  c
         enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
注: 2 つの主な違いは次のとおりです: 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 です。
3. Nginx + Tomcat ロードバランシング設定


設定ファイル /usr/local/nginx/conf/nginx.conf ファイルに次のコードを追加します

  upstream  tomcat {
        server 192.168.100.50:8080  weight=1;
        server 192.168.100.50:8081  weight=1;
  }
Tomcat 名は任意です。IP アドレスとアドレスに注意してください。ポート。 サーバーノードの場所を変更します。
location / {
        root   html;
        index  index.html index.htm;
    }

location  / {
   #root   html;
   #index  index.html index.htm;
           proxy_pass  http://tomcat6;
}

http://tomcat の Tomcat 名は上記の設定と同じであることに注意してください。

著作権声明: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。

上記では、Tomcat+Nginx クラスターとロード バランシングを、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。