>백엔드 개발 >PHP 튜토리얼 >Tomcat Nginx 클러스터 및 로드 밸런싱

Tomcat Nginx 클러스터 및 로드 밸런싱

WBOY
WBOY원래의
2016-07-29 09:16:011095검색

재인쇄할 출처를 표시해 주세요: http://blog.csdn.net/l1028386804/article/details/48272857

오늘은 Tomcat의 클러스터링 및 로드 밸런싱 구현을 위해 여러분과 협력하겠습니다. 및 nginx

1. Tomcat 클러스터 구성 포트 계획

참고: 이 포트는 동일한 시스템에서 2개의 Tomcat을 시작하는 데 사용됩니다. 반복됩니다. 하나의 머신만 배포하는 경우 1개의 Tomcat의 포트는 동일할 수 있습니다.

8081

序号

SHUTDOWN

AJP

http

集群Receiver

1

8005

8009

8080

5001

2

8015

8019

8081

5002
일련번호

종료

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

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

클러스터 수신기

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. 클러스터 구성

<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>
은 server.xml에서 수정됩니다. 은 다음을 수행합니다. 다음으로 수정:

jvmRoute="jvm1"은 Tomcat마다 이름이 다릅니다.

세션 복제 및 공유를 구현하려면 노드에 다음 콘텐츠를 추가하세요.
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" 
동일한 머신: 수신 노드 포트:

port=

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

2. tomcat의 web.xml 수정
<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" />
세션 동기 복제 설정을 실제로 구현하려면 tomcat의 web.xml 구성 매개변수를 수정해야 합니다.

<Connector port="8080" protocol="HTTP/1.1"
               c
               redirectPort="8443" />
2. 최적화:
<Connector port="8080"  protocol="HTTP/1.1"
               maxThreads="500"
               acceptCount="50" c
               enableLookups="false" redirectPort="8443" />
1. 메모리 최적화 구성
<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. 기타 최적화된 구성:
  • 1) 다음 구성1
을 추가하고


:

2) 또는

로 변경


    참고: 둘 사이의 주요 차이점은 실행기가 활성화되고 연결될 때 maxThreads="500"이 무시된다는 것입니다.
  • 3) 여러 속성 설명:


maxThreads

  • Tomcat은 스레드를 사용하여 수신된 각 요청을 처리합니다. 이 값은 Tomcat이 생성할 수 있는 최대 스레드 수를 나타냅니다. 기본값은 200입니다. 이는 기계의 기간 성능 및 메모리 크기에 따라 조정될 수 있으며 일반적으로 400-500 사이입니다. 최대치는 800정도 될 수 있습니다.


acceptCount

  • 요청 처리에 사용 가능한 스레드가 모두 사용될 때 이 요청 수를 초과하여 처리 대기열에 배치될 수 있는 요청 수를 지정합니다. 처리되지 않습니다. 기본값은 10입니다.


minSpareThreads

  • Tomcat 초기화 시 생성되는 스레드 수입니다. 기본값은 4입니다.


connectionTimeout

네트워크 연결 시간 초과, 기본값 20000, 단위: 밀리초. 0으로 설정하면 시간 초과가 발생하지 않으며 이는 위험한 설정입니다. 일반적으로 30000밀리초로 설정할 수 있습니다. (백엔드 시스템과의 인터페이스 시간이 길어서 60000으로 설정되어 있습니다.)


  upstream  tomcat {
        server 192.168.100.50:8080  weight=1;
        server 192.168.100.50:8081  weight=1;
  }
enableLookups
location / {
        root   html;
        index  index.html index.htm;
    }

도메인 역확인 여부 이름, 기본값은 true입니다. 처리 능력을 향상시키려면 false로 설정해야 합니다.
location  / {
   #root   html;
   #index  index.html index.htm;
           proxy_pass  http://tomcat6;
}

Executor 노드

는 Tomcat 구성 요소 간에 공유되는 스레드 풀을 나타냅니다.

maxIdleTime유휴 스레드가 종료되기 전까지의 시간(밀리초)입니다. 기본값은 60000입니다. 3. Nginx + Tomcat 로드 밸런싱 구성 /usr/local/nginx/conf/nginx.conf 구성 파일에 다음 코드를 추가합니다 Tomcat 이름은 임의적이므로 IP 주소와 포트에 주의하세요. 서버 노드에서 위치를 수정합니다. 은 입니다. http://tomcat의 tomcat 이름은 위 구성과 동일합니다. 저작권 안내: 이 글은 해당 블로거의 원본 글이므로 블로거의 허락 없이 복제할 수 없습니다. 위 내용은 관련 내용을 포함하여 Tomcat Nginx 클러스터와 로드 밸런싱을 소개하고 있으니 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.