SlideShare a Scribd company logo
© 2012 eTRIBE Inc. All rights reserved. 1
Apache-Tomcat
로드밸런싱 설정
© 2012 eTRIBE Inc. All rights reserved. 2
Prologe
1. 두대 이상의 운영서버 운영시 Apache 웹서버와 Tomcat Was 서버 간의 로드밸런싱 설정 방법
2. Java/JSP 웹서비스시 안정적인 서비스를 위해 로드밸런싱 필요
- 수정사항 발생 등의 이유로 Was 재기동 필요시 운영서버 중단 없이 사용함이 목적
3. 두산 운영서버 설정을 토대로 작성
4. 아파치 웹서버 및 톰캣 기본 설정 제외 로드밸런싱 위주로 작성
© 2012 eTRIBE Inc. All rights reserved. 3
라운드 로빈 방식의 로드밸런싱 설정
톰캣에서 제공하는 로드밸런싱은 정확히 톰캣 자체에서 제공하는 것이 아니라 아파치 웹서버
와 연동되는 커넥터에 의해서 제공된다(로드밸런싱은 JK, JK2 커넥터에서만 제공된다). 현재
는 라운드 로빈(Round Robin) 방식만이 제공되며 로드밸런싱에 대한 설정은
workers.properties 파일에서 정의하게 된다.
예) workers.properties
worker.list=doosanheavyv2, doosanheavyv21, doosanheavyv22
worker.doosanheavyv2.type=lb
worker.doosanheavyv2.balance_workers=doosanheavyv21, doosanheavyv22
worker.doosanheavyv2.sticky_session=false
worker.doosanheavyv21.port=8315
worker.doosanheavyv21.host=was1-2.doosan.com
worker.doosanheavyv21.type=ajp13
worker.doosanheavyv21.socket_timeout=150
worker.doosanheavyv21.fail_on_status=400,500,503
worker.doosanheavyv22.port=8315
worker.doosanheavyv22.host=was2-2.doosan.com
worker.doosanheavyv22.type=ajp13
worker.doosanheavyv22.socket_timeout=150
worker.doosanheavyv22.fail_on_status=400,500,503
© 2012 eTRIBE Inc. All rights reserved. 4
라운드 로빈 방식의 로드밸런싱 설정
worker라는 개념은 톰캣의 프로세스로 보면 된다. 즉 worker를 설정하는 구성 요소는 JK 커넥
터를 연결하는 방식(JK는 ajp13을 이용한다), 톰캣이 실행되어 있는 IP 혹은 도메인, ajp13 서
비스 포트, 그리고 작업 할당량이다. 여기서 주의 깊게 볼 것이 작업 할당량인데 로드밸런싱
시에 lbfactor라는 작업량의 비율을 보고 라운드 로빈 방식의 서비스를 제공하게 된다.
그럼 이제 남은 작업은 2개의 톰캣 프로세스를 실행시키는 것이다. 톰캣 프로세스를 여러 개
띄우는 방법은 2가지가 있다.
하나의 Was 서버의 경우는 아래와 같다.
톰캣을 2개 설치해서 기동시킨다. 이때 포트 충돌을 피하기 위해 서버 포트, AJP13과 HTTP
1.1 커넥터 포트 2개를 충돌되지 않게 재정의 한다.
하나의 톰캣에 2개의 서비스를 정의하고 톰캣을 기동시킨다. 이때 AJP13과 HTTP1.1 커텍터
포트 2개를 충돌되지 않게 재정의 한다.
먼저 2개의 바이너리를 설치했다고 가정하면 각각의 톰캣은 다음과 같은 형태의 server.xml
파일로 적용해 준다
하지만 두산의 경우 WAS 서버가 두개 이므로(서로 다른 하드웨어에 존재한다) jvmRoute명만
다르게 하고 포트명은 동일해도 상관이 없다.
© 2012 eTRIBE Inc. All rights reserved. 5
라운드 로빈 방식의 로드밸런싱 설정
예) Was1 : server.xml
<?xml version='1.0' encoding='utf-8'?>
<Server port="8317" shutdown="SHUTDOWN">
.....
<Service name="Catalina">
<Connector port="8316“ protocol="HTTP/1.1“ maxThreads="300“ connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
<Connector port="8315" protocol="AJP/1.3" maxThreads="300" connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
<!-- jvmRoute 명 JK 커넥터에서 톰캣 프로세스를 구분하는데 사용.
프로세스 별로 다르게 적용해야 함 -->
<Engine name="Catalina" defaultHost="localhost" jvmRoute="doosanheavyv21">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<Host name="www.doosanheavy.com"
unpackWARs="false" autoDeploy="false"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/data01/app/was/doosanheavyv2_prod" debug="0"
reloadable="false"/>
<Alias>org-www.doosanheavy.com</Alias>
<Alias>ssl.doosanheavy.com</Alias>
</Host>
</Engine>
</Service>
</Server>
© 2012 eTRIBE Inc. All rights reserved. 6
라운드 로빈 방식의 로드밸런싱 설정
예) Was2 : server.xml
<?xml version='1.0' encoding='utf-8'?>
<Server port="8317" shutdown="SHUTDOWN">
.....
<Service name="Catalina">
<Connector port="8316“ protocol="HTTP/1.1“ maxThreads="300“ connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
<Connector port="8315" protocol="AJP/1.3" maxThreads="300" connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
<!-- jvmRoute 명 JK 커넥터에서 톰캣 프로세스를 구분하는데 사용.
프로세스 별로 다르게 적용해야 함 -->
<Engine name="Catalina" defaultHost="localhost" jvmRoute="doosanheavyv22">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<Host name="www.doosanheavy.com"
unpackWARs="false" autoDeploy="false"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/data01/app/was/doosanheavyv2_prod" debug="0"
reloadable="false"/>
<Alias>org-www.doosanheavy.com</Alias>
<Alias>ssl.doosanheavy.com</Alias>
</Host>
</Engine>
</Service>
</Server>

