본문 바로가기

WEB & WAS/WildFly

[WildFly] 설치 - domain 모드

반응형

개요

wildfly domain 모드에서는 별도의 controller,Host 프로세서를 기동하여, 원격노드의 server(container) 프로세서를 한곳에서 관리할수 있는 기능 및 클러스터를 구성,운영 할수 있도록 해줍니다.

도메인은 하나의 도메인 컨트롤러(Domain Controller) + 하나또는 그이상의 호스트 컨트롤러(Host Controller) + 서버 그룹(Server Group)으로 구성됩니다.

** Host Controller는  Domain Controller에서 구성된 정보(domain.xml)를 읽어들이고, Domain Controller가 장애후 Host Controller 구동시에는 Host Controller가 구동 되지 않습니다. (단 Host Controller가 운영중에 Domain Controller가 장애발생시는 Host Controller는 정상 작동)

[그림 1] WildFly 도메인 구성도

다운로드

  JDK : java.oracle.com

  WildFly : wildfly.org

 

1. JDK 설치

 1.1 JDK 압축해제

  shell> tar zxvf jdk-8u221-linux-x64.tar.gz

 1.2 JAVA 환경 설정    vi .bash_profile

    JAVA_HOME=/JDK_Install_Dir ; export JAVA_HOME

    PATH=$JAVA_HOME/bin:$PATH

[그림 2] JAVA 환경변수

2. WildFly 설치

 2.1 WildFly 압축해제

  shell> tar zxvf wildfly-16.0.0.Final.tar.gz

3. Domain Controller(Master) 설정

 3.1 WildFly_INSTALL_DIR/domain/configuration/host.xml

[그림 3] Domain Controller IP 수정

management(관리콘솔), public(서비스)의 IP(127.0.0.1)를 서비스할 IP(192.168.0.120)주소로 바꿔줍니다. 

** 127.0.0.1 로 되어 있을 경우 로컬에서만 접속 가능

 

 3.2 관리 콘솔 사용자 추가

  shell> WildFly_INSTALL_DIR/bin/add-user.sh

예)아래는 admin이라는 사용자 추가( 디폴트로 admin 사용자가 존재)

[wildfly@spectrumscale01 bin]$ ./add-user.sh 

What type of user do you wish to add? 
 a) Management User (mgmt-users.properties) 
 b) Application User (application-users.properties) 
(a): 

Enter the details of the new user to add. 
Using realm 'ManagementRealm' as discovered from the existing property files. 
Username : admin 
User 'admin' already exists and is enabled, would you like to... 
 a) Update the existing user password and roles 
 b) Enable the existing user 
 c) Type a new username 
(a): a 
Password recommendations are listed below. To modify these restrictions edit the add-user.properties configuration file. 
 - The password should be different from the username 
 - The password should not be one of the following restricted values {root, admin, administrator} 
 - The password should contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s) 
Password : 
Re-enter Password : 
What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[  ]: 
Updated user 'admin' to file '/home/wildfly/programs/wildfly-16.0.0.Final/standalone/configuration/mgmt-users.properties' 
Updated user 'admin' to file '/home/wildfly/programs/wildfly-16.0.0.Final/domain/configuration/mgmt-users.properties' 
Updated user 'admin' with groups  to file '/home/wildfly/programs/wildfly-16.0.0.Final/standalone/configuration/mgmt-groups.properties' 
Updated user 'admin' with groups  to file '/home/wildfly/programs/wildfly-16.0.0.Final/domain/configuration/mgmt-groups.properties' 
Is this new user going to be used for one AS process to connect to another AS process? Enter 
e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls. 
yes/no? no 
[wildfly@spectrumscale01 bin]$ 

 3.3 원격 인증에 사용할 사용자 추가

  - slave 사용자 생성

[wildfly@spectrumscale01 bin]$ ./add-user.sh

What type of user do you wish to add?
 a) Management User (mgmt-users.properties)
 b) Application User (application-users.properties)
(a): a

Enter the details of the new user to add.
Using realm 'ManagementRealm' as discovered from the existing property files.
Username : slave
Password recommendations are listed below. To modify these restrictions edit the add-user.properties configuration file.
 - The password should be different from the username
 - The password should not be one of the following restricted values {root, admin, administrator}
 - The password should contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s)
