2012-03-10 4 views
8

Tomcat과 함께 사용할 좋은로드 밸런서를 찾고 있습니다. 우리의 응용 프로그램은 세션 컨텍스트에 아무 것도 저장하지 않으므로 동일한 사용자에 대해 동일한 서버로 리디렉션하지 않아도됩니다. 나는 단순히 라운드 로빈 스타일의 요청을 대기열에 넣거나 각 서버의 개별 부하를 기반으로 할 수있는 무언가를 좋아할 것입니다. 또한 부하 분산 장치를 다시 시작하지 않고도 요청을 처리 할 수있는 응용 프로그램 서버에 응용 프로그램 서버를 추가 할 수 있기를 바랍니다. 그게 중요하다면 우리는 리눅스에서 응용 프로그램을 실행하고 있습니다.Tomcat로드 밸런서 솔루션

+0

어떻게 응용 프로그램의 큰 여기 말을하는거야?단순히로드를 처리하는 서버가 두 개인 경우 웹 서버 수준에서 수행 할 수 있습니다. 5 대 이상의 서버를보고 있다면 상용 솔루션을 살펴 보는 것이 좋습니다. – Sean

+0

아마 5 대 이상의 서버. –

답변

6

당신이 필요로하는 모든 리눅스 사용 아파치 WEBSERVER2, 유행의 JK와 톰캣 클러스터링에 소프트웨어로드 밸런서 경우 :

1) 아파치와 modjk 설치 :

sudo apt-get install apache2 libapache2-mod-jk 
sudo a2enmod jk 
를 웹 서버에서

2) apache2에서 사용할 수있는 "workers.properties"파일을 만듭니다. 어떤 경우에는/etc/apache2 디렉토리에 자동으로 만들어집니다. 이 파일이 자동으로 생성되지 않은 경우

worker.list=balancer,lbstats 

#node1 
worker.node1.type=ajp13 
worker.node1.host=NODE-IP 
worker.node1.port=NODE-AJP-PORT 
worker.node1.lbfactor=10 

#more nodes here ... (change name in between) 

#lb config 
worker.balancer.type=lb 
#turn off sticky session 
worker.balancer.sticky_session=0 

#add all defined node names to this list: 
worker.balancer.balance_workers=node1 

#lb status information (optional) 
worker.lbstats.type=status 

3) 당신의 아파치 설정 파일에 유행의 JK 섹션을 만들기 :, 즉 당신의 톰캣 서버의 파운드 설정, 노드 이름, IPS 및 포트를 들고있다.

JkWorkersFile /etc/apache2/workers.properties 
JkLogFile  /var/log/apache2/mod_jk.log 
JkShmFile  /tmp/jk-runtime-status 
JkLogLevel  info 

4) 부하 분산 장치에 응용 프로그램 (아파치 설정 파일) 마운트 : 다음 더 나은 방법 (타르 패키지를 사용하여 Tomcat을 설치

5) : 톰캣 서버에서

JkMount /MyApp  balancer 
JkMount /MyApp/*  balancer 

JkMount /modjkstatus lbstats 

을 apt verison). server.xml을 변경하십시오.

  1. http 커넥터를 비활성화하십시오.
  2. AJP/1.3 커넥터를 활성화하고이 노드에 대해 workers.properties에 정의한 포트를 설정하십시오.)

    <Engine jvmRoute="node1" ... 
    
  3. 간단한 구성

    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" /> 
    

6의 "클러스터"요소를 추가하여 응용 프로그램을 배포 :

  • 은 "엔진"요소에 대한 권리 노드 이름 jvmRoute를 추가 모든 tomcats에 web.xml에 배포 가능한 요소를 추가하십시오.

    <distributable/> 
    

    7) 웹 서버가 tomcat 서버의 ajp 포트에 액세스 할 수 있고 다른 사람이 할 수 없는지 확인하십시오.

    8) 웹 서버와 톰캣을 하나씩 시작하고 로그 (/var/log/apache2/mod_jk.log)도 확인하십시오.

    9) 귀하의 응용 프로그램에 액세스합니다 http://mywebserver.com/MyApp

    10) 확인 (및 액세스)에 파운드의 상태 페이지를 거부 http://mywebserver.com/modjkstatus

  • +0

    modjk와 modcluster의 차이점은 무엇입니까? – user12458

    +0

    mod_cluster는 다른 [JBoss의로드 균형 조정 솔루션] (http://mod-cluster.jboss.org/)입니다. – Stefan