More Related Content

PDF
[오픈소스컨설팅]Tomcat6&7 How To
PDF
톰캣 운영 노하우
PDF
톰캣 #08-웹서버 연동
PDF
톰캣 #03-설치
PDF
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
PDF
톰캣 #11-팁
PDF
톰캣 #01-소개
PDF
JVM과 톰캣 튜닝
[오픈소스컨설팅]Tomcat6&7 How To
톰캣 운영 노하우
톰캣 #08-웹서버 연동
톰캣 #03-설치
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
톰캣 #11-팁
톰캣 #01-소개
JVM과 톰캣 튜닝

What's hot (20)

PDF
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
PDF
Tomcat 마이그레이션 도전하기 (Jins Choi)
PDF
톰캣 #10-모니터링
PDF
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
PDF
Apache Tomcat ( 아파치 톰캣 ) 설치 가이드
PDF
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
PPTX
How to build a web server on Linux.
PDF
[오픈소스컨설팅]JBoss AS7/EAP6 - JMS and JMX
PDF
[2018] MySQL 이중화 진화기
PDF
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
PDF
텔레그램을 이용한 양방향 모니터링 시스템 구축
PDF
113 deview2013 varnish-day1_track1_session3_1013
PPTX
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
PDF
[오픈소스컨설팅] RPM 만들기
PDF
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
PDF
[오픈소스컨설팅]J boss6 7_교육자료
PDF
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
PDF
[오픈소스컨설팅]초간단 Cubrid HA구성
PDF
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
PDF
[오픈소스컨설팅]Nginx jboss 연동가이드__v1
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
Tomcat 마이그레이션 도전하기 (Jins Choi)
톰캣 #10-모니터링
Spring boot 를 적용한 전사모니터링 시스템 backend 개발 사례
Apache Tomcat ( 아파치 톰캣 ) 설치 가이드
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
How to build a web server on Linux.
[오픈소스컨설팅]JBoss AS7/EAP6 - JMS and JMX
[2018] MySQL 이중화 진화기
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
텔레그램을 이용한 양방향 모니터링 시스템 구축
113 deview2013 varnish-day1_track1_session3_1013
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]J boss6 7_교육자료
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]초간단 Cubrid HA구성
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx jboss 연동가이드__v1
Ad

Viewers also liked (20)