Password :
Re-enter Password :
What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[  ]:
About to add user 'slave' for realm 'ManagementRealm'
Is this correct yes/no? yes
Added user 'slave' to file '/home/wildfly/programs/wildfly-16.0.0.Final/standalone/configuration/mgmt-users.properties'
Added user 'slave' to file '/home/wildfly/programs/wildfly-16.0.0.Final/domain/configuration/mgmt-users.properties'
Added user 'slave' with groups  to file '/home/wildfly/programs/wildfly-16.0.0.Final/standalone/configuration/mgmt-groups.properties'
Added user 'slave' with groups  to file '/home/wildfly/programs/wildfly-16.0.0.Final/domain/configuration/mgmt-groups.properties'
Is this new user going to be used for one AS process to connect to another AS process?
e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls.
yes/no? yes
To represent the user add the following to the server-identities definition <secret value="UEBzczdvbzc=" />
[wildfly@spectrumscale01 bin]$

4. 원격 노드 설정

host.xml 파일 수정( 위치 : WildFly_Install_Dir/domain/configuration/ )

변경전 변경후

<host xmlns="urn:jboss:domain:10.0" name="master">

<host xmlns="urn:jboss:domain:10.0" name="slave">

** 여기서 name은 노드 이름(노드 구분)

<domain-controller>

     <local/>

</domain-conroller>

<domain-controller>

 <remote protocol="http-remoting" host="192.168.0.120" port="9990"

              username="slave" security-realm="ManagementRealm" />

</domain-conroller>

** username은 3.3 항목에서 추가한 사용자

** host/port 는 마스터 노드의 IP/PORT

 

** 12버전에서는 remote protocol을 사용했었는데, 16버전에서는 http-remoting protocol만 지원됨(언제 바뀌었니?)

 <remote protocol="remote" host="192.168.0.120 port="9990"

              username="slave" security-realm="ManagementRealm" />

<management>

  <security-realms>

    <security-realm name=ManagementRealm">

       <authentication>

           <local default-user="$local" skip-group-loading="true"/>

           <properties  path="mgmt-users.properties" 

                            relative-to="jboss.domain.config.dir"/>

        </authentication>

        <authorization map-groups-to-roles="false">

            <properties path="mgmt-groups.properties" 

                            relative-to="jboss.domain.config.dir"/>

        </authorization>

     </security-realm>

     <security-realm name="ApplicationRealm">

<management>

  <security-realms>

    <security-realm name=ManagementRealm">

       <server-identities>

           <secret value="UEBzczdvbzc=" /> => slave 사용자 패스워드

        </server-identities>

       <authentication>

           <local default-user="$local" skip-group-loading="true"/>

           <properties  path="mgmt-users.properties" 

                            relative-to="jboss.domain.config.dir"/>

        </authentication>

        <authorization map-groups-to-roles="false">

            <properties path="mgmt-groups.properties" 

                            relative-to="jboss.domain.config.dir"/>

        </authorization>

     </security-realm>

     <security-realm name="ApplicationRealm"> 

<interfaces>

 <interface name="management">

  <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>

 </interface>

 <interface name="public">

  <inet-address value="${jboss.bind.address:127.0.0.1}"/>

  </interface>

</interfaces>

<interfaces>

 <interface name="management">

  <inet-address value="${jboss.bind.address.management:192.168.0.121}"/>

 </interface>

 <interface name="public">

  <inet-address value="${jboss.bind.address:192.168.0.121}"/>

 </interface>

</interfaces>

** slave 노드의 서비스 IP로 변경

 

5. 기동 및 종료

 5.1 Domain Controller 및 원격노드 구동

shell> WildFly_Install_Dir/bin/domain.sh

 5.2 원격노드 종료

shell> WildFly_Install_Dir/bin/jboss-cli.sh --connect --controller=192.168.0.121:9990 command=/host=slave:shutdown

 5.3 Domain Controller와 서버 종료  

shell> WildFly_Install_Dir/bin/jboss-cli.sh --connect --controller=192.168.0.120:9990 command=/host=master:shutdown

 5.4 서버(컨테이너) 종료

    shell> jboss-cli.sh --connect --controller=ip:port command=/host=master/server-config=servername:stop

 

6. 확인

 6.1 SLAVE 노드가 정상적으로 접속이 된 경우 Domain Controller에 다음과 같은 로그 발생

[그림 4] slave노드가 등록해제 및 등록된 로그

 6.2 관리 콘솔 확인

[그림 5] slave 노드가 등록된 화면

 

반응형