2014년 3월 13일 목요일

JBoss EAP6.2 Standalone Install

  1. 용어정의
    1. Instance = Server : WAS (Web Application Server)의 실질적인 서비스를 처리하는 Process
    2. 비용(총소유비용 TCO) : 도입을 위한 직접비용(CApex)외 변경,관리, 운영을 위한 관리비용 등(Opex) 통칭
    3. Domain : EAP 6 Domain 구성 기본자료  참고
    4. Standalone (독립실행형 서버, 이하 std)
      1. WAS의 관리상의 구성방법으로 구분하자면 아래와 같다
        1. Domain
          1. WAS Instance들을 관리상의 개념으로 묶어서 관리하는 구성(weblogic, webspher, JBoss EAP6 등이 Managed Domain 지원)
        2. Standalone
          1. WAS Instance를 각각 독립적으로 관리하는 구성  (일반적인 여타 tomcat, resin 등 OSS WAS)
      2. recommend
        1. Domain Concept : 대용량 사이트에서 하나의 서비스에 다수의 Instance를 관리하는 곳, 또는 HA가 필요한 작은 서비스가 여러개 있어 전체 Instance가 많을때  Domain 형태가 권장됨
          1. 장점
            1. Web APP Deploy를 통합하여 관리하는 장점(한번의 Deploy, 타켓팅 추가로 WAS Instance에 반영가능)
            2. WAS Config의 형상관리 장점(한번의 수정으로 다수의 WAS에 적용, 물론 모든 속성이 다 되는것이 아니다. 일부)
            3. Logical한 구조를 형상화 했을때 관리적면에서 직관적임(장애, 서비스검토시 장점)
            4. HA 구성시 편의성
          2. 단점
            1. Std 보다 초기 구축에 노력이 더 필요함 (Domain 구조 설계, Domain Controller 구성, HostController 구성 등 엔지니어의 구축비용)
            2. Domain 관리 구조에 대한 이해가 필요(운영자의 초기 교육을 위한 비용)
            3. 추가 system resource 점유(std에 없는 관리를 위한 추가 process 구동필요,  운영상 영향이 있을 정도로 많지는 않음)
            4. Config가 공유되므로(WAS Booting시 Domain에서 Config를 참조하여 구동된다.) 잘못된 Config는 전체에 영향을 미칠 수 있다.
              ■ JBoss EAP6 초기 기동시 메모리 점유
              JVM옵션은 기본값 설정에서 RSS 기준
              아래값은 절대 값이 아님. JVM 옵션에 따라 변동이 있을 수 있음
              (예를들어 Xms와 Xmx를 동일하게 하는경우 설정된 값으로 RSS 소모됨)

              Process Controller : 50M (큰 변동 없을듯???)
              Domain Controller(MASTER) : 156M (관리대상 Slave가 많아지면 늘어날 수 있음)
              Host Controller(SLAVE) : 139M (관리 Instance가 많아지면 늘어날 수 있음)
              Instance : 417M (이놈은 서비스를 위해 지정한 대로 복불복임, 좌측 값은 설치시 만들어지는 sample instance의 점유값 임)
              top - 17:50:25 up 1 day, 7:47, 5 users, load average: 1.75, 0.54, 0.25
              Tasks: 108 total, 1 running, 105 sleeping, 2 stopped, 0 zombie
              Cpu(s): 62.9%us, 3.3%sy, 0.0%ni, 33.4%id, 0.3%wa, 0.0%hi, 0.0%si, 0.0%st
              Mem: 1922488k total, 1626496k used, 295992k free, 56976k buffers
              Swap: 835576k total, 1112k used, 834464k free, 291484k cached
              PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
              11970 jboss 20 0 2392m 417m 16m S 1.7 22.3 0:10.29 /jboss/jdk/bin/java -D[Server:server-one] -XX:PermSize=256m -XX:MaxPermSize=256m -Xms1303m -Xmx1303m -server -Djbo
              11997 jboss 20 0 2405m 353m 16m S 63.1 18.8 0:10.18 /jboss/jdk/bin/java -D[Server:server-two] -XX:PermSize=256m -XX:MaxPermSize=256m -Xms1303m -Xmx1303m -server -Djbo
              10589 jboss 20 0 1137m 156m 15m S 0.3 8.4 0:16.15 /jboss/jdk/bin/java -D[Host Controller] -Dorg.jboss.boot.log.file=/jboss/domains/master/log/host-controller.log -D
              11936 jboss 20 0 1098m 139m 14m S 0.3 7.4 0:05.40 /jboss/jdk/bin/java -D[Host Controller] -Dorg.jboss.boot.log.file=/jboss/domains/slave1/log/host-controller.log -D
              10575 jboss 20 0 1098m 51m 9908 S 0.7 2.8 0:03.31 /jboss/jdk/bin/java -D[Process Controller] -server -Xms64m -Xmx128m -XX:MaxPermSize=256m -XX:+PrintGCTimeStamps -X
              11922 jboss 20 0 1090m 50m 9952 S 0.7 2.7 0:00.85 /jboss/jdk/bin/java -D[Process Controller] -server -Xms64m -Xmx128m -XX:MaxPermSize=256m -Xss256k -XX:+PrintGCTime

        2. Standalone concept : 개발장비, 검증장비, 적은 사용량을 가지는  단순한 사이트, 포털, 쇼핑몰과 같이 대량의 WAS를 Clustering(HA)없이 flat하게 펼칠 경우 오히려 단독형으로 구성하는 것이 관리상 권장될 수 있음
          1. 장점
            1. 초기 구성이 단순하여 노력비용이 상대적으로 낮음 (긴급 증설시  WAS 구성을 잘 정리해 놓는다면 빠르게 작업 가능)
            2. 잘못된 Config등(실수) 으로 인한 문제 발생시 장애 확산범위가 적음  (Config등이 다른 장비나 Instance와 독립적이므로 해당 장비에만 국한됨)
            3. Domain으로 구성하지 않더라도 HA등 구성가능함 (기존의 EAP5 이하 버젼에서 하던 방식으로 구성하면 됨)
          2. 단점
            1. 각각 서버에 대한 관리를 수행해야 하므로 운영시 관리비용이 상대적으로 높음(ex : 10개의 인스턴스는 10번의 작업필요, 1개 APP 10회 배포)
              1. 독립서버를 선호하는 고객사의 특징은 해당 서비스를 오래 운영하여 노하우 및 숙련도가 높은 경우이다.(쉽게말해 손가락이 빠른사람)
              2. 인력중심으로 운영되는 사이트의 경우 Std 형태를 선호할 수 있고 
              3. 생산성을 중요시하는 사이트의 경우 Domain형태를 선호할 수 있다. 
              4. 결국 정답이 없으므로 가이드는 하되 고객사 원하는 방향으로 진행한다.  (Domain이냐 Std냐에 따라 안되지 않는다..다만 수족이 고생할 뿐)
            2. 숙련도에 따라 human fault 발생 위험이 존재하며 발생시 찾기가 쉽지 않다
              1. domain 역시 한번의 실수로 여러 서버에 장애를 유발시킬 위험은 상존한다. 다만 그만큼 찾기도 용의하다
              2. 독립서버에의 경우 실수한곳을 찾기 위한 시간이 숙련도에 따라 아주 작거나(장애아님으로 판단)  엄청나게 오래(장애로 판단)걸 릴 수 있다. 관리적으로 보았을때 어짜피 둘다 장애임
  2. 설치준비
    1. EAP6 설치본  (StandAlone 용 별도 버젼이 있는것이 아니다. Domain 구성할때와 같은 바이너리를 사용하면 된다.)
      1. jboss ORG http://www.jboss.org/products/eap ) org에서도 EAP 버젼 다운로드 가능함, 로그인 필요
      2. Redhat https://access.redhat.com/site/downloads/  (파트너 사이트)
    2. StandAlone 용 스크립트 (rockplace 미들웨어컨설팅본부에 요청)
    3. JDK 1.6 또는 1.7 (http://www.oracle.com/technetwork/java/index.html)
    4. Web Server 연동시 (이 문서에서는 WAS구성만 진행함, WEB Connection은 별도 문서 작성예정)
      1. WebServer(EWS 또는 ApacheORG) (http://apache.org/)
      2. WebServer Connector (Redhat https://access.redhat.com/site/downloads/ )
  3. 환경준비 (Domain 설치시 준비와 별반 차이 없음)
    1.  /etc/hosts 
      1. Loadbalance(web)/Cluster(was) 대상 서버가 많은경우 webserver/was 서버의 hosts에 등록하면 IP로 해깔리기 보다는 이름으로 지정하는것이 정책상 유리(고객사 선호도에 따라 다르므로 협의)

      1. 설치정보 제공 (고객사에 의사결정 요청)
        1. Basic
          1.  
        2. Account
          1. jboss 계정 및 그룹
          2. 필요시 sudo 구성 관련 협의 (1024Port 이하로 서비스 할 경우 root로 구동해야 하나 정책상 sudo 적용이 필요한 경우)
          3. Web GUI Admin ID 및 Password
        3. PATH
          1. EAP 설치위치
          2. log 파일 위치
          3. Deploy Document 위치 (NAS Mount Point 등)
        4. Port 정보 (가이드 제공후 확인받음, 구성전에 해당 포트들에 대한 테스트는 지원인력의 역할)
          1. Web server
            1. http port
            2. ssl port
          2. WEB <-->WAS Proxy
            1. ajp port or httpd port or 연결을 위한 포트 정보
          3. WAS
            JBoss는 기본 domain.xml에 정의된 서비스에 서버의 Off set 값을 더하여 서비스 Port가 결정됨
            인터뷰 전에 기본 설정값을 정의하고 협의
            1. http service 
            2. Admin httpd service
            3. ajp port 
            4. Multicast port
            5. 기타
              1. JMS 등 JBOSS External service(jboss에서는 subsystem이라고 부름) 사용시 
        5. Network
          1. /etc/hosts 등록확인 (필요시 요청, root제공시 직접 등록 등)
          2. Multicast 관련  (WAS Clustering 및 Web-WAS Proxy(mod_cluster) 구성시 필요
            1. UDP Multicast 사용가능 여부 (가이드 제공하여 확인받음)
              1. 고객이 모를 가능성 90%, WAS들이 같은 subnet 인지확인, 같은 subnet에 다른 Multicast사용 솔루션 존재 여부 등 인터뷰를 통하여 확인 필요
            2. Multicast 주소 확인(가이드 제공하여 확인받음
          3. Layer4 LB가 있을 경우
            1. VIP 확인 (고객사 담당 또는 N/W 담당에게 확인)
            2. VIP를 통한 HTTP, HTTPS 서비스 LB 정책 등록 확인(정책 등록이 안되면 웹서버 설치하고 접속이 안되고....여하간 테스트가 번거로움)
              1. Web Server 구성 후 Server Local에서 telnet으로 확인 후  (80, 443 telnet test)
              2. VIP로 접속하여 정상 접속 확인  (Web Server Accesslog를 tail 해 놓으면 어느 서버로 들어오는지 확인가능)
          4. Firewall 정책확인
            설치 후 테스트 진행시 접속이 안되서 웹페이지 확인이 안되거나 , DB 연결 테스트를 못하는 경우가 있음
            되도록 사전에 확인하는것이 좋기는 하나 일일이 챙기기 힘들면 방문시 이야기해서 해결
            1. External --> F/W --> WEB Zone : HTTP, HTTPS Port 정책 확인 (Web Zone 외부에서 Port TEST)
            2. WEB Zone --> F/W --> WAS Zone
              1. mod_jk, mod_Proxy 등은 TCP Port 접근 가능한지 여부 확인 
              2. mod_cluster의 경우 Multicast인 경우 정책상 안될 가능성 높으므로 TCP로 LB할 방안 필요
            3. WAS Zone --> F/W --> DB Zone
              1. WAS 장비에서 DB 장비의 LISTENER의 접속 포트테스트
  4. 설치순서
    1. JDK 설치
      1. 알아서 잘....
    2.  EAP 압축해제 (/jboss/jboss-eap-6.2)
      #unzip jboss-eap-6.2.0.zip
    3. Domain 폴더 복사 ( 독립실행형 서버의 껍대기 만들기)
      1. WAS 정보를 구성할 폴더, 필요하면 협의해서 임의지정  (문서 작성시 임의로 domains 폴더에 아래쪽에 구성하기는 하나 임의 지정가능함)
        #mkdir /jboss/domains
      2. 설치본에 있는 Template 폴더(/jboss/jboss-eap-6.2/standalone)를 복사하여 필요한만큼 생성한다.  (이 문서에서는 1개의 단독실행형 서버 구성까지만 다룬다.)
        [jboss@kwonHost jboss-eap-6.2]$ pwd
        /jboss/jboss-eap-6.2
        [jboss@kwonHost jboss-eap-6.2]$ cp -r ./standalone /jboss/domains/standalone1
        [jboss@kwonHost jboss-eap-6.2]$ cp -r ./standalone /jboss/domains/standalone2  (필요한 만큼)

        물리적인 장비와 가상화장비에서 WAS Instance의 갯수
        물리적 장비와 가상화 장비의 차이는 결국 장비에 보유/할당 된 CPU Processor (processor는 CPU를 의미한다)의 갯수에 따른 
        적정한 Process(WAS 구동시 ps 명령어로 확인되는)갯수에 대한 논의이다.
        과거 multi-core가 없던 시절 또는 Sun(Sparc), HP(PA-RISC), IBM(POWER) 등 RISC칩에서는 일반적으로 1Processor(CPU) 당 1Process(WAS Instance1개)가 정론 이였다.
        하지만 multi-core 기술이 발전하면서 의미가 복잡해 졌다. 아래와 같은 질문에 의견을 제시해본다.

        Q : CPU가 N개 입니다. WAS 인스턴스 몇 개나 띄워야 하나(또는 띄울수 있는가)
        기본적으로 대부분의 솔루션 Process의 구동은 물리적 CPU (Core, HT 논외) 당 1개의를 권장합니다.(WAS 역시 Java Process 이므로 동일함)
        하지만 이것은 Software 개발사 입장에서 러프하게(잘못되도 책임이 없을정도로....)잡은것이고
        운영자 입장에서는 이런 가이드를 그대로 따라했다가는 Over Sizing때문에 비용낭비가 발생합니다.
        하지만....사실 틀린말도 아니니 각자의 입장에서야 어쩔 수 없죠.... ^^;;

        멀티코어 기술이 발전하면 요즘은 1Core = 예전의 1CPU 로 생각하기때문에
        논리적으로 Processor(CPU) 2개 각 Processor 당 Core 4 인 1U 장비의 경우 
        기본은 2개(엔지니어입장), Core를 감안하여 최대 8개(운영자입장) 까지 가능 하겠다고 말할 수 있습니다.
        하지만
        최대 Core수의 70% (8Core * 0.7 = 5.6) 인 6개 Process를 최대로 권장합니다.

        이렇게 권장하는 근거는 1CPU와 Dual Core CPU 간의 성능 향상은 CPU 연산으로는 2배 수가 맞으나 
        Core의 증가로 인하여 core와 Memory 구간의 통신 bandwidth bottleneck(병목구간)이 증가합니다. 
        (H/W적으로 지속적인 개선이 되고 있으나 장비에 따라 다르므로 software측인 WAS입장에서 정확한 수치는 제공하기 어렵다)
        이에 따라 일반적으로 전체 Core수 만큰 WAS Process를 구동하는것은 권장되지 않습니다. (장비의 성능에 따라 모니터링을 통하여 관리 되어야 할 문제)
        특히나 GC 성능을 향상 시키기 위해 병렬(Para) 또는 실시간(CMS) 등의 GC 알고리즘을 적용하면 
        기본값은 OS상에서 확인되는 CPU 개수(=시스템의 Core개수)만큼의 Thread가 JVM 메모리 정리를 위하여 구동되므로(JVM Option으로 수동 조정가능)
        전체 Core 수의 70% 수준으로 WAS Process를 구동시킬 것을 권장합니다.

        Q : 2CPU 장비인 Dell 장비가 있다. CPU당 Core가 8개 짜리인데 인스턴스는 몇 개나 띄워야 하나
        위에서 말했듯이  8 * 2 = 16core
        16core * 0,7 = 11.2 으로 최대 11개정도가 가능하겠습니다. (메모리가 가능하다면...사실 이런 장비는 닥치고 가상화 하는겁니다.)
        튜닝 값에 절대 값은 없습니다. 운영상태를 모니터링해서 더 띄워도 됩니다만.... 
        역설적으로 더 구동해도 된다는것은 그만큼 트래픽이 적다는 의미 이므로
        차라리 서버수를 줄이는 통합 작업을 거치는 것이 좋은 방향일 수 있습니다.

        Q: Hyper-Threading(HT)을 켜면 CPU가 2배 많아진다.(보기에...) 그만큼 WAS를 더 띄워도 되나
        Hyper-Threading(이하 HT)는 로지컬하게 CPU로 들어오는 명령어를 CPU에 Mapping 하는것이 아니라
        가상의 Thread를(LWP : light-weight process 등으로 부름) CPU 같이 보이도록 하여 CPU를 최대한 활용하고자 하는 노력입니다.
        이러한 컨셉은 1개의 요청이 단순하다는 전제를 가집니다.
        일반 PC가 아닌 서버장비에서는 양적으로 엄청나게 많고... 복잡도 면에서 단순부터 복잡까지 다양한 형태의 작업이 수행됩니다.
        이로 인하여 CPU에서 작업을 처리하기 위한 요청이 많고 이는 잦은 Context Switching(이하 CTX)을 유발합니다.
        ctx는 1개의 CPU에 여러개의 작업이 순서대로 들어가 수행되기 위해 작업을 그때그때 교체하여 처리 하는것으로
        많아지면 전체적인 처리성능의 저하를 유발합니다. (EDPS 수업에서 CPU는 시분할 처리 방식이라고 했던 기억을 생각해 보시면....)

        예를 들어 내가 작업 세가지를 동시에 하는데 각 작업을 수행할때 책상을 정리해야 한다면
        몇개의 작업을 동시에 처리할때는 책상을 정리하는 시간이 큰 문제가 아니고 세가지를 순서대로 하는것 보다
        빨리 처리될 수 도 있겟지만 동시 작업량이 점점 늘어나 무한대로 진행하면
        결국 전체 작업시간에서 대부분을 책상을 정리하는 시간으로 소모하게 됩니다.(Over head라고 부르는)
        이러한 기본적인 상식선상에서
        WAS 장비에서 Hyper-Threading은 오히려 성능을 떨어트릴 수 있고
        일반적으로 Server 장비에서는 HT Off를 기본 권장하기도 합니다.
        (HT에 대한 지식수준에 따라 이 부분은 사람들 마다 다르게 생각합니다.... 결국은 고객사이트가 원하는대로 해주는게 진리)

        Q. 서버 가상화 환경에서 4Core를 할당한 VM에는 WAS를 몇개나 만들면 됩니까? (Production환경)
        기본은 위 연산과 동일하게 생각하면 됩니다.
        4 * 0.7 = 2.8 = 3개 이하로 운영하는겁니다.
        다만 가상화 장비에서 CPU를 Over Commit 하는등 Production에 어울리지 않게(?) 운영하고 있다면
        모니터링을 통해서 Bare-metal(물리적인 장비)의 CTX 값이나 CPU 상태를 보고 판단해야 합니다.
        예를들어
        32Core 장비에 WAS VM만 바쁘고 다른 VM이 다 놀고 있다면 전혀 이상이 없겠으나
        Load Avr이 50% 이상인 장비에서 WAS VM이 바쁘게 동작한다면 가상화 장비의 성능에 영향을 받을 수 있습니다.

        Software인 WAS입장에서 Physical 장비의 멀티코어, HT에 대한 가이드는 장비 특성에 너무 많이 의존적이라 사실 가이드를 하면 안됩니다.
        (약은 약사에게 병의 의사에게...를 기억합시다)
        거기다 가상화까지 해 놓는다면 이를 가이드 할 수 는 없습니다.
        다만 기준을 제시 할 수 있으나 절대적이지 않음을 주지시키면서 가이드를 제공해야 합니다.

        .....아.... 울 호갱님들이 내 사이트에 얼마나 들어올지
        일시킨 개발자가 짜놓은 APP 성능이 어떨지
        SQL이 얼마나 빨리 반응할지
        알!수!가! 없다!!
        대체 WAS가 얼마나 부하가 발생할지 사실 알게 무어냐!
        Open전 스트레스테스트와 모니터링만이 살길이다

      3. 구동 정지및 모니터링을 위한 쉡 스크립트를 복사하여 넣는다
        스크립트에 실행권한 추가 및 복사
        [jboss@kwonHost slave]$ pwd
        /jboss/EAP6_Standalone_Script
        [jboss@kwonHost slave]$ chmod +x ./*.sh
        [jboss@kwonHost slave]$ cp /jboss/EAP6_Standalone_Script/* /jboss/domains/standalone1

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

    4. Standalone(독립실행형) 서버 구성
      1. env.sh 수정
        [jboss@kwonHost standalone1]$ cat env.sh
        #!/bin/sh
        DATE=`date +%Y%m%d%H%M%S`
        export JAVA_HOME=/jboss/jdk
        ##### JBOSS Directory Setup #####
        export JBOSS_HOME=/jboss/jboss-eap-6.2
        export DOMAIN_BASE=/jboss/domains
        export SERVER_NAME=standalone1

        ##### Configration File #####
        #Standalone으로 구성하되 프로파일에 따라 지원이 다름
        #standalone.xml : 지정하지 않으면 기본 적용되는 설정, HA나 추가 subsystem(JMS같은) 미포함
        #standalone-ha.xml : Cluster 및 Loadbalance 을 포함하여 구동됨, subsystem 미포함 <== Cluster 구성시 보통 이거
        #standalone-full.xml : HA는 미포함 sybsystem만 포함하여 구동
        #standalone-full-ha.xml : subsystem과 HA를 모두 포함하여 구동됨
        export CONFIG_FILE=standalone-ha.xml
        export HOST_NAME=standalone1
        export NODE_NAME=$SERVER_NAMEexport PORT_OFFSET=10
        export JBOSS_USER=jboss
        #WAS의 서비스 Port
        ##### Bind Address #####
        export BIND_ADDR=0.0.0.0
        export MGMT_ADDR=0.0.0.0
        #export MGMT_ADDR=127.0.0.1
        #Cluster 구성시 필요한 Muticast 정보
        #export MULTICAST_ADDR=230.1.0.1
        #export JMS_MULTICAST_ADDR=231.7.0.1
        #export MODCLUSTER_MULTICAST_ADDR=224.0.1.105

        #Admin GUI 접속을 위한 정보 (이 부분 검토해서 MGMT 부분하고 스크립트 통합 필요)
        #export CONTROLLER_IP=$MGMT_ADDR
        export CONTROLLER_IP=127.0.0.1
        let CONTROLLER_PORT=9999+$PORT_OFFSET
        export CONTROLLER_PORT
        export LAUNCH_JBOSS_IN_BACKGROUND=true
        export LOG_HOME=$DOMAIN_BASE/$SERVER_NAME/log
        #export LOG_HOME=/ctmsap_log
        ##### 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 -Xms2048m -Xmx2048m -XX:MaxPermSize=256m"
        export JAVA_OPTS=" $JAVA_OPTS -XX:+PrintGCTimeStamps "
        export JAVA_OPTS=" $JAVA_OPTS -XX:+PrintGCDetails "
        export JAVA_OPTS=" $JAVA_OPTS -Xloggc:$LOG_HOME/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 "
        export JAVA_OPTS=" $JAVA_OPTS -XX:HeapDumpPath=$LOG_HOME/gclog/java_pid.hprof"
        #JAVA_OPTS="$JAVA_OPTS -Djboss.jvmRoute=jvm1"
        # mod_cluster.jvmroute
        #JAVA_OPTS="$JAVA_OPTS -Djboss.mod_cluster.jvmRoute=node1"
        # Linux Large Page Setting
        #export JAVA_OPTS=" $JAVA_OPTS -XX:+UseLargePages "
        export JAVA_OPTS=" $JAVA_OPTS -verbose:gc"
        export JAVA_OPTS=" $JAVA_OPTS -Xloggc:$LOG_HOME/gclog/gc.log"
        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.server.base.dir=$DOMAIN_BASE/$SERVER_NAME"
        export JAVA_OPTS=" $JAVA_OPTS -Djboss.socket.binding.port-offset=$PORT_OFFSET"
        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.bind_addr=$MULTICAST_ADDR"
        #export JAVA_OPTS=" $JAVA_OPTS -Djboss.default.jgroups.stack=tcp"
        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 -Dserver.mode=local"
        # 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"
        echo "================================================"
        echo "JBOSS_HOME=$JBOSS_HOME"
        echo "DOMAIN_BASE=$DOMAIN_BASE"
        echo "SERVER_NAME=$SERVER_NAME"
        echo "CONFIG_FILE=$CONFIG_FILE"
        echo "BIND_ADDR=$BIND_ADDR"
        echo "PORT_OFFSET=$PORT_OFFSET"
        echo "MULTICAST_ADDR=$MULTICAST_ADDR"
        echo "CONTROLLER=$CONTROLLER_IP:$CONTROLLER_PORT"
        echo "================================================"

    5. Admin Console User 생성
      1. Standalone mode로 기동하면 Admin Console(GUI)가 Instance 상에서 기동된다.
      2. 계정을 아래와 같이 생성합니다.
        #add-user.sh [id] [password]
        !! Password가 너무 쉬운경우 생성안됨. 아래쪽 볼드체 부분이 출력되는지 꼭 확인할것 (8자이상 & 영문자 1개이상 & 특수문자1개이상 )
        [jboss@kwonHost standalone1]$ ./add-user.sh admin 123456a!
        ================================================
        JBOSS_HOME=/jboss/jboss-eap-6.2
        DOMAIN_BASE=/jboss/domains
        SERVER_NAME=standalone1
        CONFIG_FILE=standalone-ha.xml
        BIND_ADDR=0.0.0.0
        PORT_OFFSET=10
        MULTICAST_ADDR=
        CONTROLLER=127.0.0.1:10009
        ================================================
        Added user 'admin' to file '/jboss/domains/standalone1/configuration/mgmt-users.properties'
        Added user 'admin' to file '/jboss/jboss-eap-6.2/domain/configuration/mgmt-users.properties'



    6. 기동 스크립트 실행
      /jboss/domains/standalone1/start.sh

      [jboss@kwonHost standalone1]$ ./start.sh
      ================================================
      JBOSS_HOME=/jboss/jboss-eap-6.2
      DOMAIN_BASE=/jboss/domains
      SERVER_NAME=standalone1
      CONFIG_FILE=standalone-ha.xml
      BIND_ADDR=0.0.0.0
      PORT_OFFSET=10
      MULTICAST_ADDR=
      CONTROLLER=127.0.0.1:10009
      ================================================
      -server -Xms256m -Xmx512m -XX:MaxPermSize=128m -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:/jboss/domains/standalone1/log/gclog/gc_20140313013825.log -XX:+UseParallelGC -XX:+ExplicitGCInvokesConcurrent -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/jboss/domains/standalone1/log/gclog/java_pid.hprof -verbose:gc -Xloggc:/jboss/domains/standalone1/log/gclog/gc.log -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.server.base.dir=/jboss/domains/standalone1 -Djboss.socket.binding.port-offset=10 -Djboss.node.name=standalone1 -Djboss.bind.address.management=0.0.0.0 -Djboss.bind.address=0.0.0.0 -Djboss.default.multicast.address= -Djboss.messaging.group.address= -Djboss.modcluster.multicast.address= -Dserver.mode=local -Dorg.jboss.as.logging.per-deployment=false -Djboss.server.log.dir=/jboss/domains/standalone1/log
      01:36:08,665 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://0.0.0.0:10000
      01:36:08,665 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss EAP 6.2.0.GA (AS 7.3.0.Final-redhat-14) started in 8681ms - Started 131 of 247 services (115 services are passive or on-demand)
      01:38:17,163 INFO [org.apache.coyote.http11] (MSC service thread 1-1) JBWEB003075: Coyote HTTP/1.1 pausing on: http-/0.0.0.0:8090
      01:38:17,164 INFO [org.apache.coyote.http11] (MSC service thread 1-1) JBWEB003077: Coyote HTTP/1.1 stopping on : http-/0.0.0.0:8090
      01:38:17,281 INFO [org.apache.catalina.core] (MSC service thread 1-2) JBWEB001079: Container org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/] has not been started
      01:38:17,270 INFO [org.jboss.modcluster] (ServerService Thread Pool -- 54) MODCLUSTER000002: Initiating mod_cluster shutdown
      01:38:17,287 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) JBAS010409: Unbound data source [java:jboss/datasources/ExampleDS]
      01:38:17,304 INFO [org.apache.coyote.ajp] (MSC service thread 1-2) JBWEB003048: Pausing Coyote AJP/1.3 on ajp-/0.0.0.0:8019
      01:38:17,305 INFO [org.apache.coyote.ajp] (MSC service thread 1-2) JBWEB003051: Stopping Coyote AJP/1.3 on ajp-/0.0.0.0:8019
      01:38:17,350 INFO [org.jboss.as] (MSC service thread 1-2) JBAS015950: JBoss EAP 6.2.0.GA (AS 7.3.0.Final-redhat-14) stopped in 160ms
      nohup: redirecting stderr to stdout
      01:38:26,531 INFO [org.jboss.modules] (main) JBoss Modules version 1.3.0.Final-redhat-2
      01:38:27,096 INFO [org.jboss.msc] (main) JBoss MSC version 1.0.4.GA-redhat-1
      01:38:27,277 INFO [org.jboss.as] (MSC service thread 1-2) JBAS015899: JBoss EAP 6.2.0.GA (AS 7.3.0.Final-redhat-14) starting
      01:38:27,287 DEBUG [org.jboss.as.config] (MSC service thread 1-2) Configured system properties:
      SERVER = standalone1
      [Standalone] =
      file.encoding = UTF-8
      file.encoding.pkg = sun.io
      file.separator = /
      java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment
      java.awt.headless = true
      java.awt.printerjob = sun.print.PSPrinterJob
      java.class.path = /jboss/jboss-eap-6.2/jboss-modules.jar
      java.class.version = 50.0
      java.endorsed.dirs = /jboss/jdk1.6.0_45/jre/lib/endorsed
      java.ext.dirs = /jboss/jdk1.6.0_45/jre/lib/ext:/usr/java/packages/lib/ext
      java.home = /jboss/jdk1.6.0_45/jre
      java.io.tmpdir = /tmp
      java.library.path = /jboss/jdk1.6.0_45/jre/lib/amd64/server:/jboss/jdk1.6.0_45/jre/lib/amd64:/jboss/jdk1.6.0_45/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
      java.net.preferIPv4Stack = true
      java.runtime.name = Java(TM) SE Runtime Environment
      java.runtime.version = 1.6.0_45-b06
      java.specification.name = Java Platform API Specification
      java.specification.vendor = Sun Microsystems Inc.
      java.specification.version = 1.6
      java.util.logging.manager = org.jboss.logmanager.LogManager
      java.vendor = Sun Microsystems Inc.
      java.vendor.url = http://java.sun.com/
      java.vendor.url.bug = http://java.sun.com/cgi-bin/bugreport.cgi
      java.version = 1.6.0_45
      java.vm.info = mixed mode
      java.vm.name = Java HotSpot(TM) 64-Bit Server VM
      java.vm.specification.name = Java Virtual Machine Specification
      java.vm.specification.vendor = Sun Microsystems Inc.
      java.vm.specification.version = 1.0
      java.vm.vendor = Sun Microsystems Inc.
      java.vm.version = 20.45-b01
      javax.management.builder.initial = org.jboss.as.jmx.PluggableMBeanServerBuilder
      javax.xml.datatype.DatatypeFactory = __redirected.__DatatypeFactory
      javax.xml.parsers.DocumentBuilderFactory = __redirected.__DocumentBuilderFactory
      javax.xml.parsers.SAXParserFactory = __redirected.__SAXParserFactory
      javax.xml.stream.XMLEventFactory = __redirected.__XMLEventFactory
      javax.xml.stream.XMLInputFactory = __redirected.__XMLInputFactory
      javax.xml.stream.XMLOutputFactory = __redirected.__XMLOutputFactory
      javax.xml.transform.TransformerFactory = __redirected.__TransformerFactory
      javax.xml.validation.SchemaFactory:http://www.w3.org/2001/XMLSchema = __redirected.__SchemaFactory
      javax.xml.xpath.XPathFactory:http://java.sun.com/jaxp/xpath/dom = __redirected.__XPathFactory
      jboss.bind.address = 0.0.0.0
      jboss.bind.address.management = 0.0.0.0
      jboss.default.multicast.address =
      jboss.home.dir = /jboss/jboss-eap-6.2
      jboss.host.name = kwonhost
      jboss.messaging.group.address =
      jboss.modcluster.multicast.address =
      jboss.modules.dir = /jboss/jboss-eap-6.2/modules
      jboss.modules.system.pkgs = org.jboss.byteman
      jboss.node.name = standalone1
      jboss.qualified.host.name = kwonhost
      jboss.server.base.dir = /jboss/domains/standalone1
      jboss.server.config.dir = /jboss/domains/standalone1/configuration
      jboss.server.data.dir = /jboss/domains/standalone1/data
      jboss.server.deploy.dir = /jboss/domains/standalone1/data/content
      jboss.server.log.dir = /jboss/domains/standalone1/log
      jboss.server.name = kwonhost
      jboss.server.persist.config = true
      jboss.server.temp.dir = /jboss/domains/standalone1/tmp
      jboss.socket.binding.port-offset = 10
      line.separator =
      logging.configuration = file:/jboss/domains/standalone1/configuration/logging.properties
      module.path = /jboss/jboss-eap-6.2/modules:/jboss/jboss-eap-6.2/modules.ext
      org.apache.catalina.connector.URI_ENCODING = UTF-8
      org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING = true
      org.apache.coyote.ajp.DEFAULT_CONNECTION_TIMEOUT = 60000
      org.apache.coyote.http11.DEFAULT_CONNECTION_TIMEOUT = 60000
      org.apache.coyote.http11.Http11Protocol.MAX_HEADER_SIZE = 8192
      org.jboss.as.logging.per-deployment = false
      org.jboss.boot.log.file = /jboss/domains/standalone1/log/server.log
      org.jboss.resolver.warning = true
      org.xml.sax.driver = __redirected.__XMLReaderFactory
      os.arch = amd64
      os.name = Linux
      os.version = 2.6.32-431.el6.x86_64
      path.separator = :
      server.mode = local
      sun.arch.data.model = 64
      sun.boot.class.path = /jboss/jdk1.6.0_45/jre/lib/resources.jar:/jboss/jdk1.6.0_45/jre/lib/rt.jar:/jboss/jdk1.6.0_45/jre/lib/sunrsasign.jar:/jboss/jdk1.6.0_45/jre/lib/jsse.jar:/jboss/jdk1.6.0_45/jre/lib/jce.jar:/jboss/jdk1.6.0_45/jre/lib/charsets.jar:/jboss/jdk1.6.0_45/jre/lib/modules/jdk.boot.jar:/jboss/jdk1.6.0_45/jre/classes
      sun.boot.library.path = /jboss/jdk1.6.0_45/jre/lib/amd64
      sun.cpu.endian = little
      sun.cpu.isalist =
      sun.io.unicode.encoding = UnicodeLittle
      sun.java.command = /jboss/jboss-eap-6.2/jboss-modules.jar -mp /jboss/jboss-eap-6.2/modules:/jboss/jboss-eap-6.2/modules.ext -jaxpmodule javax.xml.jaxp-provider org.jboss.as.standalone -Djboss.home.dir=/jboss/jboss-eap-6.2 -Djboss.server.base.dir=/jboss/domains/standalone1 -DSERVER=standalone1 -P=/jboss/domains/standalone1/env.properties -c standalone-ha.xml
      sun.java.launcher = SUN_STANDARD
      sun.jnu.encoding = UTF-8
      sun.management.compiler = HotSpot 64-Bit Tiered Compilers
      sun.os.patch.level = unknown
      sun.rmi.dgc.client.gcInterval = 3600000
      sun.rmi.dgc.server.gcInterval = 3600000
      user.country = KR
      user.dir = /jboss/domains/standalone1
      user.home = /jboss
      user.language = ko
      user.name = jboss
      user.timezone = ROK
      01:38:27,293 DEBUG [org.jboss.as.config] (MSC service thread 1-2) VM Arguments: -D[Standalone] -XX:+UseCompressedOops -Xms256m -Xmx512m -XX:MaxPermSize=128m -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:/jboss/domains/standalone1/log/gclog/gc_20140313013825.log -XX:+UseParallelGC -XX:+ExplicitGCInvokesConcurrent -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/jboss/domains/standalone1/log/gclog/java_pid.hprof -verbose:gc -Xloggc:/jboss/domains/standalone1/log/gclog/gc.log -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.server.base.dir=/jboss/domains/standalone1 -Djboss.socket.binding.port-offset=10 -Djboss.node.name=standalone1 -Djboss.bind.address.management=0.0.0.0 -Djboss.bind.address=0.0.0.0 -Djboss.default.multicast.address= -Djboss.messaging.group.address= -Djboss.modcluster.multicast.address= -Dserver.mode=local -Dorg.jboss.as.logging.per-deployment=false -Djboss.server.log.dir=/jboss/domains/standalone1/log -Dorg.jboss.boot.log.file=/jboss/domains/standalone1/log/server.log -Dlogging.configuration=file:/jboss/domains/standalone1/configuration/logging.properties
      01:38:29,941 INFO [org.xnio] (MSC service thread 1-1) XNIO Version 3.0.7.GA-redhat-1
      01:38:29,960 INFO [org.jboss.as.server] (Controller Boot Thread) JBAS015888: Creating http management service using socket-binding (management-http)
      01:38:29,962 INFO [org.xnio.nio] (MSC service thread 1-1) XNIO NIO Implementation Version 3.0.7.GA-redhat-1
      01:38:29,988 INFO [org.jboss.remoting] (MSC service thread 1-1) JBoss Remoting version 3.2.18.GA-redhat-1
      01:38:30,037 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014613: Operation ("add") failed - address: ([
      ("socket-binding-group" => "standard-sockets"),
      ("socket-binding" => "jgroups-mping")
      ]) - failure description: "JBAS014704: '' is an invalid value for parameter multicast-address. Values must have a minimum length of 1 characters"
      01:38:30,042 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014613: Operation ("add") failed - address: ([
      ("socket-binding-group" => "standard-sockets"),
      ("socket-binding" => "jgroups-udp")
      ]) - failure description: "JBAS014704: '' is an invalid value for parameter multicast-address. Values must have a minimum length of 1 characters"
      01:38:30,094 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 31) JBAS010280: Activating Infinispan subsystem.
      01:38:30,116 INFO [org.jboss.as.clustering.jgroups] (ServerService Thread Pool -- 35) JBAS010260: Activating JGroups subsystem.
      01:38:30,186 INFO [org.jboss.as.naming] (ServerService Thread Pool -- 41) JBAS011800: Activating Naming Subsystem
      01:38:30,169 INFO [org.jboss.as.jsf] (ServerService Thread Pool -- 38) JBAS012605: Activated the following JSF Implementations: [main, 1.2]
      01:38:30,247 INFO [org.jboss.as.security] (ServerService Thread Pool -- 46) JBAS013171: Activating Security Subsystem
      01:38:30,300 INFO [org.jboss.as.webservices] (ServerService Thread Pool -- 50) JBAS015537: Activating WebServices Extension
      01:38:30,548 INFO [org.jboss.as.connector.logging] (MSC service thread 1-2) JBAS010408: Starting JCA Subsystem (IronJacamar 1.0.23.Final-redhat-1)
      01:38:30,664 INFO [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 27) JBAS010403: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3)
      01:38:30,718 INFO [org.jboss.as.naming] (MSC service thread 1-2) JBAS011802: Starting Naming Service
      01:38:30,722 INFO [org.jboss.as.security] (MSC service thread 1-1) JBAS013170: Current PicketBox version=4.0.19.SP2-redhat-1
      01:38:30,980 INFO [org.jboss.as.mail.extension] (MSC service thread 1-1) JBAS015400: Bound mail session [java:jboss/mail/Default]
      01:38:31,580 INFO [org.apache.coyote.ajp] (MSC service thread 1-1) JBWEB003046: Starting Coyote AJP/1.3 on ajp-/0.0.0.0:8019
      01:38:31,573 INFO [org.apache.coyote.http11] (MSC service thread 1-2) JBWEB003001: Coyote HTTP/1.1 initializing on : http-/0.0.0.0:8090
      01:38:31,598 INFO [org.apache.coyote.http11] (MSC service thread 1-2) JBWEB003000: Coyote HTTP/1.1 starting on: http-/0.0.0.0:8090
      01:38:32,134 INFO [org.jboss.modcluster] (ServerService Thread Pool -- 52) MODCLUSTER000001: Initializing mod_cluster ${project.version}
      01:38:32,297 INFO [org.jboss.modcluster] (ServerService Thread Pool -- 52) MODCLUSTER000032: Listening to proxy advertisements on /224.0.1.105:23364
      01:38:32,395 INFO [org.infinispan.configuration.cache.EvictionConfigurationBuilder] (ServerService Thread Pool -- 31) ISPN000152: Passivation configured without an eviction policy being selected. Only manually evicted entities will be passivated.
      01:38:32,504 INFO [org.infinispan.configuration.cache.EvictionConfigurationBuilder] (ServerService Thread Pool -- 31) ISPN000152: Passivation configured without an eviction policy being selected. Only manually evicted entities will be passivated.
      01:38:33,038 INFO [org.jboss.ws.common.management] (MSC service thread 1-1) JBWS022052: Starting JBoss Web Services - Stack CXF Server 4.2.3.Final-redhat-1
      01:38:33,397 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) JBAS010400: Bound data source [java:jboss/datasources/ExampleDS]
      01:38:33,755 INFO [org.jboss.as.remoting] (MSC service thread 1-2) JBAS017100: Listening on 0.0.0.0:10009
      01:38:33,820 INFO [org.jboss.as.server.deployment.scanner] (MSC service thread 1-2) JBAS015012: Started FileSystemDeploymentService for directory /jboss/domains/standalone1/deployments
      01:38:33,828 INFO [org.jboss.as.remoting] (MSC service thread 1-2) JBAS017100: Listening on 0.0.0.0:4457
      01:38:34,177 INFO [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on http://0.0.0.0:10000/management
      01:38:34,178 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://0.0.0.0:10000
      01:38:34,182 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss EAP 6.2.0.GA (AS 7.3.0.Final-redhat-14) started in 8244ms - Started 131 of 247 services (115 services are passive or on-demand)

    7. 확인
    8. 웹 콘솔에 접속
    9. 서비스 포트에 접속

여기 까지 했다면 


댓글 없음:

댓글 쓰기

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