Heim >Backend-Entwicklung >PHP-Tutorial >Tomcat Nginx-Cluster und Lastausgleich

Tomcat Nginx-Cluster und Lastausgleich

WBOY
WBOYOriginal
2016-07-29 09:16:011088Durchsuche

Bitte geben Sie die Quelle für den Nachdruck an: http://blog.csdn.net/l1028386804/article/details/48272857

Heute werden wir mit Ihnen zusammenarbeiten, um Clustering und Lastausgleich von Tomcat zu implementieren und nginx

1. Tomcat-Cluster-Konfigurationsport-Planung

Hinweis: Dieser Port wird zum Starten von 2 Tomcats auf demselben Computer verwendet. Sie müssen den Port so ändern, dass dies nicht der Fall ist Wird wiederholt, wenn nur eine Maschine bereitgestellt wird. Die Ports von 1 Tomcat können gleich sein.

8081

序号

SHUTDOWN

AJP

http

集群Receiver

1

8005

8009

8080

5001

2

8015

8019

8081

5002
Seriennummer

HERUNTERFAHREN

AJP
<Engine name="Catalina" defaultHost="localhost">

http
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">  

Cluster Receiver

1

8005

<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>    
8009

8080 5001
2 8015


8019
5002

1 Cluster-Konfiguration

<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>
wird in server.xml geändert: wird: Ändern zu:

wobei jvmRoute="jvm1" in verschiedenen Tomcats unterschiedliche Namen hat.

Fügen Sie den folgenden Inhalt zum Knoten hinzu, um die Sitzungsreplikation und -freigabe zu implementieren:
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"  
JAVA_OPTS = " -server -Xms512M -Xmx2048M -XX:MaxNewSize=256M -XX:PermSize=256M 
-XX:MaxPermSize=512M -XX:+UseConcMarkSweepGC  -XX:+PrintGCDetails  
-XX:+PrintGCTimeStamps -Djava.awt.headless=true" 
Beachten Sie, dass er sich auf der befindet Gleiche Maschine: Empfängerknoten-Port:

port=

"5001"
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="500" minSpareThreads="50" />
ist unterschiedlich.
<Connector port="8080" protocol="HTTP/1.1" c
               redirectPort="8443" />

2. Ändern Sie die Datei web.xml von Tomcat
<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" />
Sie müssen die Konfigurationsparameter web.xml von Tomcat ändern, um die Einstellung der sitzungssynchronen Replikation wirklich zu realisieren

<Connector port="8080" protocol="HTTP/1.1"
               c
               redirectPort="8443" />
2. Optimierung:
<Connector port="8080"  protocol="HTTP/1.1"
               maxThreads="500"
               acceptCount="50" c
               enableLookups="false" redirectPort="8443" />
1) Speicheroptimierungskonfiguration
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
1) Windows:
<Connector port="8009"
         maxThreads="500"  c
         enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

2 ) Linux

2. Andere optimierte Konfigurationen:
  • 1) Fügen Sie die folgende Konfiguration 1 hinzu
und ändern Sie


in

    :
  • ist


2) oder

    ändert
  • in

ändert

in
  • Hinweis: Der Hauptunterschied zwischen den beiden ist: maxThreads="500" wird ignoriert, wenn der Executor aktiviert und zugeordnet ist.

3) Mehrere Attributerklärungen:

    maxThreads
Tomcat verwendet Threads, um jede empfangene Anfrage zu verarbeiten. Dieser Wert stellt die maximale Anzahl von Threads dar, die Tomcat erstellen kann. Der Standardwert ist 200. Sie kann je nach Periodenleistung und Speichergröße der Maschine angepasst werden, im Allgemeinen zwischen 400 und 500. Das Maximum kann bei etwa 800 liegen.


    acceptCount
Gibt die Anzahl der Anforderungen an, die in die Verarbeitungswarteschlange gestellt werden können, wenn alle verfügbaren Threads zur Verarbeitung von Anforderungen verwendet werden und diese Anzahl von Anforderungen überschreitet werden nicht verarbeitet. Der Standardwert ist 10.


    minSpareThreads
Die Anzahl der Threads, die bei der Initialisierung von Tomcat erstellt werden. Der Standardwert ist 4.


connectionTimeout


Netzwerkverbindungs-Timeout, Standardwert 20000, Einheit: Millisekunden. Wenn Sie den Wert auf 0 setzen, kommt es nie zu einer Zeitüberschreitung, was eine gefährliche Einstellung darstellt. Normalerweise kann es auf 30000 Millisekunden eingestellt werden. (Aufgrund der langen Zeitüberschreitung der Schnittstelle mit dem Backend-System ist dieses System auf 60000 eingestellt)

  upstream  tomcat {
        server 192.168.100.50:8080  weight=1;
        server 192.168.100.50:8081  weight=1;
  }

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

Gibt an, ob die Domain umgekehrt überprüft werden soll Name, der Standardwert ist true. Um die Verarbeitungsfähigkeiten zu verbessern, sollte es auf „false“ gesetzt werden.

Executor-Knoten

stellt einen Thread-Pool dar, der von Tomcat-Komponenten gemeinsam genutzt wird.

maxIdleTimeDie Anzahl der Millisekunden, bevor ein inaktiver Thread heruntergefahren wird. Der Standardwert ist 60000. 3. Nginx + Tomcat-Lastausgleichskonfiguration Fügen Sie den folgenden Code in die Konfigurationsdatei /usr/local/nginx/conf/nginx.conf Der Tomcat-Name ist willkürlich, achten Sie auf die IP-Adresse und den Port. Ändern Sie den Speicherort im Serverknoten: ist . Beachten Sie, dass der Tomcat-Name in http://tomcat derselbe ist wie in der obigen Konfiguration. Urheberrechtserklärung: Dieser Artikel ist ein Originalartikel des Bloggers und darf nicht ohne die Erlaubnis des Bloggers reproduziert werden. Das Obige stellt den Tomcat Nginx-Cluster und den Lastausgleich vor, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn