설정파일의 구조
hosts 설정 파일
설치를 위해서는 대상 서버들의 IP 주소와 설치시 사용할 여러 옵션들을 설정할 수 있다. 이 설정들은 /opt/khan/provisioning/cli/hosts-….sample 파일에 저장된다.
sample 파일을 복사하여 설치에 사용하면 된다.
JBoss EWS와 JBoss EAP를 설치할 때는 hosts-ews-httpd-jboss-eap.sample 설정파일을 사용하고, Apache HTTPD와 Apache Tomcat을 설치할 때는 hosts-apache-httpd-tomcat.sample설정파일을 사용하면 된다.
hosts-apache-httpd-jboss-eap.sample 파일은 아파치 웹서버와 JBoss EAP를 설치하기 위한 설정이고, hosts-ews2-httpd-tomcat.sample은 JBoss EWS의 웹서버와 Tomcat을 설치하기 위한 설정이다.
| 샘플 파일구성 | WAS 서버 | WEB 서버 |
|---|---|---|
hosts-ews-httpd-jboss-eap.sample | JBoss EAP 6.x 버전 | JBoss EWS(Apache) 2.0.1 버전 |
hosts-apache-httpd-jboss-eap.sample | JBoss EAP 6.x 버전 | Apache 2.2.25 컴파일 버전 |
hosts-apache-httpd-tomcat.sample | Tomcat 7.0.42 버전 | Apache 2.2.25 컴파일 버전 |
hosts-ews2-httpd-tomcat.sample | JBoss EWS(Tomcat ) 2.0.1 버전 | JBoss EWS(Apache) 2.0.1 버전 |
위의 표와 같이 설치할 수 있는 샘플 설정파일들이 제공되고 있다. 실제 구성 시 이 파일을 복사하여 사용한다.
접속 대상 서버가 SSH포트로 22번 포트를 사용하지 않거나, pem 파일을 사용하여 로그인하는 시스템 환경이거나, 중간 경유서버를 이용하는 경우 등 다양한 접속환경이 있다. 이런 상황에 대해서 5장에서 설명하고 있으니, 참고하라.
hosts- 파일의 전체적인 구조는 아래와 같다.
# --------------------------------------------------------
# OPENMARU Installer - JBoss EAP 6.1, EWS 2.0.1
#
# contact : service@opennaru.com
# --------------------------------------------------------
[jboss-eap] 🡺 JBoss EAP가 설치될 서버 IP를 지정
# ========================================================
192.168.0.21 seq=0
192.168.0.22 seq=1
192.168.0.23 seq=2
# ========================================================
…중략…
[jboss-eap:vars] 🡺 JBoss EAP 설치시 사용하는 옵션
PRODUCT_SHORTNAME=JBossEAP6
PRODUCT_FULLNAME=JBoss EAP 6.2.0
…중략…
[jboss-ews] 🡺 JBoss EWS가 설치될 서버 IP를 지정
# ========================================================
# EWS가 설치될 서버 IP 목록
# wseq는 머신의 번호로 0부터 일련번호 숫자를 지정합니다.
# --------------------------------------------------------
192.168.0.11 wseq=0
192.168.0.12 wseq=1
# ========================================================
…중략…
[jboss-ews:vars] 🡺 JBOss EWS 설치시 사용하는 옵션
EWS=yes
EWS_PRODUCT_SHORTNAME=JBossEWS2
EWS_PRODUCT_FULLNAME=JBoss EWS 2.0.1
…중략…
[jboss-eap] 섹션에는 JBoss EAP가 설치될 서버 IP를 지정하고, [jboss-eap:vars]는 JBoss EAP설치시 사용할 옵션을 설정한다.
[jboss-eap] 항목은 서버 IP machine_id, is_eap_first_server를 지정한다. machine_id는 EAP서버 인스턴스의 이름을 생성할 때 사용되는 머신의 번호를 설정한다. JBoss EAP 서버 인스턴스 이름을 생성할 때는 server11, server12, server21, server22와 같이 생성하게 되는데, 이때 두자리 숫자중 첫번째 숫자가 머신의 번호, 두번째 숫자는 인스턴스의 번호로 사용한다. 이렇게 설정하면 모든 인스턴스 이름만으로도 어떤 서버의 어떤 인스턴스인지 곧바로 판단할 수 있기 때문에 이런 방식의 인스턴스 Naming을 사용한다.

