AJP를 통한 로드벨런싱 (loadballance) 아파치

Tomcat+Apache를 통한 서비스 설정이다. Tomcat의 부하증가나 이중화 시 사용할 수 있다.

기본 적인 설정은 http://repository.egloos.com/4891216 내용과 동일하니까. 참고하고
설정 환경을 다음과 같이 바꾸자

[ ~/conf/httpd.conf ]

Include conf/mod_jk.conf

[ ~/conf/mod_jk.conf ]

LoadModule jk_module modules/mod_jk.so
JkWorkersFile "conf/workers.properties"
JkLogFile logs/mod_jk.log
JkLogLevel error
# 아래 설정은 상대경로 하위 모든것을 Tomcat으로 처리한다는 의미다. 특정 디렉토리를 지정할 수 있다.

JKMount  /- loadballance    # 옆 /-는 /별표(모든것)이다. 이글루스가 별표 처리를 잘못하고있다. 헐~~

[ ~/conf/workers.properties ]

worker.list=tomcat1, tomcat2, loadballance

worker.tomcat1.type=ajp13
worker.tomcat1.host=localhost
worker.tomcat1.port=9006
worker.tomcat1.lbfactor=100  => 반드시 '0'보다 커야한다. 이것은 job에 대한 비율이다. 

worker.tomcat1.socket_timeout=1800  # 30분
worker.tomcat1.recycle_timeout=1800
worker.tomcat1.cache_timeout=1800
worker.tomcat1.socket_keepalive=1    # 사용 : 1, 미사용 0
worker.tomcat1.connection_pool_timeout=600

worker.tomcat2.type=ajp13
worker.tomcat2.host=localhost
worker.tomcat2.port=9007
worker.tomcat2.lbfactor=100

worker.tomcat2.socket_timeout=1800  # 30분
worker.tomcat2.recycle_timeout=1800
worker.tomcat2.cache_timeout=1800
worker.tomcat2.socket_keepalive=1    # 사용 : 1, 미사용 0
worker.tomcat2.connection_pool_timeout=600

# tomcat timeout에 따른 중복 발생 방지
worker.loadballance.retries=0
worker.tomcat1.retries=0
worker.tomcat2.retries=0
worker.tomcat1.socket_timeout=60
worker.tomcat2.socket_timeout=60

worker.loadballance.type=lb
# sticky방식은 일정 시간(session time)동안 한 WAS에 지속적으로 접속하는 설정임
# 사용 : true or 1, 미사용 : false or 0
worker.loadballance.sticky_session=1
worker.loadballance.balanced_workers=tomcat1,tomcat2

[ tomcat1 - server.xml 설정 ]

    <Connector port="9006" maxHttpHeaderSize="8192" maxKeepAliveRequests="-1"
               maxThreads="1000" minSpareThreads="500" maxSpareThreads="500"
               enableLookups="false" redirectPort="8443" acceptCount="500"
               compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata"
               compressableMimeType="text/html,text/xml,text/plain,text/javascript,text/css"
               connectionTimeout="600000" disableUploadTimeout="true" Server=" " protocol="AJP/1.3" />

    <Engine jvmRoute="tomcat1" name="Catalina" defaultHost="localhost">

[ tomcat2 - server.xml 설정 ]

    <Connector port="9007" maxHttpHeaderSize="8192" maxKeepAliveRequests="-1"
               maxThreads="1000" minSpareThreads="500" maxSpareThreads="500"
               enableLookups="false" redirectPort="8443" acceptCount="500"
               compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata"
               compressableMimeType="text/html,text/xml,text/plain,text/javascript,text/css"
               connectionTimeout="600000" disableUploadTimeout="true" Server=" " protocol="AJP/1.3" />

    <Engine jvmRoute="tomcat2" name="Catalina" defaultHost="localhost">

* 위의 server.xml에서 Server= " "은 보안을 위하여 아파치 정보 유출을 막는다.
* Apache 프로세스보다 Tomcat프로세스를 많이 잡을 것

[ mod_jk 설치 ]

# cd tomcat-connectors-1.2.32
# cd native
# ./configure --with-apxs=/usr/local/apache_lb/bin/apxs
# make


덧글

댓글 입력 영역