PPTX
Node js[stg]onimusha 20140822
PPTX
Apache http component
PDF
[MySQL 스터디] 기타기능
PPTX
리눅스에 대하여
PPTX
머큐리얼저장소추가 사용자추가 권한추가
PPTX
Android version
PPTX
Objc literals
PPTX
Swing browser
PPTX
Wix - 웹 홈페이지 제작
PDF
[2014년 5월 20일] 바이오 및 의료산업동향
PPTX
구글맵 JavaScript API
PDF
제 6회 엑셈 수요 세미나 자료 연구컨텐츠팀
PPTX
XDebug For php debugging
PDF
Dockerfile과 Bash
PDF
서버 인프라를지탱하는기술(1.3,1.4)
PPTX
모바일에서 Ble pxp
PPTX
Spring Security
PDF
데이터베이스 시스템 chapter2_STG박하은
PPTX
Introduce Apache Mesos
PDF
데이터베이스 시스템 chapter1_STG박하은
Node js[stg]onimusha 20140822
Apache http component
[MySQL 스터디] 기타기능
리눅스에 대하여
머큐리얼저장소추가 사용자추가 권한추가
Android version
Objc literals
Swing browser
Wix - 웹 홈페이지 제작
[2014년 5월 20일] 바이오 및 의료산업동향
구글맵 JavaScript API
제 6회 엑셈 수요 세미나 자료 연구컨텐츠팀
XDebug For php debugging
Dockerfile과 Bash
서버 인프라를지탱하는기술(1.3,1.4)
모바일에서 Ble pxp
Spring Security
데이터베이스 시스템 chapter2_STG박하은
Introduce Apache Mesos
데이터베이스 시스템 chapter1_STG박하은
Ad

Similar to Apache tomcat 로드밸런싱 김태호-20140808 (20)

PPT
Servlet3
PPTX
Spring환경설정하기
PPT
L4교육자료
PDF
JSP 프로그래밍 #01 웹 프로그래밍
PDF
초보자를 위한 AWS EC2, RDS 설정
PDF
All about JDBC Performance Tuning_Wh apm
PDF
무정지 웹서비스
PPTX
Kafka monitoring using Prometheus and Grafana
PDF
11st Legacy Application의 Spring Cloud 기반 MicroServices로 전환 개발 사례
PDF
오라클 DB를 AWS 데이터베이스로 마이그레이션 하기 - 윤기원 :: AWS Database Modernization Day 온라인
PDF
초보자를 위한 네트워크/VLAN 기초
PDF
Tomcat monitoring using_javamelody
PDF
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
PDF
Freebsd HA with CARP
PDF
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
PDF
[OpenInfra Days Korea 2018] (Track 1) Openstack 쉽게 설치하기 - SOfTI Easy Installer
PDF
Iocp advanced
PDF
WAS의 동작과 WEB, Servlet, JSP_Wh apm
PDF
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
PPTX
Spring 웹 프로젝트 시작하기
Servlet3
Spring환경설정하기
L4교육자료
JSP 프로그래밍 #01 웹 프로그래밍
초보자를 위한 AWS EC2, RDS 설정
All about JDBC Performance Tuning_Wh apm
무정지 웹서비스
Kafka monitoring using Prometheus and Grafana
11st Legacy Application의 Spring Cloud 기반 MicroServices로 전환 개발 사례
오라클 DB를 AWS 데이터베이스로 마이그레이션 하기 - 윤기원 :: AWS Database Modernization Day 온라인
초보자를 위한 네트워크/VLAN 기초
Tomcat monitoring using_javamelody
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
Freebsd HA with CARP
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[OpenInfra Days Korea 2018] (Track 1) Openstack 쉽게 설치하기 - SOfTI Easy Installer
Iocp advanced
WAS의 동작과 WEB, Servlet, JSP_Wh apm
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
Spring 웹 프로젝트 시작하기