인스턴스 구성 방법

위 그림과 같이 인스턴스를 구성하기 위해 다음과 같이 설정한다.
그룹 설정
먼저 그룹을 설정한다.
그룹명:도메인이름:멀티캐스트IP:JMS멀티캐스트IP:MOD_CLUSTER_IP:프로파일명:소켓파인딩그룹이름
GROUP_NAMES=admin:admin.test.co.kr:230.10.1.1:231.70.1.1:224.1.1.105:full-ha:full-ha-sockets
# --------------------------------------------------------
# 인스턴스에서 사용할 그룹의 이름을 지정합니다. 인스턴스 그룹명은 GROUPS에 있는 이름입니다.
#
# 그룹명:도메인이름:멀티캐스트IP:JMS멀티캐스트IP:MOD_CLUSTER_IP:프로파일명:소켓파인딩그룹이름
# --------------------------------------------------------
# 멀티캐스트 주소 기본값 : 230.1.0.1
# JMS 멀티캐스트 주소 기본값 : 231.7.0.1
# MOD_CLUSTER 멀티캐스트 주소 기본값 : 224.0.1.105
# --------------------------------------------------------
# profile에 대한 socket binding 선택
# default ==> standard-sockets
# ha ==> ha-sockets
# full ==> full-sockets
# full-ha ==> full-ha-sockets
# --------------------------------------------------------
GROUP_NAMES=admin:admin.test.co.kr:230.10.1.1:231.70.1.1:224.1.1.105:full-ha:full-ha-sockets
GROUP_NAMES=front:front.test.co.kr:230.10.2.1:231.70.2.1:224.1.1.105:ha:ha-sockets
GROUP_NAMES=test :test.test.co.kr :230.10.3.1:231.70.3.1:224.1.1.105:ha:ha-sockets
- 멀티캐스트 IP 지정
멀티캐스트에 사용할 IP를 지정한다.
기본값은 230.1.0.1로 다른 서비스에 사용하는 서로 다른 도메인은 각기 다른 멀티캐스트 IP를 사용하도록 변경한다. 같은 네트워크내에 같은 멀티캐스트 IP를 사용하는 JBoss가 설치되어 있다면 서로 통신이 되어 같은 클러스터에 묶일 수 있기 때문에 멀티캐스트 IP를 변경하여야 한다. 이후 설명하는 JMS 멀티캐스트 IP와 mod_cluster 멀티캐스트 IP도 마찬가지로 서로 다른 서비스 도메인은 다른 IP를 사용하도록 한다.
- JMS 멀티캐스트 IP지정
JMS - HornetQ에서 클러스터링을 위해 사용하는 멀티캐스트 IP를 지정한다. 기본값은 231.7.0.1 이다.
mod_cluster멀티캐스트 IP 지정
mod_cluster에서 사용하는 멀티캐스트 IP를 지정한다. 기본값은 224.0.1.105이다.
머신별 인스턴스 설정
다음 각 머신별 인스턴스를 설정한다.
INSTANCE_NAMES에 인스턴스 이름, 포트 오프셋, 그룹명, 스탠드얼론 인스턴스에서 사용할 프로파일명을 컴마로 구분하여 정의한다.
INSTANCE_NAMES에서 지정하면 위에서 부터 순서대로 머신마다 인스턴스를 생성한다.
인스턴스이름:포트OFFSET:그룹명:사용할_profile_파일명,
INSTANCE_NAMES=admin11:100:admin:standalone-full-ha.xml, front11:200:front:standalone-ha.xml, test11:300:test:standalone-ha.xml
# --------------------------------------------------------
#
# 인스턴스이름:포트OFFSET:그룹명:사용할_profile_파일명,
#
# 머신 IP seq 0번 부터 머신별로 설치할 인스턴스 이름들을 지정한다.
# profile 파일명에는 standalone.xml, standalone-ha.xml, standalone-full.xml, standalone-full-ha.xml를 사용할 수 있다.
#
# --------------------------------------------------------
INSTANCE_NAMES=admin11:100:admin:standalone-full-ha.xml, front11:200:front:standalone-ha.xml, test11:300:test:standalone-ha.xml
INSTANCE_NAMES=admin21:100:admin:standalone-full-ha.xml, front21:200:front:standalone-ha.xml, test21:300:test:standalone-ha.xml
INSTANCE_NAMES=front31:100:front:standalone-ha.xml, test31:200:test:standalone-ha.xml
JBoss EAP 설정
JBoss EAP 기본 변수이름
[jboss-eap:vars] 로 시작하는 부분이 JBoss EAP의 설치 환경을 설정하는 부분이며, 아래 제품이름은 변경하지 않는다.
# --------------------------------------------------------
# JBoss EAP Hosts 변수
# --------------------------------------------------------
[jboss-eap:vars]
#
# 기본값, 변경하지 말 것
#
PRODUCT_SHORTNAME=JBossEAP6
PRODUCT_FULLNAME=JBoss EAP 6.2.0
JBoss 설치 디렉토리
JBoss가 설치될 디렉토리를 지정한다. 예를 들어 /svc/test/was를 지정하면, JBoss EAP는 /svc/test/was/jboss-eap-6.1 디렉토리에 설치된다.
#
# JBoss를 설치할 디렉토리 이름
# JBoss는 $SVC_WAS_HOME/jboss-eap-6.1 에 설치됩니다.
#
SVC_WAS_HOME=/svc/test/was
JBoss도메인 디렉토리
JBoss 인스턴스들이 설치될 디렉토리이다. Standalone 모드라면 /svc/test/was/domains/server11, /svc/test/was/domains/server21 디렉토리에 인스턴스들이 생성된다.
#
# JBoss 도메인을 구성할 디렉토리 명
#
SVC_DOMAIN_HOME=/svc/test/was/domains
사용할 템플릿 이름
설치에 사용할 설정 템플릿 프로파일을 지정한다. /opt/khan/provisioning/cli/templates 아래의 디렉토리 이름을 PROFILE로 지정할 수 있다. 고객사 환경에 맞추어 추가되는 설정이 있다면, default 프로파일을 복사하여, 설정 파일을 수정하여 사용하면 된다.
#
# OPENMARU Installer의 템플릿 프로파일 이름
#
# /opt/khan/provisioning/cli/templates 아래의 디렉토리 명
#
PROFILE=default
JBoss 로그 디렉토리
별도의 디렉토리(파티션)에 로그를 보관하는 경우가 많은데, 별도의 로그 디렉토리 위치를 지정하면 된다. 설치되면 JBoss 인스턴스들의 로그 디렉토리는 지정된 로그 디렉토리로 심볼릭 링크로 연결된다.
#
# JBoss 로그가 저장될 디렉토리 명
#
WAS_LOG_DIR=/svc/test/logs/was
#
# JBoss 로그를 인스턴스 디렉토리 아래에 생성하려면 디렉토리를 지정하지 않음
#WAS_LOG_DIR=
설치할 JDK 버전 설정
설치할 JDK 버전을 ‘1.6’ 또는 ‘1.7’로 지정한다. JDK는 RPM 버전을 이용하여 설치되며, 자동 설치시 alternatives 명령을 이용하여 시스템 디폴트 Java로 설정한다.
#
# 설치할 JDK 버전, RPM으로 설치됨
#
# 1.6, 1.7을 사용할 수 있음
#
JDK_VERSION=1.6
JBoss 관리자 사용자 및 그룹
JBoss를 운영할 관리자의 Linux 계정 정보를 입력한다. 자동 설치시 adduser 명령을 이용하여 계정을 생성한다. 사용자의 Home 디렉토리는 위에서 설정한 SVC_WAS_HOME가 된다. 자동 설치시 JBoss 사용자의 .bash_profile, .bashrc 파일이 추가된다. JBoss 운영시 편리하게 사용할 수 있는 alias들이 추가된다.
#
# JBoss 관리 사용자 그룹, 사용자
#
EAP_USER=jboss
EAP_GROUP=jboss
JBoss 인스턴스 JVM Heap 크기 지정
JBoss 인스턴스의 Heap 크기를 지정한다. Heap Min, Max 메모리 크기와 PermGen 메모리 크기를 설정한다. 기본값은 아주 작게 설정되어 있으니, 운영 머신을 설정하려면, min, max를 적어도 1G 이상으로 설정하고 PermGen 크기를 256m 이상으로 설정한다.
#
# JVM Heap Settings
#
jvm_heap_min=64m
jvm_heap_max=128m
jvm_permgen_max=256m
JBoss 도메인 컨트롤러 IP 지정
도메인 모드로 설치할 때, 도메인 컨트롤러의 IP를 지정한다.
#
# domain controller가 될 서버의 IP 주소
#
domain_controller=192.168.0.22
standalone 모드의 외부 배포 디렉토리 지정
standalone 모드로 설치할 때, 각 인스턴스 디렉토리의 deployments 디렉토리 외에 시스템의 별도 외부 경로를 지정하여 deployments 디렉토리와 같이 사용할 수 있도록 한다.
#
# 외부 애플리케이션 deployment 디렉토리
#
deployment_dir=/svc/test/was/domains/applications
인스턴스 번호 숫자 형식 지정
인스턴스 번호의 숫자 형식을 지정한다. 도메인, Standalone 모두 적용된다. 한 머신에 설치할 인스턴스 개수가 10개가 넘는 경우에는 %02d로 설정하면 숫자 형식이 01, 02, … 10, 11 과 같은 형식으로 출력되어, 서버 이름이 server101, server102, … server110, server111 와 같이 지정된다.
#
# 인스턴스 번호의 숫자 포맷 : ex) 10의 자리가 넘어서 앞이 0으로 채워진 2자리 숫자일 경우 : %02d
#
instance_num_format=%d
데이터 소스 설정
현재 지원하는 데이터 소스 설정은 mysql, oracle을 지원하고 있다. 요청에 따라 추가할 예정이다.
driver_name=mysql과 같이 데이터베이스 제품을 지정한다.none으로 설정하면 데이터 소스가 설정되지 않는다.pool_name=testDS과 같이 JBoss에서 관리하는 데이터베이스 연결 풀의 이름을 지정한다.jndi_name=java:jboss/datasources/testDS와 같이 데이터소스의 JNDI이름을 지정한다.connection_url=jdbc:mysql://192.168.0.22:3306/test와 같이 데이터베이스 연결 URL을 설정한다.min_pool_size=10데이터베이스 연결 풀의 최소 개수를 지정한다.max_pool_size=250데이터베이스 연결 풀의 최대 개수를 지정한다.user_name=root데이터베이스 사용자 이름을 지정한다.password=test데이터베이스 사용자 패스워드를 지정한다.prepared_statement_cache_size=200데이터베이스 Prepared Statement Cache의 크기를 지정한다.
#
# ************************* Datasources *************************
#
# 현재 가능한 드라이버 : mysql, oracle, none
# none - 데이터소스를 설정하지 않음
# mysql - mysql 데이터 소스 설정
# oracle - oracle 데이터 소스 설정
#
#driver_name=none
driver_name=mysql
#
# JDBC 풀의 이름 - JBoss 관리용
pool_name=testDS
#
# JNDI 이름
jndi_name=java:jboss/datasources/testDS
#
# 데이터베이스 연결 URL 설정
connection_url=jdbc:mysql://192.168.0.22:3306/test
#
# 데이터베이스 연결 풀, min - max 크기
min_pool_size=10
max_pool_size=250
#
# 데이터베이스 사용자, id, password
user_name=root
password=
#
# 데이터베이스 prepared statement 캐시 크기
prepared_statement_cache_size=200
세션 복제 방식 지정
JBoss 세션 복제 방식을 지정한다. 디폴트 값은 repl로 클러스터링 된 모든 인스턴스에 세션 값이 복제된다. 인스턴스 개수가 많을 경우 복제된 세션값이 많아져 메모리 사용량이 증가하게 된다.
인스턴스의 세션 메모리 = 한 인스턴스에서 세션이 점유한 메모리 크기 X 인스턴스 개수
인스턴스의 개수가 많을 경우엔 dist로 설정을 변경하도록 한다.
#
# infinispan 세션 복제 형식 선택
#
# repl : 인스턴스 개수가 소규모일 경우 선택
# dist : 인스턴스 개수가 많을 경우(6개 이상)
#
web_session_replication_type=repl
ejb_session_replication_type=repl
클러스터링 형식 지정
클러스터링에 사용할 프로토콜 스택을 선택한다. Multicast가 가능한 경우엔 udp를 사용하고, 멀티캐스트가 되지 않는 경우엔 tcp를 사용한다. tcp를 사용할 경우엔 env.sh 파일에 jgroups.tcpping.initial_hosts에 서버 인스턴스들의 IP, Port를 지정하여야 한다. 물론 자동 설치시 모든 인스턴스들의 IP, Port가 자동으로 지정된다.
#
# jboss clustering type
#
# 선택가능 타입 : udp, tcp, tcp-fileping, tcp-gossip
#
jgroups_stack=udp
설치후 인스턴스 자동시작 지정
설치가 완료된 후 서버 자동시작 여부를 지정하는 옵션이다.
# --------------------------------------------------------
# START Service
# 설치후 인스턴스를 시작할 것인지 결정, started, stopped로 설정
# --------------------------------------------------------
START_SERVICE=started
#START_SERVICE=stopped
설치 후 실행할 사용자 정의 스크립트 지정
OPENMARU Installer을 이용한 자동 설치 후 실행할 사용자 스크립트를 지정한다.
JBoss EAP 설치시에는 /opt/khan/provisioning/cli/templates/default/jboss-eap/postscript.sh 파일이 실행되고, JBoss EWS 설치시에는 /opt/khan/provisioning/cli/templates/default/jboss-ews/postscript.sh 파일이 실행된다.
#
# Post Install Script
#
POST_SCRIPT=postscript.sh
postscript.sh 파일에서는 복사, 권한 변경등의 사용자가 원하는 추가 작업을 실행할 수 있다. 스크립트 파일내에서는 모두 절대 경로로 지정하여야 하며, {{ SVC_WAS_HOME }} JBoss가 설치되는 디렉토리, {{ SVC_DOMAIN_HOME }} 도메인 디렉토리와 같이 hosts에서 설정한 디렉토리를 사용하여 작성할 수 있다.
postscript.sh 파일
#!/bin/sh
# --------------------------------------------------------
# OPENMARU Installer - JBoss EAP 6.1.0
#
# contact : service@opennaru.com
# --------------------------------------------------------
#
# JBoss EAP 설 치후 실행할 스크립트를 입력하십시오.
# 디렉토리는 모두 절대 경로로 지정하십시오.
#
# {{ SVC_WAS_HOME }}
# {{ SVC_DOMAIN_HOME }}
# {{ WAS_LOG_DIR }}
#
JBoss EWS 설정
JBoss EWS 기본 변수
JBoss EWS의 기본 변수로 변경하지 않는다.
# --------------------------------------------------------
# JBoss EWS Hosts 변수
# --------------------------------------------------------
[jboss-ews:vars]
#
# 기본값, 변경하지 말 것
#
EWS=yes
EWS_PRODUCT_SHORTNAME=JBossEWS2
EWS_PRODUCT_FULLNAME=JBoss EWS 2.0.1
JBoss EWS가 설치 디렉토리
JBoss EWS가 설치될 디렉토리를 지정한다.
#
# JBoss EWS가 설치될 디렉토리
#
SVC_WEB_HOME=/svc/test/web
템플릿 프로파일 명 지정
JBoss EWS 설치시 사용할 템플릿 프로파일의 이름을 지정한다. /opt/khan/provisioning/cli/templates 아래의 디렉토리 이름을 PROFILE로 지정할 수 있다. 고객사 환경에 맞추어 추가되는 설정이 있다면, default 프로파일을 복사하여, 설정 파일을 수정하여 사용하면 된다.
#
# OPENMARU Installer의 템플릿 프로파일 이름
#
# /opt/khan/provisioning/cli/templates 아래의 디렉토리 명
#
PROFILE=default
로그가 저장될 디렉토리
JBoss EWS 로그가 저장될 디렉토리 이름을 지정한다.
#
# JBoss EWS 로그가 저장 될 디렉토리 명
#
WEB_LOG_DIR=/svc/test/logs/web
JBoss EWS를 사용할 사용자 이름
Linux 계정 이름을 지정한다.
#
# EWS를 사용할 사용자 이름
#
EWS_USER=apache
JBoss EWS를 사용할 사용자 그룹
Linux 계정의 그룹을 지정한다.
#
# EWS를 사용할 사용자 그룹
#
EWS_GROUP=apache
로드 밸런서 모듈 선택
어떤 로드밸런서 모듈을 사용할 지 선택한다. mod_jk나 mod_cluster 를 설정할 수 있다. mod_cluster를 선택하더라도, mod_jk에 필요한 파일들이 생성되지만, mod_jk.conf.bak 파일로 생성되어 활성화되지 않는다. mod_cluster로 설치 후에 mod_jk로 변경하려면 파일 확장자만 변경하면 된다.
#
# LB 모듈 선택
#
# mod_jk 혹은 mod_cluster
#
#LB_MODULE=mod_cluster
LB_MODULE=mod_jk
mod_cluster 멀티캐스트 주소
mod_cluster에서 사용하는 멀티캐스트 IP를 설정한다. 물론 JBoss EAP 설치에 사용한 IP와 같은 IP를 사용하도록 지정하여야 한다.
#
# MOD_CLUSTER 멀티캐스트 주소
#
# JBoss의 MOD_CLUSTER IP와 같게 설정함
# 기본값 : 224.0.1.105 --- default
#
A_MODCLUSTER_MULTICAST_ADDR=224.1.1.105
설치 후 실행할 사용자 정의 스크립트 지정
OPENMARU Installer을 이용한 자동 설치 후 실행할 사용자 스크립트를 지정한다.
JBoss EWS 설치시에는 /opt/khan/provisioning/cli/templates/default/jboss-ews/postscript.sh 파일이 실행된다.
#
# Post Install Script
#
POST_SCRIPT=postscript.sh
postscript.sh 파일에서는 복사, 권한 변경등의 사용자가 원하는 추가 작업을 실행할 수 있다. 스크립트 파일내에서는 모두 절대 경로로 지정하여야 하며, {{ SVC_WEB_HOME }} JBoss EWS가 설치되는 디렉토리, {{ WEB_LOG_DIR }} 로그 디렉토리와 같이 hosts에서 설정한 디렉토리를 사용하여 작성할 수 있다.
postscript.sh 파일
#!/bin/sh
# --------------------------------------------------------
# OPENMARU Installer - JBoss EWS 2.0.1
#
# contact : service@opennaru.com
# --------------------------------------------------------
#
# JBoss EWS 설치후 실행할 스크립트를 입력하십시오.
# 절대 경로로 지정하십시오.
#
# {{ SVC_WEB_HOME }}
# {{ WEB_LOG_DIR }}
#
Apache Tomcat 설정
인스턴스 그룹 설정
JBoss와 마찬가지로 인스턴스 그룹을 설정하지만, Tomcat은 멀티캐스트 IP, 소켓바인딩 등을 사용하지 않기 때문에, Virtual Host로 사용할 도메인 이름만 지정하면 된다.
# --------------------------------------------------------
# 인스턴스에서 사용할 그룹의 이름을 지정합니다. 인스턴스 그룹명은 GROUPS에 있는 이름입니다.
#
# 그룹명:도메인이름:멀티캐스트IP:JMS멀티캐스트IP:MOD_CLUSTER_IP:프로파일명:소켓파인딩그룹이름
# --------------------------------------------------------
* GROUP_NAMES=admin:admin.test.co.kr:
* GROUP_NAMES=front:front.test.co.kr:
* GROUP_NAMES=test :test.test.co.kr :