jboss eap 6의 module과 domain mode, khan[provisioning] 소개
DESCRIPTION
JBoss EAP 6의 Module과 Domain Mode, KHAN[provisioning] 소개 오픈나루 블로그 - http://opennaru.tistory.com/ 오픈나루 홈페이지 - http://www.opennaru.com/TRANSCRIPT
opennaru.com | 2013 | All Rights Reserved 1
About me
• 현재 오픈나루㈜
• 이전 직장
• Red Hat, Senior JBoss Consultant
• BEA Systems, Senior Developer Relations Engineer
• NEXTEL, Inc. GIS Engine 개발, Server Framework 개발 등
• 책
• 거침없이 배우는 JBoss - EAP 6(AS7), 저자
• Seam In Action, 공동 번역
• More about me?
• Blog : http://opennaru.blog.me
• Facebook : https://www.facebook.com/junshik.jeon
• Company : http://www.opennaru.com
• E-mail : [email protected] [email protected]
opennaru.com | 2013 | All Rights Reserved 2
Agenda
• JBoss EAP 6.2 (AS 7.3)
• Big Three
• 차별성
• 주요 특징
• 모듈 아키텍쳐
• MSC(Modular Service Container)
• Module
• Dependency
• Class Loading
• 사용자 정의 모듈
• jboss-deployment-structure.xml
• Global Module
• Domain Mode
• 스탠드얼론 vs 도메인 모드
• 관리방법
• 프로파일
• 클러스터링
• 구성방법
• 컨트롤러 설정
• 서버그룹
• 인터페이스 설정
• 파일 설정 방법
• KHAN [provisioning] 소개
• 주요 특징
• 주요기능
• Demo
opennaru.com | 2013 | All Rights Reserved 3
Header text
opennaru.com | 2013 | All Rights Reserved 4
JBoss 글로벌 제품 인지도
2008년 4월 2009년 9월 2011년 9월
JBoss 는 Gartner에서 발표하는 “Magic Quadrant for Application Infrastructure” 에서 확실한 리더로 자리 매김
2017년까지 새로운 기업용 자바 어플리케이션의 적어도 70%는 오픈소스 WAS 에서 운영될 것이다. • 주요 오픈소스 애플리케이션 서버인 Apache와 RedHat 제품이 계속해서 소규모의 Java EE환경을 지배 • 이러한 플랫폼은 후지쯔, 히타치, IBM, 오라클, SAP 및 폐쇄된 소스 솔루션에 비해 낮은 TCO의 인식을
바탕으로 High End 환경으로 확장되고 경쟁 • 많은 클라우드 프로바이더들은 이러한 솔루션을 전략적으로 활용하여 OSS로 전환함으로써
자신들의 SaaS와 PaaS 에 대한 규모의 경제를 실현할 것이다.
Predicts 2012: Cloud and In-Memory Drive Innovation in Application Platforms - http://goo.gl/zpAmU
opennaru.com | 2013 | All Rights Reserved 5
이제 Big Three 만..
IBM WebSphere AS JBoss EAP Oracle WebLogic Server
In the war of middleware!
opennaru.com | 2013 | All Rights Reserved 6
JBoss EAP 6 Introduction : 차별성
OSS 프레임워크 지원 초경량/초고속
데이터그리드 / 클라우드 풍부한 관리 인터페이스
EAP 6
opennaru.com | 2013 | All Rights Reserved 7
Header text
opennaru.com | 2013 | All Rights Reserved 8
JBoss EAP 6 주요 특징
모듈 아키텍처 도메인 모드
서브시스템 관리 인터페이스
EAP 6
머신 #1
머신 #2
호스트 컨트롤러
서버 1
서버 2
도메인 컨트롤러 프로세스 컨트롤러
프로세스 컨트롤러
머신 #3
호스트 컨트롤러
서버 3
서버 4 프로세스 컨트롤러
관리자
콘솔
1
서버 그룹
opennaru.com | 2013 | All Rights Reserved 9
Header text
opennaru.com | 2013 | All Rights Reserved 10
Header text
opennaru.com | 2013 | All Rights Reserved 11
JBoss EAP 6 전체 아키텍처
JBoss Enterprise Application Platform6
EJB3
JTA
Messaging
EE
Security
DataSource
Web
Weld
JAX-RS
WebServices
Naming
Transaction
JCA
JavaEE Clustering
JGroups Infinispan
mod_cluster
Other
POJO JacORB
JMX SAR
OSGi JDR
Management
Subsystem
JBoss Modules JBoss MSC
JBoss Server Controller
거침없이 배우는 JBoss, 157 page
opennaru.com | 2013 | All Rights Reserved 12
JBoss MSC(Modular Service Container)의 코어 서비스
Concurrent Service Container
Service Controller
Service Registry
Service Builder
Service Deps Value Listeners Injectors
거침없이 배우는 JBoss, 158 page
opennaru.com | 2013 | All Rights Reserved 13
모듈의 의존 관계
B A
C D E F
G K H I J L
거침없이 배우는 JBoss, 174 page
opennaru.com | 2013 | All Rights Reserved 14
Serial DAG vs Concurrent DAG실행 방법
A
CPU
Core
CPU
Core
CPU
Core
CPU
Core
B
C
D
E
F
G
H
I
J
K
L
A
CPU
Core
CPU
Core
CPU
Core
CPU
Core
C
G
K
B
D
H
L
E
I
F
J
거침없이 배우는 JBoss, 175 page
opennaru.com | 2013 | All Rights Reserved 15
Java VM의 클래스 로더
System
EAR EAR
Container
WAR WAR
Bootstrap
Extension
부트스트랩 클래스 로더
• JVM이 실행될 때 맨 처음 실행되는 클래스 로더 • 코어 패키지(rt.jar, i18n.jar) 등의 클래스 로딩
확장 클래스 로더
• Bootstrap 로딩 후 기본적으로 로딩되는 클래스 • $JAVA_HOME/lib/ext에 있는 Class들이 로딩
시스템 클래스 로더
• java.class.path 즉 CLASSPATH 변수에 클래스를 로딩
• -cp, -classpath에 지정된 Class들이 로딩
애플리케이션 클래스 로더
• 사용자 정의 클래스 로더
거침없이 배우는 JBoss, 163 page
opennaru.com | 2013 | All Rights Reserved 16
JBoss Module에서 클래스 로딩
B
A
C
① 명시적으로 의존성을 정의
② C를 export
<dependencies> <module name=“C” export=“true”/> <dependencies>
<dependencies> <module name=“B”/> <module name=“C”/> <dependencies>
거침없이 배우는 JBoss, 162 page
opennaru.com | 2013 | All Rights Reserved 17
extension과 서브시스템 설정
• 주요 extension는 기본적으로 등록 • 서브시스템의 설정 항목은 XML의
schema로 정의 • 서브시스템 설정은 관리도구에서 지
정
domain.xml
서브시스템 설정 부분
extension 등록 부분
··· <extensions> <!-- list all extensions that you want made available to this server --> <extension module="org.jboss.as.clustering.infinispan"/> <extension module="org.jboss.as.deployment-scanner"/> <extension module="org.jboss.as.transactions"/> <extension module="org.jboss.as.jpa"/> </extensions> ···
<subsystem xmlns="urn:jboss:domain:transactions:1.2"> <core-environment> ··· </core-environment> <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager" /> <coordinator-environment default-timeout="300" /> </subsystem>
거침없이 배우는 JBoss, 174 page
opennaru.com | 2013 | All Rights Reserved 18
standalone.xml
$JBOSS_HOME/docs/schema/jboss-as-weld_1_0.xsd
modules/system/layers/base/org/jboss/as/weld/main
JBoss EAP 6시작시 extension 모듈 로드 절차
jboss-as-weld-x.x.x.Final.jar
org.jboss.as.weld.WeldExtension
<subsystem xmlns=“urn:jboss:domain:weld:1.0”> … </ subsystem>
<extension module=“org.jgoss.as.weld”>
<schema xmlns=“urn:jboss:domain:weld:1.0”> …. </ schema>
SUBSYSTEM_NAME=“weld” NAMESPACE=“urn:jboss:domain:weld:1.0”
META-INF/services/org.jboss.as.controller.Extension org.jboss.as.weld.WeldExtension
module.xml <resource-root path="jboss-as-weld-7.3.0.Final-redhat-14.jar"/> …
subsy
stem
Weld
시작
순서
Modular Service Container
Parse
③ extension 모듈의 초기화
① 모듈 정보 읽기 ② extension 모듈 로드
④ 모듈 정보 가져오기
거침없이 배우는 JBoss, 174 page
opennaru.com | 2013 | All Rights Reserved 19
사용자 모듈 디렉터리 설정 방법
layers.conf 파일 작성하여, 사용자가 추가하는 모듈에 대해서 modules/system/layers/ext 디렉토리를 사용할 수 있도록 설정할 수 있다.
$ mkdir $JBOSS_HOME/modules/system/layers/ext
$ vi $JBOSS_HOME/modules/layers.conf
layers=ext
거침없이 배우는 JBoss, 571 page
opennaru.com | 2013 | All Rights Reserved 20
jboss-deployment-structure.xml
<?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure> <deployment> <dependencies> <module name="org.javassist" /> <module name="org.apache.velocity" export="TRUE" /> </dependencies> </deployment> </jboss-deployment-structure>
<?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure> <deployment> <exclusions> <module name="org.javassist" /> <module name="org.dom4j" /> </exclusions> </deployment> </jboss-deployment-structure>
dependency 설정
exclusion 설정
거침없이 배우는 JBoss, 170 page
opennaru.com | 2013 | All Rights Reserved 21
스프링 프레임워크를 모듈로 만들어 쓸 수 있을까?
<?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure> <deployment> <dependencies> <module name="org.springframework.spring" slot="3.1.2"> <imports> <include path="META-INF**"/> <include path="org**"/> </imports> </module> <module name="org.springframework.security" slot="main"/> <module name="org.mybatis" slot="main"/> <module name="org.slf4j"/> <module name="org.apache.log4j"/> <module name="javax.validation.api"/> </dependencies> </deployment> </jboss-deployment-structure>
Spring Framework을 모듈로 만들기
거침없이 배우는 JBoss, 6장
opennaru.com | 2013 | All Rights Reserved 22
JDK 클래스에 접근하기
JDK 클래스 에 접근하기 sun.jdk 모듈에 JDK에서 제공하는 클래스들을 정의하고 있음 이 모듈에 정의되지 않은 클래스를 로딩하려면 다음과 같이 설정한다.
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1"> <deployment> <dependencies> <system> <paths> <path name="sun/security/action"/> <path name="javax/crypto"/> </paths> </system> </dependencies> </deployment> </jboss-deployment-structure>
https://access.redhat.com/site/solutions/343033 거침없이 배우는 JBoss, 6장
opennaru.com | 2013 | All Rights Reserved 23
JBoss에서 Jersey 사용시 모듈 설정 방법
JBoss에서 Jersey(RESTful Web Services 모듈) JBoss는 RESTEasy 모듈을 기본으로 제공하고 있음 만약 Jersey를 사용하고 싶다면 아래와 같이 모듈을 설정
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1"> <deployment> <dependencies> <system> <paths> <path name="com/sun/xml/bind/v2/runtime/JAXBContextImpl"/> </paths> </system> </dependencies> </deployment> </jboss-deployment-structure>
https://access.redhat.com/site/solutions/330173 거침없이 배우는 JBoss, 6장
opennaru.com | 2013 | All Rights Reserved 24
Global 모듈
WAS 시작시 CLASSPATH에 설정하여야만 하는 JAR를 사용하려면 일부 암호화 모듈이 이런 경우가 있음
<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.1" name="com.opennaru"> <resources> <resource-root path="abc.jar"/> <resource-root path="def.jar"/> </resources> <dependencies> </dependencies> </module>
<subsystem xmlns="urn:jboss:domain:ee:1.1"> <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement> <jboss-descriptor-property-replacement>true</jboss-descriptor-property-replacement> <global-modules> <module name="com.opennaru" slot="main"/> </global-modules> </subsystem>
module.xml
standalone*.xml / domain.xml
거침없이 배우는 JBoss, 6장
opennaru.com | 2013 | All Rights Reserved 25
Header text
opennaru.com | 2013 | All Rights Reserved 26
스탠드얼론 모드와 도메인 모드 비교
머신 (호스트)
호스트 컨트롤러
서버 1
서버 2
프로세스 컨트롤러
도메인
머신 (호스트)
서버 1
서버 2
스탠드얼론
머신 (호스트)
서버 1
서버 2
머신 (호스트)
호스트 컨트롤러
서버 1
서버 2
프로세스 컨트롤러
거침없이 배우는 JBoss, 122 page
opennaru.com | 2013 | All Rights Reserved 27
Host 1
도메인 컨트롤러 (호스트 컨트롤러1)
Server 1
프로세스 컨트롤러 1
Server Group 1
Server 2
Host 2
호스트 컨트롤러 2
Server 3
프로세스 컨트롤러 2
Server 4
Server Group 2
Host 3
호스트 컨트롤러 3
Server 5
프로세스 컨트롤러 3
Server 6
Server Group 3
Server Group 4
Domain
[ 도메인 환경에서의 JVM 프로세스들 ]
도메인 컨트롤러
- 도메인에 대한 중앙에서 집중화된 관리/통제를 위한 싱글 프로세스 ( SPOF 를 위한 Backup )
- 호스트 컨트롤러 프로세스에 의해 관리되는 EAP 서버 인스턴스들에 대해서 도메인 (서버그룹) 환경에서 구성을 관리하고 배포하는 프로세스
호스트 컨트롤러
- Domain에 포함된 개별 Host 에서 실행되는 프로세스로 Domain Controller 와 연결된 개개의 호스트
- 도메인 컨트롤러 프로세스와 연결된 호스트 컨트롤러에 의해서 각각의 EAP 서버 인스턴스에 대한 배포와 환경을 설정
프로세스 컨트롤러
- 서버 인스턴스 및 호스트 컨트롤러 프로세스의 기동/정지 및 모니터링
서버
- EAP 서버 인스턴스(프로세스)
[관리를 위한 논리 개념]
도메인
-하나로 도메인 컨트롤러에 의해 관리(설정/배포 및 라이프 사이클 관리)를 하는 호스트 컨트롤러
-도메인내의 모든 서버 인스턴스는 도메인 컨트롤러와 호스트 컨트롤러에 의해 일관한 환경구성과 배포가 통제됨
서버 그룹
-서버 인스턴스를 관리하기 위한 논리 그룹으로 프로파일, 환경설정 그리고 배포 단위
-도메인에서 서버 인스턴스는 하나의 서버 그룹에 속함
JBoss EAP6 구성 : 도메인 모드 - 주요 용어
opennaru.com | 2013 | All Rights Reserved 28
도메인모드와 스탠드얼론 모드의 관리 방법 비교
머신 #1
머신 #2
호스트 컨트롤러
서버 1
서버 2
도메인 컨트롤러 (master Host Controller)
프로세스 컨트롤러
프로세스 컨트롤러
머신 #3
호스트 컨트롤러
서버 3
서버 4 프로세스 컨트롤러
관리자
콘솔
머신 #1
서버 1 서버 2
머신 #2
서버 3 서버 4
3 2 1 4
1
스탠드얼론 모드 도메인 모드
서버 그룹
거침없이 배우는 JBoss, 124 page
opennaru.com | 2013 | All Rights Reserved 29
스탠드얼론 모드와 도메인 모드의 프로파일 비교
<?xml version='1.0' encoding='UTF-8'?> <domain xmlns="urn:jboss:domain:1.5"> <extensions> .. 중략 .. </extensions> <profiles> <profile name="default"> .. 중략 .. </profile> <profile name="ha"> .. 중략 .. </profile> <profile name="full"> .. 중략 .. </profile> <profile name="full-ha"> .. 중략 .. </profile> </profiles> <interfaces> .. 중략 .. </interfaces> <socket-binding-groups> .. 중략 .. </socket-binding-groups> <server-groups> .. 중략 .. </server-groups> </domain>
도메인
모드
스탠드얼론
모드
standalone.xml
standalone-ha.xml
standalone-full.xml
standalone-full-ha.xml
거침없이 배우는 JBoss, 125 page
opennaru.com | 2013 | All Rights Reserved 30
스탠드얼론 모드와 도메인 모드에서의 클러스터링 차이점
머신 #1
머신 #2
호스트 컨트롤러
서버 1
서버 2
도메인 컨트롤러 (master Host Controller)
프로세스 컨트롤러
프로세스 컨트롤러
머신 #3
호스트 컨트롤러
서버 3
서버 4 프로세스 컨트롤러
머신 #1
서버 1
서버 2
스탠드얼론 모드 도메인 모드
서버 그룹 #1
머신 #2
서버 3
서버 4 서버 그룹 #2
클러스터 #1
클러스터 #2
거침없이 배우는 JBoss, 126 page
opennaru.com | 2013 | All Rights Reserved 31
도메인 모드 구성 예
머신 #1
머신 #2
호스트 컨트롤러
머신 #3
호스트 컨트롤러
서버 3
서버 1
서버 2
머신 #4
호스트 컨트롤러
서버 5
서버 4
서버 그룹 A
도메인 컨트롤러 (master
Host Controller)
프로세스 컨트롤러
프로세스 컨트롤러
프로세스 컨트롤러
프로세스 컨트롤러
서버 그룹 B
도메인 모드
거침없이 배우는 JBoss, 128 page
opennaru.com | 2013 | All Rights Reserved 32
도메인 모드 구성 예
머신 #1
호스트 컨트롤러
머신 #2
호스트 컨트롤러
서버 3
서버 1
서버 2
머신 #3
호스트 컨트롤러
서버 5
서버 4
서버 그룹 A
도메인 컨트롤러 (master
Host Controller)
프로세스 컨트롤러
프로세스 컨트롤러
프로세스 컨트롤러
프로세스 컨트롤러
서버 그룹 B
도메인 모드
거침없이 배우는 JBoss, 128 page
opennaru.com | 2013 | All Rights Reserved 33
도메인 컨트롤러 설정
도메인 컨트롤러 {XXX.XXX.XXX.1}
host.xml
<domain-controller> <local/> </domain-controller>
domain.xml
호스트 컨트롤러 1 {XXX.XXX.XXX.2}
host.xml
<server-identities> <secret value="b3Blbm5hcnUhMjM0"/> </server-identities>
<domain-controller> <remote host="XXX.XXX.XXX.1" username="admin" port="9999"/> </domain-controller>
호스트 컨트롤러 2 {XXX.XXX.XXX.3}
host.xml
<server-identities> <secret value="b3Blbm5hcnUhMjM0"/> </server-identities>
<domain-controller> <remote host="XXX.XXX.XXX.1" username="admin" port="9999"/> </domain-controller>
거침없이 배우는 JBoss, 135 page
opennaru.com | 2013 | All Rights Reserved 34
서버 그룹 구성
머신 #1
머신 #2
호스트 컨트롤러
머신 #3
호스트 컨트롤러
서버 3
서버 1
서버 2
머신 #4
호스트 컨트롤러
서버 5
서버 4
서버 그룹 A
도메인 컨트롤러 (master
Host Controller)
Domain.xml
서버 그룹 B
deployment 1
profile 1
deployment 2
profile 2
host.xml
host.xml
host.xml
서버 그룹에 사용할 프로파일 정의
서버 그룹은 배포 단위
거침없이 배우는 JBoss, 137 page
opennaru.com | 2013 | All Rights Reserved 35
도메인 모드 – 네트워크 설정
• EAP6 에서는 바인딩 IP 주소는 host.xml 파일에서 “<interface>” 로 정의
• 일반적으로 사전에 정의된 인터페이스를 사용하며, 관리 인터페이스는 관리도구 및 호스트 컨트롤러 간의 통신에 사용
• 포트 설정은 socket-binding 으로 관리되며 일반적으로 사전에 그룹 정의된 socket-binding-group 를 사용
• 단일 Host 상에서 복수의 Server 를 기동 시 포트 중복을 막기 위해 오프셋(offset) 지정
master management I/F :127.0.1.1
public I/F :127.0.1.1 unsecure I/F : 127.0.1.1
Domain Controller
slave management I/F : 127.0.1.2
public I/F : 127.0.1.2 unsecure I/F : 127.0.1.2
Host Controller
server-one
9999 9999
9990 Admin Console
CLI management Native I/F
management HTTP I/F
9999
9990
8080
8443
4713
… Public I/F & socket-binding-group
server-two
8230
8593
4863
… Public I/F & socket-binding-group
management Native I/F
management HTTP I/F
port-offset=“150”
opennaru.com | 2013 | All Rights Reserved 36
도메인 모드에서 프로세스 구성
머신 (호스트)
호스트 컨트롤러
서버 1
서버 2
프로세스 컨트롤러
도메인 : 자바 프로세스를 나타냄
: 자식 프로세스를 나타냄
거침없이 배우는 JBoss, 138 page
opennaru.com | 2013 | All Rights Reserved 37
• 프로세스 컨트롤러, 호스트 (도메인) 컨트롤러, 서버 인스턴스는 각각 독립적인 JVM 프로세스
• 호스트 컨트롤러, 서버 프로세스는 프로세스 컨트롤러 프로세스에 의해 기동
• 호스트 컨트롤러 중 도메인 컨트롤러로 정의된 것이 도메인 컨트롤러로 동작
JBoss EAP6 구성 : 도메인 모드 – JVM 프로세스 종류 및 구성
host1
Domain Controller (Host Controller)
Process Controller
host2
Host Controller
server-one
server-two
host3
Host Controller
Domain
server-one
server-two
Process Controller
Process Controller
| \-+= 03326 root $EAP_HOME/bin/domain.sh …
| \-+- 03346 root $JAVA_HOME/bin/java -D[Process Controller] …
| \--- 03347 root $JAVA_HOME/bin/java -D[Host Controller] …
| \-+= 03348 root $EAP_HOME/bin/domain.sh …
| \-+- 03368 root $JAVA_HOME/bin/java -D[Process Controller] …
| |--- 03369 root $JAVA_HOME/bin/java -D[Host Controller] …
| |--- 03370 root $JAVA_HOME/bin/java -D[Server:server-one] …
| \--- 03371 root $JAVA_HOME/bin/java -D[Server:server-two] …
\-+= 03372 root $EAP_HOME/bin/domain.sh …
\-+- 03392 root $JAVA_HOME/bin/java -D[Process Controller] …
|--- 03393 root $JAVA_HOME/bin/java -D[Host Controller] …
|--- 03394 root $JAVA_HOME/bin/java -D[Server:server-one] …
\--- 03395 root $JAVA_HOME/bin/java -D[Server:server-two] …
main-server-group
jvm 프로세스
xxx pstree 커맨드 실행 결과
거침없이 배우는 JBoss, 5장
opennaru.com | 2013 | All Rights Reserved 38
도메인 모드 설정 파일 항목
domain.xml host.xml
extensions 모듈 ○
system-properties 시스템 프로퍼티 ○ ○
paths ○ ○
management Realm과 interfaces 바인드 ○
profiles 사용하는 Subsystem ○
interfaces Listener 주소와 포트 ○ ○
domain-controller 도메인 컨트롤러의 주소와 포트 ○
jvms jvm 시작 옵션 ○
servers 서버 정의와 포트 오프셋(offset) ○
socket-binding-groups 포트 설정 ○
server-groups ServerGroup 정의 ○
deployments ○
도메인 공통 설정 값 (서버 그룹) – domain.xml
호스트 전용 설정 값 (호스트) – host.xml
Domain.xml과 Host.xml 공통 설정
거침없이 배우는 JBoss, 139 page
opennaru.com | 2013 | All Rights Reserved 39
설정 파일 관리
도메인 컨트롤러 {XXX.XXX.XXX.1}
host.xml
<domain-controller>
<local/> </domain-controller>
domain.xml
호스트 컨트롤러 1 {XXX.XXX.XXX.2} host.xml <domain-controller> <remote host=”XXX.XXX.XXX.1” port=”9999” /> </domain-controller> <servers> <server name=“Server 2” group=“Server Group A”… > … </ server> … </ servers>
호스트 컨트롤러 2 {XXX.XXX.XXX.3} host.xml ............................... ...............................
서버 그룹 A
서버 3 서버 2
서버 5 서버 4
서버 그룹 B
거침없이 배우는 JBoss, 140 page
opennaru.com | 2013 | All Rights Reserved 40
domain.xml 파일과 host.xml 파일의 주요 설정 내용
Domain
<domain-controller> <local/> </domain-controller> <servers> <server name=“master_server1” group=“simpleServerGroup1”… > … </ server> … </ servers>
domain.xml
host.xml
master (host #1) {XXX.XXX.XXX.1}
slave1 (host #2) {XXX.XXX.XXX.2}
slave1_server1 simpleServerGroup1 master_server1
<domain-controller> <remote host=” XXX.XXX.XXX.1” port=”9999”/> </domain-controller> <servers> <server name=“slave1_server1” group=“simpleServerGroup1”… > … </ server> … </ servers>
host.xml
거침없이 배우는 JBoss, 145 page
opennaru.com | 2013 | All Rights Reserved 41
Header text
opennaru.com | 2013 | All Rights Reserved 42
WAS에서 세션 클러스터링이 되지 않아요!!!
매번 비슷한 작업인데… 언제 이 많은 서버를 다 설치하지??!!!
웹서버와 WAS 서버가 연결되지 않아요!!!
아무리 구글을 뒤져봐도 어떻게 설정해야 되는지 모르겠어요!!!!
Real Voice
웹 서버/WAS서버 설치 구성은 전문가만 할 수 있다?
안정적이고 신속한 웹 서버/WAS 서버 구성
미들웨어 이슈 - 웹 서버 / WAS
opennaru.com | 2013 | All Rights Reserved 43
A 통신사 대규모 시스템 구축
8 7 6 5 4 3 2 1
1월 2월
현황분석/설계
파일럿
템플릿 작성
안정화 지원
완료보고
….
Machine #1
WAS 1-1
WAS 1-2
WAS 1-3
WAS 1-4
Machine #2
WAS 2-1
WAS 2-2
WAS 2-3
WAS 2-4
Machine #3
WAS 3-1
WAS 3-2
WAS 3-3
WAS 3-4
Machine #N
WAS N-1
WAS N-2
WAS N-3
WAS N-4
A 업무
B 업무
C업무
Machine #4
WAS 4-1
WAS 4-2
WAS 4-3
WAS 4-4
Machine #5
WAS 5-1
WAS 5-2
WAS 5-3
WAS 5-4
Machine #6
WAS 6-1
WAS 6-2
WAS 6-3
WAS 6-4
Machine #M
WAS M-1
WAS M-2
WAS M-3
WAS M-4
Z 업무
H 업무
D 업무
Y 업무
• 프로젝트 개요 수작업으로 인한 기간, 비용 그리고 Human Error 의 발생빈도가 높았음. 총 3개월 동안 프로젝트 수행 1개 서비스 9 개 주요 업무에 대한 오픈소스 도입 프로젝트 웹 서버 17대 + WAS 서버 15대 머신 / 총 47대 약 40개의 JBoss 인스턴스, 약 26개의 웹 서버 가상호스트 WAS 매핑
프로젝트 일정 시스템 구성 범위
opennaru.com | 2013 | All Rights Reserved 44
고객 요구사항에 따른 웹 시스템 작업
웹 서버 설치
WAS서버 설치
웹서버 설치
웹 서버/ WAS서버연결
클러스터링 구성
애플리케이션 배포 지원
테스트 지원
부하테스트 지원
오픈 지원
웹 시스템 표준 구성
장애 지원
개발 환경 지원
개발 서버 설치
Standard 구성 Advanced 구성
mod_jk 설정
WAS 설치
mod_cluster 설정
Worker MPM 구성
로깅 디렉터리 설정
웹서버 튜닝
웹서버 설치 보고서 작성
Native 라이브러리 설정
JSP 변경 체크 설정
각종 Dump 디렉터리 구성
모듈 설정
Log4J 설정
멀티 인스턴스 구성
JDBC 커넥션 풀 튜닝
모니터링 설정
커널 파라미터 설정
Cpuspped 설정
블루투스 off
limits.conf 설정
추가 rpm 설치
Huge Page 설정
OS 설정 보고서 작성
클러스터링 테스트
통합 테스트
기본 네트워크 테스트
애플리케이션 배포 테스트
운영관리 테스트
WAS 서버 설치보고서 작성
쓰레드 풀 튜닝 도메인 모드 구성
운영을 위한 쉘 구성
로깅 디렉터리 설정
JDK 설치
? 일
? 일
1 일
1 일
1 일
1 일
수 일 이상 기술 지원
? 일
운영 계정 설정
SE Linux 설정
방화벽 설정
멀티캐스트 테스트
JDBC 테스트
애플리케이션 배포 구성
웹서버
WAS 서버
OS
테스트
단위 테스트
Benchmark 테스트
고객 기술지원
opennaru.com | 2013 | All Rights Reserved 45
KHAN Provisioning 은?
OS 만 설치되어 있으면
수분 이내에 설치 환경
을 테스트하고 웹서버
와 WAS서버를 설치하
고 즉시 서비스할 수 있
는 환경 제공
미들웨어 전문가가 아니
어도 전문가 수준의 시
스템 튜닝이나 난이도
높은 구성을 할 수 있도
록 기능 제공
서버 구성에 대한 정보
만 입력하면 한대에서
수 십대까지 규모에 상
관없이 자동으로
웹시스템 운영환경을
구성
웹시스템 설치/구성
보고서를 시스템에 맞
게 자동으로 생성하여
개발팀과 운영 팀에게
제공
수 분 내 튜닝된 웹 서버와 WAS 서버로 웹 시스템 구축
opennaru.com | 2013 | All Rights Reserved 46
웹서버/WAS 자동 설치
• 서버 OS 종류와 버전을 식별하여 해당 OS에 맞는 웹서버/WAS 제품으로 설치
• 단일 서버나 여러 대의 서버에 상관없이 웹서버와 WAS 서버를 설치하고 운영환경을 구성
• JDK, mod_jk, mod_cluster , 운영 스크립트 파일 등을 구성 요청에 맞추어 설정하여 설치
• 운영에 필요한 사용자 계정 자동 생성
구성에 대한 테스트 환경 제공
• Http 세션 클러스터링을 바로 수행할 수 있는 애플리케이션 제공과 환경 제공
• WAS 구성환경에 대하여 기본적인 테스트를 할 수 있는 애플리케이션 자동 배포
• 데이터베이스와 연결하기 위한 데이터소스 테스트 환경 제공
• 신속한 테스트를 위한 위한 웹페이지 자동생성
전문가 수준의 튜닝과 구성
• OS 커널, 네트워크 버퍼 사이즈 등 튜닝된 환경 구성
• 최적화된 mod_jk 설정값
• WAS 성능을 위한 Native Library 설정 반영
• WAS Thread Pool 이나 데이터소스 Pool을 설정
• selinux 등 웹서비스를 위한 보안 설정을 최적화하여 구성 설치 보고서 자동 생성
• 개발팀에 전달하여 참조
• 설치된 정보들을 바탕으로 MS Word 형태의 설치보고서를 생성합니다.
• 웹관리 콘솔 접속 정보 등 웹/WAS 환경 운영시 참조할 수 있는 가이드 제공
KHAN Provisioning 기능
opennaru.com | 2013 | All Rights Reserved 47
Use Case #1 - 교육자료 및 개발팀 전달 문서
WAS 교육 자료와 교육 부탁 드려요!
영문 메뉴얼 봐도 모르고 한글로 된 운영에 필요한 내용만 정리해 주세요. 운영자
개발환경 구성을 어떻게 해야 하는지 문서를 주시던가 구성해 주세요.
운영 환경에 배포하는 방법하고 WAS start/stop 등 개발팀에서 알아야 하
는 내용 정리해 주세요. 개발자
운영자와 개발자가 WAS 운영에 필요한 필수적인 정보들을 문서로 자동
생성하여 제공
고객 요구사항에 맞추어 구성된 정보들을 정리하여 Word 문서로 제공
운영환경에서 바로 사용 가능한 스크립트 리스트와 설명
고객사에 요구에 따라 설치한 설치정보 제공
각종 관리도구 사용법 및 로그인 방법
opennaru.com | 2013 | All Rights Reserved 48
Use Case #2 - 설치 보고서 작성
작업하신 내용을 문서 작성해 주세요
검수를 하기 위한 항목들을 문서로 전달해 주세요.
운영자
자동으로 전문가 수준의 보고서를 Word 파일 형태로 작성
OS 정보에서 부터 Kernel Tung 파라미터에 대한 내용까지 문서로 작성
하여 제공
OS 정보 제공 적용된 커널 파라미터 OS 정보 요약
opennaru.com | 2013 | All Rights Reserved 49
Use Case #3 – 기본 환경 테스트
멀티캐스트 네트워크는 어떻게 확인하지?
애플리케이션을 개발중인 데 설치만하면 나중에 문제 생기지 않을 까?
데이터 베이스 연결 테스트는 어떻게 하지? 운영자
NetTest 를 통한 실제 구성 전에 주요 시스템과 포트에 대한 네트워크
연결 테스트 진행
WAS 구성환경에 대하여 테스트를 할 수 있는 애플리케이션 자동 배포
데이터베이스 연결과 세션 클러스터링 테스트 환경 제공
세션 클러스터링 테스트 네트워크 테스트 결과
데이터베이스 연결 테스트
opennaru.com | 2013 | All Rights Reserved 50
Use Case #4 – 대규모 웹서버/WAS 설치 구성
1주일 이내에 WAS 인스턴스 40개 와 10대 웹서버를 구성해 주세요.
설치/구성 방안에 대하여 먼저 설명해 주세요.
운영자
단일 서버나 여러 대의 서버에 상관없이 웹서버와 WAS 서버를 설치하고
운영환경을 구성
서버 OS 종류와 버전을 식별하여 해당 OS에 맞는 웹서버/WAS 제품으로
설치
복잡한 도메인 구성 지원
Configuration Wizard 제공
서버 대수에 상관없이 설치
opennaru.com | 2013 | All Rights Reserved 51
웹 시스템 설치 및 구성 – 전문가에 의한 구성
OS 설치 /구성 OS 튜닝 OS 운영 설정
커널 파라미터 최적화
Cpuspeed 설정
limits.conf 설정
메모리 라지 페이지
…
운영 계정 설정
계정별 쉘 설정
추가 rpm 설치
JDK 설치
…
SE Linux 설정
방화벽 설정
Alternatives 설정
블루투스 설정
…
JBoss EAP
Linux
JBoss EAP
Application
Java
JBoss Instance
…
JBoss EAP
Linux
JBoss EAP
Application
Java
JBoss Instance
…
JBoss EAP
Linux
JBoss EAP
Application
Java
JBoss Instance
…
JBoss EAP
Linux
JBoss EAP
Application
Java
JBoss Instance
JBoss 전문가
리눅스 전문가
JBoss 설치/구성 JBoss 튜닝 JBoss 운영 설정
쓰레드 풀 설정
각종 커넥션 풀 설정
JGroups 설정
클러스터링 타입 설정 – UDP, TCP, FILE
OS 플랫폼 별 제품 설치
각종 관리 쉘 설치
다수 인스턴스 구성
독립서버/ 도메인 모드 구성
JBoss 관리 사용자 등록
세션 클러스터링 환경 구성
로깅 설정
애플리케이션 배포 디렉터리 설정
Native 라이브러리 설정
JVM GC 옵션
인스턴스 별 포트셋 설정
인스턴스 별 로그/ 덤프 디렉터리 설정
클러스터링 테스트 환경 구성
데이터소스 테스트 환경 구성 …
…
…
opennaru.com | 2013 | All Rights Reserved 52
KHAN Provisioning 기대 효과
웹 시스템 자동화 기대 효과
“1 시간 이내” • 웹 시스템 인스턴스 자동 구성 • 기본 튜닝 • 설치 보고서
웹시스템 구성하는데 “ 몇 일? ” “ 튜닝은? ”
“ 설치보고서는? ”
몇 일
1시간
수작업 설치 및 구성
KHAN Provisioning
웹 시스템 구성 -
90%단축
• Network 구성
1 일
2시간
• 하드웨어 설치
1 일 • OS 설치
2시간 • Java설치
2시간 • JBoss설치
8 시간 • 인스턴스 구성
4 시간 • 구성 테스트
몇 일 이상
Linux
JBoss
Application
Java
JBoss Instance
WAS 서버
opennaru.com | 2013 | All Rights Reserved 53
기존 수작업과의 기간/비용 비교
87% 기간 단축 Cost 비용 절감
4 대 10 대 20 대 100 대
수작업 설치 1 일 3 일 9 일 40 일
프로비져닝 1 일 2 일 4 일 10 일
일 5 일
10 일 15 일 20 일 25 일 30 일 35 일 40 일 45 일
소요
기간
규모 대비 소요기간
전문가 수준의 튜닝을 통한 성능 최적화 및 구성 표준화
전문가 수준의 안정적인 시스템 구성을 통한 장애 포인트 최소화
전문가 수준의 자동화된 설치/구성/테스트/리포트를 통한 기간 단축
웹 서버/WAS 전문 프로비져닝을 통한 비용 절감
opennaru.com | 2013 | All Rights Reserved 54
기존 방식 대비 프로젝트 단계별 비교
• 프로비져닝에 의한 자동화 작업
• 인프라 소프트웨어 전문기술 요구 단계
설치/구성/기본테스트 5일 -> 3시간 :
92% 기간 단축
4대의 웹서버/WAS 서버 구성을 기준으로 프로젝트 진행 단계별 소요 기간을 시뮬레이션
성능/안정화/교육/장애 17일 -> 5.5 일 :
68% 기간 단축
프로젝트 전체 기간 24일 -> 7 일 :
71% 기간 단축
opennaru.com | 2013 | All Rights Reserved 55
• 기본 웹/WAS 설치환경과 KHAN [provisioning]을 통해 설치된 환경에서 성능 비교
• 각각 웹서버와 JBoss 서버를 1대씩 ( 2core / 2G) 구성하고 상대적인 성능의 비교
• JMeter 로 30/50/100/300/400/500 Thread 로 부하 테스트
• Retrieve All Embedded Resources from HTML Files 옵션 사용
기존 방식 대비 항목별 비교
0
50
100
150
200
250
300
350
400
30 User 50 User 100 User 300 User 400 User 500 User
Tran
sact
ion
s/Se
c
KHAN [provisioning] vs. Default Benchmark Test
KHAN [provisioning]
기본 설치 환경
동일 쓰레드에서 최소 24% / 최대 43% 성능 향상
Saturation 포인트가 높아져 시스템 효율성 증대
opennaru.com | 2013 | All Rights Reserved 56
Header text
opennaru.com | 2013 | All Rights Reserved 57
KHAN [provisioning] - 데모
Machine #1
admin11 (+100)
front11 (+200)
test11 (+300)
Machine #2
admin21 (+100)
front21 (+200)
test21 (+300)
Machine #3
front31 (+100)
test31 (+200)
admin
230.10.1.1
front
230.10.2.1
test
230.10.3.1
Machine #3
Apache + mod_jk / mod_cluster
admin
Virtual Host
front test
Machine #4
Apache + mod_jk / mod_cluster
admin
Virtual Host
front test
JBoss EWS 2.0.1
JBoss EAP 6.2.0 Domain Controller
복잡한 설정을 한번에… 설치 보고서도 생성
opennaru.com | 2013 | All Rights Reserved 58
KHAN [provisioning] 웹 기반 GUI
Agent 기반 모니터링은 주요 메소드의 구간 속도, SQL 쿼리 등을 출력하며 현재 Log 파일 출력만 지원합니다.
opennaru.com | 2013 | All Rights Reserved 59
JBoss EWS 설치시 index.html 생성
설치된 인스턴스 접속 정보 페이지가 자동 생성된다.
• 모든 인스턴스 접속 URL
• mod_jk 연결 정보 페이지
• mod_cluster 연결 정보 페이지
• 웹 세션 복제 테스트 페이지
• 데이터소스 테스트 페이지
opennaru.com | 2013 | All Rights Reserved 60
mod_jk, mod_cluster 상태 모니터링 페이지 설정
모니터링 페이지 자동 설정된다.
• mod_cluster 관리 페이지
• JK Status 정보 페이지
opennaru.com | 2013 | All Rights Reserved 61
웹 세션 복제 테스트, 데이터소스 애플리케이션 자동 배포
• 웹 세션 복제 테스트 애플리케이션이 자동 배포된다.
• 데이터소스 테스트 애플리케이션이 자동 배포된다.
opennaru.com | 2013 | All Rights Reserved 62
MS Word 제품 설치 보고서 자동 생성
• 제품별 설치보고서가 자동 생성되어 개발팀, 운영팀의 설치/운영 문서로 활용할 수 있다.
opennaru.com | 2013 | All Rights Reserved 63
거침없이 설치하는 JBoss
운영에 필수적인 사용 방법은 설치보고서에서
참조
배경 지식과 설명 이외의 WAS 운영에 필요한
참조 정보들은 “거침없이 배우는 JBoss”
opennaru.com | 2013 | All Rights Reserved 64
Header text
opennaru.com | 2013 | All Rights Reserved 65
Header text
opennaru.com | 2013 | All Rights Reserved 66
Header text
opennaru.com | 2013 | All Rights Reserved 67
Header text
opennaru.com | 2013 | All Rights Reserved 68
Header text
opennaru.com | 2013 | All Rights Reserved 69
opennaru.com | 2013 | All Rights Reserved 70
Header text
opennaru.com | 2013 | All Rights Reserved 71
Header text
opennaru.com | 2013 | All Rights Reserved 72
Header text
opennaru.com | 2013 | All Rights Reserved 73
Header text
opennaru.com | 2013 | All Rights Reserved 74
Header text
opennaru.com | 2013 | All Rights Reserved 75
Header text
opennaru.com | 2013 | All Rights Reserved 76
Header text
opennaru.com | 2013 | All Rights Reserved 77
Header text
opennaru.com | 2013 | All Rights Reserved 78
Header text
opennaru.com | 2013 | All Rights Reserved 79
Header text
opennaru.com | 2013 | All Rights Reserved 80
Header text
opennaru.com | 2013 | All Rights Reserved 81
Header text