2014년 3월 12일 수요일

EAP6 Domain 구성으로 설치

  1. 용어정의 (이 문서를 볼때 참조)
    1. EAP : Enterprise Application Platform  라고 쓰고 제이보스 와스라고 한다.
    2. AP : EAP의 커뮤니티버젼 (지원 없음, 무료로 사용하는 버젼)
      1. Icon
        AP는 Version 7 까지 http://jboss.org로 진행되었으며
        2013년 11월 WildFly로 별도 분리됨 (http://wildfly.org/)
        2014년 WildFly 8 버젼을 발표로 본격적으로 EAP 와 AP는 분리되어 진행
    3. EWS : Enterprise Web Server 라고 쓰고 제이보스 웹서버 라고 한다. 내부적으로 Apache + HA가 제거된 tomcat 과 Proxy Module이 공식적으로 제공된다.
    4. Master = DomainController = Admin Server  : 도메인내의 slave들과 통신하면서 통합 관리함 (설치는 임의의 서버 한곳에 구성, 필요시 HA 구성 가능함)
    5. Slave = HostController : 서버 벌로 구성되며 상위 Master와 통신하며 하위 Server들을 관리한다. (Production의 경우 일반적으로 서버당 하나)
    6. server = Instance : 실제 WAS 서비스를 제공하는 Process
    7. proxy module : web Server에 인입된 사용자 요청을 WAS에 LoadBalance(LB) 하거나 WAS 장애시 Fail Over 하는 기능을 담당하는 모듈(mod_jk, mod_proxy, mod_cluster)을 통칭
       
  2. 설치준비
    1. EAP6 설치본 
      1. jboss ORG http://www.jboss.org/products/eap ) org에서도 EAP 버젼 다운로드 가능함, 로그인 필요
      2. Redhat https://access.redhat.com/site/downloads/  (파트너사 사이트)
    2. Domain, Std 용 스크립트 
    3. JDK 1.6 또는 1.7 (http://www.oracle.com/technetwork/java/index.html)

  1. 설치순서
    1. JDK 설치
      1. 알아서 잘....
    2.  EAP 압축해제 (/jboss/jboss-eap-6.2)
      #unzip jboss-eap-6.2.0.zip
    3. 2.3 Domain 폴더 복사 (DomainController와 HostContoller 껍대기 만들기)
      1. 도메인 정보를 구성할 폴더, 필요하면 협의해서 임의지정
        #mkdir /jboss/domains 
      2. 설치본에 있는 Template 폴더(/jboss/jboss-eap-6.2/domain)를 복사하여 필요한만큼 생성한다.
        #cp -R /jboss/jboss-eap-6.2/domain /jboss/domains/master (Domain Controller이므로 Domain중 1개만 구성한다. HA가능)
        #cp -R /jboss/jboss-eap-6.2/domain /jboss/domains/slave (HostController 는 서버당 1개씩 구성한다.)
        Icon
        master 또는 DomainController 라고 부르는 서버는
        같은 도메인내의 Slave(Host Controller)와 통신하며
        정책 및 배포 등을 중앙집중적으로 관리할 수 있도록 한다. (Weblogic의 AdminServer와 유사함)
        바이너리는 Master나 Slave나 차이가 없으나(설치본에서 domain 이라는 폴더를 복사하여 사용한다)
        폴더안에 host-master.xml 과 host-slave.xml중 어떤 config를 사용하느냐에 따라 동작이 결정된다.

        slave 또는 HostController 라고 부르는 서버는 
        물리서버(또는 가상화서버)당 1개를 구성하고 
        해당 Slave HostController에 설정파일에 구성정보를 추가함으로써
        하위에 Server(Weblogic의 Managed Server)를 구성하는 형태이다. 
        Weblogic은 Admin - Instance(Managed Server), 
        Jboss는 Master(DomainContoller) - Slave(HostController) - Instance(Server) 구조
        Instance 부분이 weblogic에서 Managed Server이다. ( Jboss는 hostController Process가 각각 서버에 하나씩 추가된다)
      3. 구동 정지및 모니터링을 위한 쉡 스크립트(rockplace 자체제작)를 복사하여 넣는다
        스크립트에 실행권한 추가
        #chmod +x /jboss/EAP6_Domain_Script/master/*
        #chmod +x /jboss/EAP6_Domain_Script/slave/*
      4. master 폴더의 스크립트 : domain Cotroller용으로 사전준비된 스크립트
        slave 폴더의 스크립트 : Managed Server용으로 사전준비된 스크립트
        stendalone 폴더의 스크립트 : Domain이 구성없이 단독 서버 구성용으로 사전준비된 스크립트

        #cp /jboss/EAP6_Domain_Script/master/* /jboss/domain/master
        #cp /jboss/EAP6_Domain_Script/slave/* /jboss/domains/slave

      5. 로그가 저장될 공간을 만들어준다. 폴더가 없으면 쌓이지 않는다. (스크립트 개선필요)
        cd /jboss/domains/master
        mkdir -p ./log/controllerlog
        mkdir -p ./log/gclog

    4. 2.4 Master(DomainController) 구성
      1. 2.4.1 Domain env.sh 수정 
        env.sh는 domain.xml 및 host-master.xml에 분산된 설정정보를 환경변수에 넣어주는 역할을 한다.
        여기저기 흩어진 config를 하나의 환경변수에서 수정함으로써 관리편의를 높이기 위해서이다.

        domain.xml에 정의 되어 있더라도 java -D 옵션으로 추가되는 env.sh의 정보가 우선순위가 높다.

        ex : setenv.sh HOST_NAME 은 host-master.xml 의 <host name="master" xmlns="urn:jboss:domain:1.5"> 에서 name attr에 대응된다.

        Jboss 기동시 환경변수를 지정하는곳이다. JDK 및 Master 또는 Slave Config 위치등을 지정한다.
        /jboss/domains/master/env.sh
        Icon
        [jboss@kwonHost master]$ cat env.sh
        #!/bin/sh
        DATE=`date +%Y%m%d%H%M%S`
        ##### JBOSS Directory Setup #####
        #JDK의 위치
        export JAVA_HOME=/jboss/java/jdk1.6.0_45#JBoss 설치본의 위치 (모듈 및 공통 Jar등의 위치참조시 이곳이 필요)
        export JBOSS_HOME=/jboss/jboss-eap-6.2#Domain 즉 Domain Controller나 HostController 등을 구성한 Home위치를 지정
        #설치 후에는 실제 이곳에서 기동 및 정지 작업을 수행한다.
        export DOMAIN_BASE=/jboss/domains#서버 Name을 지정한다. 이곳에 지정한 이름은 환경변수에 포함되며 하위 Config인 host-master.xml에 정의된 server name보다 우선한다.
        export SERVER_NAME=DomainController
        export DOMAIN_BASE_DIR=$DOMAIN_BASE/$SERVER_NAME
        #log파일의 위치를 지정한다.
        export LOG_HOME=$DOMAIN_BASE_DIR/log#Application Deploy 위치를 지정한다. 폴더 없으면 안뜬다.
        export DEPLOY= /jboss/deploy
        ##### Configration File ######Domain Controller의 경우 아래와 같이 domain.xml과 host-mater.xml을 참고하도록 한다.
        export DOMAIN_CONFIG_FILE=domain.xmlexport HOST_CONFIG_FILE= host-master.xml
        # 서버의 이름
        export HOST_NAME=master
        #노드의이름
        export NODE_NAME= $SERVER_NAME
        #jboss를 기동 정지 할 계정을 지정한다. 다른 계정으로 구동/정지 되지 않도록 체크한다.
        export JBOSS_USER= jboss
        ##### Bind Address #####
        #Listener의 바인드 IP를 지정한다 0.0.0.0 이면 모든 NIC IP에 매핑되어 서비스 된다.
        #간혹 OS특성이나 NIC구성차이로 접속이 되지않는 경우
        (NIC가 여러개 이고 OS 구성이 잘못되어 요청에 대합 답이 이상한 NIC로 돌아 나오는 경우가 있음)
        #서버의 특정 IP로만 서비스하고자 하는 경우 IP를 지정할 수 있다.
        export BIND_ADDR=0.0.0.0
        # Cluster구성시 JBoss가 다른 WAS를 찾아내거나 JMS 메시지 분산등을 위해사용하는 MiltiCast 주소대역정보
        # 멀티케스트는 224.0.1.0 ~ 238.255.255.255 까지 범위를 가진다.(TCP Specification)
        # 주의 : 서버에 여러 NIC가 있고 네트워크 구조상 망분리 형태라면 클러스터 구성시 문제가 될 수 있다.
        # 멀티케스트 처리는 보통 OS에 첫번째로 등록되는 NIC를 사용한다.
        # eth0는 web 스위치, eth1은 was 스위치 등 구분 될 경우 서버의 NIC 순서가 다를 경우 통신이 안될 수 있음
        #어떤놈은 WEB switch로 날리고 어떤놈은 WAS Switch로 멀티케스트할 경우 서로를 못찾을 수 있고
        #망분리의 목적이 트레픽을 분리하기 위한 것인데 클러스터 트레픽은 WAS 트레픽인데 WEB Switch를 타고 구성될 경우 관리상 복잡도가 상승할 수 있다.
        #멀티케스트 구성시에는 기본값이라고 그냥 버려두면 안되고 되도록 망관리자에게 어드바이스를 받거나 기본값 사용가능 여부를 확인 받아야 할 필요

        #WAS Clustering 시 사용할 멀티케스트 주소
        export MULTICAST_ADDR=230.1.0.1
        export MULTICAST_PORT= 55200
        #JMS 클러스터링용 멀티케스트 정보
        export JMS_MULTICAST_ADDR= 231.7.0.1#Apache mod_cluster 통신용 멀티케스트 주소
        #Apache mod_cluster.conf 설정시 같은 서비스끼리 잘 맞추어야 한다.
        #잘못하면 이상한 WAS로 서비스를 전달하여 오류발생가능
        export MODCLUSTER_MULTICAST_ADDR= 224.0.1.105
        #스스로도 DomainController(MASTER)에 접속할 수 있는 정보를 알아야 한다.
        #Domain 구성시에 MASTER를 담당하는 evn.sh 는 자신의 주소와 자신의 포트를 등록
        export DOMAIN_MASTER_ADDR= 127.0.0.1#CLI binding IP
        export DOMAIN_MASTER_PORT= 9999 #CLI binding port (브라우져로 접속하면 파일 다운로드 됨 지정 포트 9990에접속
        #Local HostController 바인드용 IP / 0.0.0.0 전체 IP에 바인딩 / 자기자신을 제어하는것이므로 궂이 IP를 박을 필요 없다는
        #127.0.0.1로 바인딩하면 slave들 뿐 아니라 자기자신도(domainIP를 지정한경우) 접속이 안될 수 있으므로 주의
        #DomainContoller는 역할일뿐 자기자신이 HostController역할을 수행한다. (바이너리는 동일하다 역할만 다를뿐)
        export MGMT_ADDR=0.0.0.0
        # Master(DomainController)설정에서는 DomainController이자 HostController이다.
        export HOST_CONTROLLER_PORT= 9999
        export LAUNCH_JBOSS_IN_BACKGROUND= true
        ##### JBoss System module and User module directory #####
        export JBOSS_MODULEPATH= $JBOSS_HOME/modules:$JBOSS_HOME/modules.ext
        # JVM Options : Server
        export JAVA_OPTS= "-server $JAVA_OPTS"
        # Domain Controller의 메모리 설정이다. 관리대상 서버가 늘어나면 모니터링후 조정 필요
        # JVM Options : Memory
        export JAVA_OPTS=" $JAVA_OPTS -Xms64m -Xmx128m -XX:MaxPermSize= 256m"
        export JAVA_OPTS=" $JAVA_OPTS -XX:+PrintGCTimeStamps "
        export JAVA_OPTS=" $JAVA_OPTS -XX:+PrintGCDetails "
        export JAVA_OPTS=" $JAVA_OPTS -Xloggc:log/gclog/gc_$DATE.log "
        export JAVA_OPTS=" $JAVA_OPTS -XX:+UseParallelGC "
        #export JAVA_OPTS=" $JAVA_OPTS -XX:+UseConcMarkSweepGC "
        export JAVA_OPTS=" $JAVA_OPTS -XX:+ExplicitGCInvokesConcurrent "
        export JAVA_OPTS= " $JAVA_OPTS -XX:-HeapDumpOnOutOfMemoryError "
        # Linux Large Page Setting
        #export JAVA_OPTS= " $JAVA_OPTS -XX:+UseLargePages "
        #export JAVA_OPTS=" $JAVA_OPTS -verbose:gc"
        export JAVA_OPTS=" $JAVA_OPTS -Djava.net.preferIPv4Stack=true"
        export JAVA_OPTS=" $JAVA_OPTS -Dorg.jboss.resolver.warning=true"
        export JAVA_OPTS=" $JAVA_OPTS -Dsun.rmi.dgc.client.gcInterval=3600000 "
        export JAVA_OPTS=" $JAVA_OPTS -Dsun.rmi.dgc.server.gcInterval=3600000"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.modules.system.pkgs=org.jboss.byteman"
        export JAVA_OPTS=" $JAVA_OPTS -Djava.awt.headless= true"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.domain.default.config=$DOMAIN_CONFIG_FILE"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.host.default.config=$HOST_CONFIG_FILE"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.domain.base.dir=$DOMAIN_BASE_DIR"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.domain.master.address=$DOMAIN_MASTER_ADDR"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.domain.master.port=$DOMAIN_MASTER_PORT"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.node.name=$NODE_NAME"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.bind.address.management=$MGMT_ADDR"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.bind.address=$BIND_ADDR"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.management.native.port=$HOST_CONTROLLER_PORT"
        #export JAVA_OPTS=" $JAVA_OPTS -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.KQueueSelectorProvider"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.default.multicast.address=$MULTICAST_ADDR"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.default.multicast.port=$MULTICAST_PORT"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.messaging.group.address=$JMS_MULTICAST_ADDR"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.modcluster.multicast.address=$MODCLUSTER_MULTICAST_ADDR"
        #export JAVA_OPTS=" $JAVA_OPTS -Djboss.default.jgroups.stack= tcp"< BR> # Use log4j in application
        export JAVA_OPTS=" $JAVA_OPTS -Dorg.jboss.as.logging.per-deployment=false "
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.server.log.dir= $LOG_HOME/serverlog "
        # Deploy Directory Setting
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.domain.deployment.dir= $DEPLOY "

        echo "================================================"
        echo "JBOSS_HOME=$JBOSS_HOME"
        echo "DOMAIN_BASE=$DOMAIN_BASE"
        echo "SERVER_NAME=$SERVER_NAME"
        echo "DOMAIN_CONFIG_FILE=$DOMAIN_CONFIG_FILE"
        echo "HOST_CONFIG_FILE=$HOST_CONFIG_FILE"
        echo "DOMAIN_CONTROLLER=$DOMAIN_MASTER_ADDR:$DOMAIN_MASTER_PORT"
        echo "================================================"<  


    5. 2.4.2 Admin 계정 생성 (Admin Console에 접속하기 전에 꼭 계정을 만들고 접속한다.)
      1. Console 접속용 Admin 계정을 생성한다. 복사해 넣은 관리 스크립트 중에서 add-user.sh를 사용하면된다.
        #add-user.sh [id] [password]

      2. !! Password가 너무 쉬운경우 생성안됨. 아래쪽 볼드체 부분이 출력되는지 꼭 확인할것


        Icon
        [jboss@kwonHost master]$ ./add-user.sh admin P@ssw0rd
        ================================================
        JBOSS_HOME=/jboss/jboss-eap-6.2
        DOMAIN_BASE=/jboss/domains
        SERVER_NAME=master
        DOMAIN_CONFIG_FILE=domain.xml
        HOST_CONFIG_FILE=host-master.xml
        DOMAIN_CONTROLLER=192.168.56.101:9999
        ================================================
        JAVA_OPTS: -server -Xms64m -Xmx128m -XX:MaxPermSize=256m -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:log/gclog/gc_20140311155028.log -XX:+UseParallelGC -XX:+ExplicitGCInvokesConcurrent -XX:-HeapDumpOnOutOfMemoryError -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Djboss.domain.default.config=domain.xml -Djboss.host.default.config=host-master.xml -Djboss.domain.base.dir=/jboss/domains/master -Djboss.domain.master.address=192.168.56.101 -Djboss.domain.master.port=9999 -Djboss.node.name=master -Djboss.bind.address.management=0.0.0.0 -Djboss.bind.address=0.0.0.0 -Djboss.management.native.port=9999 -Djboss.default.multicast.address=230.1.0.1 -Djboss.default.multicast.port=55200 -Djboss.messaging.group.address=231.7.0.1 -Djboss.modcluster.multicast.address=224.0.1.105 -Dorg.jboss.as.logging.per-deployment=false -Djboss.server.log.dir=/jboss/domains/master/log/serverlog -Djboss.domain.deployment.dir=/jboss/deploy -Djboss.server.config.user.dir=/jboss/domains/master/configuration
        Updated user 'admin' to file '/jboss/domains/master/configuration/mgmt-users.properties'



    6. MASTER(Domain Controller) 구동 및 접속확인 
      1. /jboss/domains/master/start.sh 수행
        아래는 정상로그 출력
        Icon
        [jboss@kwonHost master]$ ./start.sh
        ================================================
        JBOSS_HOME=/jboss/jboss-eap-6.2
        DOMAIN_BASE=/jboss/domains
        SERVER_NAME=master
        DOMAIN_CONFIG_FILE=domain.xml
        HOST_CONFIG_FILE=host-master.xml
        DOMAIN_CONTROLLER=192.168.56.101:9999
        ================================================
        -server -Xms64m -Xmx128m -XX:MaxPermSize=256m -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:log/gclog/gc_20140311155748.log -XX:+UseParallelGC -XX:+ExplicitGCIn vokesConcurrent -XX:-HeapDumpOnOutOfMemoryError -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.d gc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Djboss.domain.default.config=domain.xml -Djboss.host.default.con fig=host-master.xml -Djboss.domain.base.dir=/jboss/domains/master -Djboss.domain.master.address=192.168.56.101 -Djboss.domain.master.port=9999 -Djboss.node.name=mast er -Djboss.bind.address.management=0.0.0.0 -Djboss.bind.address=0.0.0.0 -Djboss.management.native.port=9999 -Djboss.default.multicast.address=230.1.0.1 -Djboss.defau lt.multicast.port=55200 -Djboss.messaging.group.address=231.7.0.1 -Djboss.modcluster.multicast.address=224.0.1.105 -Dorg.jboss.as.logging.per-deployment=false -Djbos s.server.log.dir=/jboss/domains/master/log/serverlog -Djboss.domain.deployment.dir=/jboss/deploy
        mkdir: `nohup' 디렉토리를 만들 수 없습니다: 파일이 있습니다
        mv: cannot move `master.out' to `./log/nohup/master.out.20140311155748': 그런 파일이나 디렉터리가 없습니다
        nohup: redirecting stderr to stdout
        JBOSS_HOME: /jboss/jboss-eap-6.2
        JAVA: /jboss/jdk/bin/java
        JAVA_OPTS: -server -Xms64m -Xmx128m -XX:MaxPermSize=256m -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:log/gclog/gc_2014031115 5748.log -XX:+UseParallelGC -XX:+ExplicitGCInvokesConcurrent -XX:-HeapDumpOnOutOfMemoryError -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -D sun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Djboss.domain. default.config=domain.xml -Djboss.host.default.config=host-master.xml -Djboss.domain.base.dir=/jboss/domains/master -Djboss.domain.master.address=192.168.56.101 -Djb oss.domain.master.port=9999 -Djboss.node.name=master -Djboss.bind.address.management=0.0.0.0 -Djboss.bind.address=0.0.0.0 -Djboss.management.native.port=9999 -Djboss .default.multicast.address=230.1.0.1 -Djboss.default.multicast.port=55200 -Djboss.messaging.group.address=231.7.0.1 -Djboss.modcluster.multicast.address=224.0.1.105 -Dorg.jboss.as.logging.per-deployment=false -Djboss.server.log.dir=/jboss/domains/master/log/serverlog -Djboss.domain.deployment.dir= /jboss/deploy
        =========================================================================
        15:57:49,328 INFO [org.jboss.modules] (main) JBoss Modules version 1.3.0.Final-redhat-2
        15:57:49,546 INFO [org.jboss.as.process.Host Controller.status] (main) JBAS012017: Starting process 'Host Controller'[Host Controller] 15:57:50,376 INFO [org.jboss.modules] (main) JBoss Modules version 1.3.0.Final-redhat-2
        [Host Controller] 15:57:50,517 INFO [org.jboss.msc] (main) JBoss MSC version 1.0.4.GA-redhat-1
        [Host Controller] 15:57:50,645 INFO [org.jboss.as] (MSC service thread 1-1) JBAS015899: JBoss EAP 6.2.0.GA (AS 7.3.0.Final-redhat-14) starting
        [Host Controller] 15:57:51,745 INFO [org.xnio] (MSC service thread 1-2) XNIO Version 3.0.7.GA-redhat-1
        [Host Controller] 15:57:51,767 INFO [org.xnio.nio] (MSC service thread 1-2) XNIO NIO Implementation Version 3.0.7.GA-redhat-1
        [Host Controller] 15:57:51,791 INFO [org.jboss.as] (Controller Boot Thread) JBAS010902: Creating http management service using network interface (management) port ( 9990) securePort (-1)
        [Host Controller] 15:57:51,825 INFO [org.jboss.remoting] (MSC service thread 1-2) JBoss Remoting version 3.2.18.GA-redhat-1
        [Host Controller] 15:57:51,973 INFO [org.jboss.as.remoting] (MSC service thread 1-2) JBAS017100: Listening on 0.0.0.0:9999[Host Controller] 15:57:54,411 INFO [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on http://0.0.0.0:9990/management
        [Host Controller] 15:57:54,413 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://0.0.0.0:9990
        [Host Controller] 15:57:54,414 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss EAP 6.2.0.GA (AS 7.3.0.Final-redhat-14) (Host Controller) started in 4 797ms - Started 12 of 12 services (0 services are passive or on-demand)
      2. 접속확인
        http://192.168.56.101:9990/ (아래 로그인 창 안나오고 welcom 화면 나오면 계정이 없는것이므로 계정을 추가한다.)
      3. 정상 로그인 화면

    7. 2.5 Slave 설정
      1. 2.5.1 slave env.sh 수정 
        /jboss/domains/slave/env.sh
      2. DomainController(Master)의 env.sh와 거의 유사하나 조금다르다 볼드 부분주의
        Icon
        [jboss@kwonHost slave]$ cat env.sh
        #!/bin/sh
        DATE=`date +%Y%m%d%H%M%S`
        ##### JBOSS Directory Setup #####
        export JAVA_HOME=/jboss/java/jdk1.6.0_45
        export JBOSS_HOME=/jboss/jboss-eap-6.2
        export DOMAIN_BASE=/jboss/domains
        #아래 이름은 domain path정보와 연결된다. /jboss/domains/slave1 으로 구성해야함
        export SERVER_NAME=slave1 
        export DOMAIN_BASE_DIR=$DOMAIN_BASE/$SERVER_NAME
        ##### Configration File #####
        export HOST_CONFIG_FILE=host-slave.xml
        export HOST_NAME=slave1
        export NODE_NAME=$SERVER_NAME
        export JBOSS_USER=jboss
        ##### Bind Address #####
        export BIND_ADDR=0.0.0.0
        export MULTICAST_ADDR=230.1.0.1
        export JMS_MULTICAST_ADDR=231.7.0.1
        export MODCLUSTER_MULTICAST_ADDR=224.0.1.105
        #Domain Controller(Production이라면 원격)의 IP와 포트를 적어준다.
        export DOMAIN_MASTER_ADDR=192.168.56.101 #${jboss.domain.master.address}
        export DOMAIN_MASTER_PORT=9999 #${jboss.domain.master.port:9999}
        #Slave 역할인 HostController 자기자신에 접근하기위한 IP를 등록한다. 이건 사실 무엇때문에 속성을 관리하는지 모를일....
        #0.0.0.0 은 모든 소켓에 바인딩 되므로 서버에 할당된 모든 IP로 CLI 수행가능
        #x.x.x.x 특정 IP할당시 해당 IP로 접근하여 CLI 접속가능
        #127.0.0.1 은 Local 바인딩이므로 자기 서버에서만 CLI 수행 가능
        #remote에서 CLI를 수행해야 한다면 0.0.0.0 이나 IP를 지정해야한다.
        export MGMT_ADDR=127.0.0.1 #Local CLIIP# slave로 동작하는 서버 자기자신도 HostController를 가지고 있으므로 해당 포트를 넣어준다.
        export HOST_CONTROLLER_PORT= 19999 #Local CLI PORT
        export LAUNCH_JBOSS_IN_BACKGROUND=true
        ##### JBoss System module and User module directory #####
        export JBOSS_MODULEPATH=$JBOSS_HOME/modules:$JBOSS_HOME/modules.ext
        # JVM Options : Server
        export JAVA_OPTS="-server $JAVA_OPTS"
        # JVM Options : Memory
        export JAVA_OPTS=" $JAVA_OPTS -Xms64m -Xmx128m -XX:MaxPermSize=256m -Xss256k"
        export JAVA_OPTS=" $JAVA_OPTS -XX:+PrintGCTimeStamps "
        export JAVA_OPTS=" $JAVA_OPTS -XX:+PrintGCDetails "
        export JAVA_OPTS=" $JAVA_OPTS -Xloggc:log/gclog/gc_$DATE.log "
        export JAVA_OPTS=" $JAVA_OPTS -XX:+UseParallelGC "
        #export JAVA_OPTS=" $JAVA_OPTS -XX:+UseConcMarkSweepGC "
        export JAVA_OPTS=" $JAVA_OPTS -XX:+ExplicitGCInvokesConcurrent "
        export JAVA_OPTS=" $JAVA_OPTS -XX:-HeapDumpOnOutOfMemoryError "
        # Linux Large Page Setting
        #export JAVA_OPTS=" $JAVA_OPTS -XX:+UseLargePages "
        #export JAVA_OPTS=" $JAVA_OPTS -verbose:gc"
        export JAVA_OPTS=" $JAVA_OPTS -Djava.net.preferIPv4Stack=true"
        export JAVA_OPTS=" $JAVA_OPTS -Dorg.jboss.resolver.warning=true"
        export JAVA_OPTS=" $JAVA_OPTS -Dsun.rmi.dgc.client.gcInterval=3600000 "
        export JAVA_OPTS=" $JAVA_OPTS -Dsun.rmi.dgc.server.gcInterval=3600000"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.modules.system.pkgs=org.jboss.byteman"
        export JAVA_OPTS=" $JAVA_OPTS -Djava.awt.headless=true"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.domain.default.config=$DOMAIN_CONFIG_FILE"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.host.default.config=$HOST_CONFIG_FILE"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.domain.base.dir=$DOMAIN_BASE_DIR"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.domain.master.address=$DOMAIN_MASTER_ADDR"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.domain.master.port=$DOMAIN_MASTER_PORT"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.node.name=$NODE_NAME"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.bind.address.management=$MGMT_ADDR"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.bind.address=$BIND_ADDR"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.management.native.port=$HOST_CONTROLLER_PORT"
        #export JAVA_OPTS=" $JAVA_OPTS -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.KQueueSelectorProvider"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.default.multicast.address=$MULTICAST_ADDR"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.messaging.group.address=$JMS_MULTICAST_ADDR"
        #export JAVA_OPTS=" $JAVA_OPTS -Djboss.modcluster.multicast.address=$MODCLUSTER_MULTICAST_ADDR"
        #export JAVA_OPTS=" $JAVA_OPTS -Djboss.default.jgroups.stack=tcp"
        # Use log4j in application
        export JAVA_OPTS=" $JAVA_OPTS -Dorg.jboss.as.logging.per-deployment=false "

        echo "================================================"
        echo "JBOSS_HOME=$JBOSS_HOME"
        echo "DOMAIN_BASE=$DOMAIN_BASE"
        echo "SERVER_NAME=$SERVER_NAME"
        echo "DOMAIN_CONFIG_FILE=$DOMAIN_CONFIG_FILE"
        echo "HOST_CONFIG_FILE=$HOST_CONFIG_FILE"
        echo "DOMAIN_CONTROLLER=$DOMAIN_MASTER_ADDR:$DOMAIN_MASTER_PORT"
        echo "================================================"
다 되었음
띄우고 Admin Console에서 서버들의 정보가 정상적으로 올라오는지 확인
아래 보면 
Master(Domain Controller)
kwonhost(Host Controller)  : 구성시 jboss.host.name 속성 (domains/master/configuration/host-master.xml 의 host Element) 이 없으면 OS $HOSTNAME을 들고 올라온다. 필요시 지정(스크립트에서 지정하도록 변경 예정임)
server-one(Instance) : 초기 제공되는 Config 파일에 sample로 등록되어 있는 Instance 삭제해도 무방하다
server-two(Instance) : 초기 제공되는 Config 파일에 sample로 등록되어 있는 Instance 삭제해도 무방하다
가 구성된 것을 확인할 수 있다.

끝.  

댓글 없음:

댓글 쓰기

본 블로그의 댓글은 검토후 등록됩니다.