5 08 2016
Apache 2.4_64 + Tomcat 8.5.4 Load Balancing in Windows 2012
1.아파치를 다운받는다.
http://httpd.apache.org/download.cgi
아래는 설치 설명 URL
http://httpd.apache.org/docs/current/platform/windows.html#down
64bit의 경우는
https://www.apachelounge.com/download/
에서 다운받는다.
다운받은 폴더에 conf/httpd.conf 의 ServerRoot등의 경로가 c:\밑으로 되어있는데 현재 Apache서버의 경로로 바꿔주면 잘 실행됩니다.
2.mod_jk모듈을 다운받는다.(tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x)
mod_jk.so 를 다운받은후 apache/moules/밑으로 복사후
httpd.conf에서
LoadModule jk_module modules/mod_jk.so
추가한다.
하단에
# Mod_jk modules
Include conf/mod_jk.conf
추가하고
3. 설정파일 : apache/conf/mod_jk.conf
1 2 3 4 5 6 7 8 |
JkWorkersFile "conf/workers.properties" JkLogFile "D:\server\logs\mod_jk.log" JkLogLevel info JkLogStampFormat "[%a %b %d %H:%M:%S %Y]" JkRequestLogFormat "%w %V %T" JkMount /* loadbalancer |
4.설정파일: apache/conf/workers.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
worker.list=worker1,worker2,loadbalancer worker.worker1.port=8009 worker.worker1.host=localhost worker.worker1.type=ajp13 worker.worker1.lbfactor=100 worker.worker2.port=18009 worker.worker2.host=localhost worker.worker2.type=ajp13 worker.worker2.lbfactor=100 worker.loadbalancer.type=lb worker.loadbalancer.balanced_workers=worker1, worker2 worker.loadbalancer.sticky_session=1 |
5. 한서버에 두개의 tomcat를 loadbalancing했을 경우 예입니다.
tomcat1 설정:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
<Engine jvmRoute="worker1" name="Catalina" defaultHost="localhost"> <!--For clustering, please take a look at documentation at: /docs/cluster-howto.html (simple how to) /docs/config/cluster.html (reference documentation) --> <!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> --> <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"> <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/> <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" port="4000" 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.MessageDispatchInterceptor"/> </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="D:\server\web\tmp\war-temp\" deployDir="D:\server\web\tmp\war-deploy\" watchDir="D:\server\web\tmp\war-listen\" watchEnabled="false"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster> <!-- Use the LockOutRealm to prevent attempts to guess user passwords via a brute-force attack --> <Realm className="org.apache.catalina.realm.LockOutRealm"> <!-- This Realm uses the UserDatabase configured in the global JNDI resources under the key "UserDatabase". Any edits that are performed against this UserDatabase are immediately available for use by the Realm. --> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> |
tomca2설정:
1 |
포트 tomcat1의 port="4000"를 4001로만 바꿨습니다. |
이렇게 하면 session clustering이 아주 잘되었습니다.
6.Apache Httpd 서비스등록(cmd에서 등록)
(1)서비스에 등록할 경우
httpd -k install 하면 된다.
(2)서비스를 제거할경우는
httpd -k uninstall
7.Tomcat 서비스등록(cmd에서 등록)
tomcat1의 경우 해당 경로 bin 경로로 가
service.bat install apache-tomcat-8-1
tomcat2의 경우 해당 경로 bin 경로로 가
service.bat install apache-tomcat-8-2
서비스에 잘올라옵니다.
끝으로 참고
세션클러스터링을 테스트 하시려면 먼저 tomcat1만 시작하고
웹페이지에서 로그인하고 tomcat2를 시작합니다.
그리고 tomcat1을 종료하고 다시 웹페이지에서 아무곳이나 가보면 세션이 살아 있으면 클러스터링이 문제없이 된다고 보시면 됩니다.
참고 사이트
https://kkongchui.wordpress.com/2015/11/26/windows%EC%97%90%EC%84%9C-tomcat-load-balancing%EA%B3%BC-quartz-clustering%EC%84%A4%EC%A0%95-%ED%95%98%EA%B8%B0/
http://wp.smartdisk.org/?p=2002&lang=ko
JDK1.5 + ireport 3.7.6 한글처리 Port 확인 및 처리(in Window)