Apache tomcat 로드밸런싱 김태호-20140808

  • 1. © 2012 eTRIBE Inc. All rights reserved. 1 Apache-Tomcat 로드밸런싱 설정
  • 2. © 2012 eTRIBE Inc. All rights reserved. 2 Prologe 1. 두대 이상의 운영서버 운영시 Apache 웹서버와 Tomcat Was 서버 간의 로드밸런싱 설정 방법 2. Java/JSP 웹서비스시 안정적인 서비스를 위해 로드밸런싱 필요 - 수정사항 발생 등의 이유로 Was 재기동 필요시 운영서버 중단 없이 사용함이 목적 3. 두산 운영서버 설정을 토대로 작성 4. 아파치 웹서버 및 톰캣 기본 설정 제외 로드밸런싱 위주로 작성
  • 3. © 2012 eTRIBE Inc. All rights reserved. 3 라운드 로빈 방식의 로드밸런싱 설정 톰캣에서 제공하는 로드밸런싱은 정확히 톰캣 자체에서 제공하는 것이 아니라 아파치 웹서버 와 연동되는 커넥터에 의해서 제공된다(로드밸런싱은 JK, JK2 커넥터에서만 제공된다). 현재 는 라운드 로빈(Round Robin) 방식만이 제공되며 로드밸런싱에 대한 설정은 workers.properties 파일에서 정의하게 된다. 예) workers.properties worker.list=doosanheavyv2, doosanheavyv21, doosanheavyv22 worker.doosanheavyv2.type=lb worker.doosanheavyv2.balance_workers=doosanheavyv21, doosanheavyv22 worker.doosanheavyv2.sticky_session=false worker.doosanheavyv21.port=8315 worker.doosanheavyv21.host=was1-2.doosan.com worker.doosanheavyv21.type=ajp13 worker.doosanheavyv21.socket_timeout=150 worker.doosanheavyv21.fail_on_status=400,500,503 worker.doosanheavyv22.port=8315 worker.doosanheavyv22.host=was2-2.doosan.com worker.doosanheavyv22.type=ajp13 worker.doosanheavyv22.socket_timeout=150 worker.doosanheavyv22.fail_on_status=400,500,503
  • 4. © 2012 eTRIBE Inc. All rights reserved. 4 라운드 로빈 방식의 로드밸런싱 설정 worker라는 개념은 톰캣의 프로세스로 보면 된다. 즉 worker를 설정하는 구성 요소는 JK 커넥 터를 연결하는 방식(JK는 ajp13을 이용한다), 톰캣이 실행되어 있는 IP 혹은 도메인, ajp13 서 비스 포트, 그리고 작업 할당량이다. 여기서 주의 깊게 볼 것이 작업 할당량인데 로드밸런싱 시에 lbfactor라는 작업량의 비율을 보고 라운드 로빈 방식의 서비스를 제공하게 된다. 그럼 이제 남은 작업은 2개의 톰캣 프로세스를 실행시키는 것이다. 톰캣 프로세스를 여러 개 띄우는 방법은 2가지가 있다. 하나의 Was 서버의 경우는 아래와 같다. 톰캣을 2개 설치해서 기동시킨다. 이때 포트 충돌을 피하기 위해 서버 포트, AJP13과 HTTP 1.1 커넥터 포트 2개를 충돌되지 않게 재정의 한다. 하나의 톰캣에 2개의 서비스를 정의하고 톰캣을 기동시킨다. 이때 AJP13과 HTTP1.1 커텍터 포트 2개를 충돌되지 않게 재정의 한다. 먼저 2개의 바이너리를 설치했다고 가정하면 각각의 톰캣은 다음과 같은 형태의 server.xml 파일로 적용해 준다 하지만 두산의 경우 WAS 서버가 두개 이므로(서로 다른 하드웨어에 존재한다) jvmRoute명만 다르게 하고 포트명은 동일해도 상관이 없다.
  • 5. © 2012 eTRIBE Inc. All rights reserved. 5 라운드 로빈 방식의 로드밸런싱 설정 예) Was1 : server.xml <?xml version='1.0' encoding='utf-8'?> <Server port="8317" shutdown="SHUTDOWN"> ..... <Service name="Catalina"> <Connector port="8316“ protocol="HTTP/1.1“ maxThreads="300“ connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> <Connector port="8315" protocol="AJP/1.3" maxThreads="300" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> <!-- jvmRoute 명 JK 커넥터에서 톰캣 프로세스를 구분하는데 사용. 프로세스 별로 다르게 적용해야 함 --> <Engine name="Catalina" defaultHost="localhost" jvmRoute="doosanheavyv21"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> <Host name="www.doosanheavy.com" unpackWARs="false" autoDeploy="false" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="/data01/app/was/doosanheavyv2_prod" debug="0" reloadable="false"/> <Alias>org-www.doosanheavy.com</Alias> <Alias>ssl.doosanheavy.com</Alias> </Host> </Engine> </Service> </Server>
  • 6. © 2012 eTRIBE Inc. All rights reserved. 6 라운드 로빈 방식의 로드밸런싱 설정 예) Was2 : server.xml <?xml version='1.0' encoding='utf-8'?> <Server port="8317" shutdown="SHUTDOWN"> ..... <Service name="Catalina"> <Connector port="8316“ protocol="HTTP/1.1“ maxThreads="300“ connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> <Connector port="8315" protocol="AJP/1.3" maxThreads="300" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> <!-- jvmRoute 명 JK 커넥터에서 톰캣 프로세스를 구분하는데 사용. 프로세스 별로 다르게 적용해야 함 --> <Engine name="Catalina" defaultHost="localhost" jvmRoute="doosanheavyv22"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> <Host name="www.doosanheavy.com" unpackWARs="false" autoDeploy="false" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="/data01/app/was/doosanheavyv2_prod" debug="0" reloadable="false"/> <Alias>org-www.doosanheavy.com</Alias> <Alias>ssl.doosanheavy.com</Alias> </Host> </Engine> </Service> </Server>