Wildfly 복제

1.4 Wildfly 복제

  • Wildfly 서버가 한대만 설정 되어 있기 때문에 설정이 끝난 Wildfly서버를 도커 이미지로 생성후 생성된 이미지로 Wildfly 컨테이너를 하나 더 만들어 보겠습니다.
  1. 도커 이미지 생성
  • 우분투 host 서버로 빠져 나와서 도커 프로세스 확인
  • $ docker ps -a

  • $ docker stop wildfly26.1.3-1  /* 도커 서비스 중지 */
  • 도커 서비스를 중지후 이미지를 생성 합니다.
  • 새로 생성할 이미지는 docker commit <기존컨테이너명><신규이미지명:태그명>
  • $ docker commit wildfly26.1.3-1 wildfly:26.1.3

docker images 명령으로 확인 결과 wildfly:26.1.3로 이미지 생성

1.5 Wildfly 복제된 이미지로 컨테이너 생성

  • $ docker run -d --name wildfly26.1.3-2 -p 8089:8088 -p 9998:9998 -it --privileged=true --hostname wildfly2 --restart no --net net-cbw --ip 10.10.0.32 -v /app/wildfly/was:/app/wildfly/was  wildfly:26.1.3 /sbin/init

 

포트 설정시 호스트 포트 안쓰는 포트와 매핑 해야 한다. 기존 wildfly1에서 사용하는 포트와 똑같이 설정하면 중복 오류가 있기 때문에 사용 포트는 유일해야 한다.

8089와 9998로 변경했고 아이피도 wildfly1 이 10.10.0.31 이기 때문에 wildfly2서버는 10.10.0.32로 설정했다.

wildfly26.1.3-2 컨테이너가 생성이 된 것을 확인 할수 있다.

 

wildfly1번 was와 wildfly2번 was와 세션 동기화 하기 위한 설정이 필요하다.

위에서 톰캣 세션 동기화와 비슷하게 설정을 해야 동기화가 된다.

설정을 해보자.

먼저 wildfly1 서버를 기동후 컨테이너에 접속하여 환경 설정을 해보자.

  • $ docker start wildfly26.1.3-1
  • $ docker exec -it wildfly26.1.3-1 bash
  • $ 환경설정 파일 경로로 이동 : cd /app/domains/sample/configuration

  • $ vi standalone-ha.xml  파일 수정

 

      <subsystem xmlns="urn:jboss:domain:jgroups:9.0">
446     <channels default="ee">

          <!-- udp 를 tcp로 변경 →
447        <channel name="ee" stack="tcp" cluster="ejb"/>
448    </channels>
449    <stacks>
450     <stack name="udp">
451      <transport type="UDP" socket-binding="jgroups-udp"/>
452        <protocol type="RED"/>
453        <protocol type="PING"/>
454        <protocol type="MERGE3"/>
455        <socket-protocol type="FD_SOCK2" socket-binding="jgroups-udp-fd"/>
456        <protocol type="FD_ALL3"/>
457        <protocol type="VERIFY_SUSPECT2"/>
458        <protocol type="pbcast.NAKACK2"/>
459        <protocol type="UNICAST3"/>
460        <protocol type="pbcast.STABLE"/>
461        <protocol type="pbcast.GMS"/>
462        <protocol type="UFC"/>
463        <protocol type="MFC"/>
464        <protocol type="FRAG4"/>
465   </stack>
466   <stack name="tcp">
467   <transport type="TCP" socket-binding="jgroups-tcp"/>

       <!- 추가 →
    <protocol type="org.jgroups.protocols.TCPPING">
    <property name="initial_hosts">10.10.0.31[7600],10.10.0.32[7600]</property>
      <property name="port_range">0</property>
    </protocol>

      <!-- 여기까지 추가 →
473    <socket-protocol type="MPING" socket-binding="jgroups-mping"/>
474        <protocol type="MERGE3"/>
475    <socket-protocol type="FD_SOCK2" socket-binding="jgroups-tcp-fd"/>
476       <protocol type="FD_ALL3"/>
477       <protocol type="VERIFY_SUSPECT2"/>
478        <protocol type="pbcast.NAKACK2"/>
479        <protocol type="UNICAST3"/>
480        <protocol type="pbcast.STABLE"/>
481        <protocol type="pbcast.GMS"/>
482        <protocol type="UFC"/>
483        <protocol type="MFC"/>
484        <protocol type="FRAG4"/>
485      </stack>
486   </stacks>
487 </subsystem>

 

저장후 서버 재기동

  • $  cd ..
  • $ ./stop.sh
  • $ ./start.sh
  • 기동 확인후 원격 터미널 창을 하나 더 띄워서 wildfly 2번 서버 셋팅
  • 1번과 똑같은 방법으로 환경 셋팅
  • 2번 서버 접속
  • root@cbw:~# docker exec -it wildfly26.1.3-2 bash
  • $ 환경설정 파일 경로로 이동 : cd /app/domains/sample/configuration
  • $ vi standalone-ha.xml  파일 수정

 

<subsystem xmlns="urn:jboss:domain:jgroups:9.0">
446  <channels default="ee">
447   <channel name="ee" stack="tcp" cluster="ejb"/>
448  </channels>
449   <stacks>
450   <stack name="udp">
451    <transport type="UDP" socket-binding="jgroups-udp"/>
452      <protocol type="RED"/>
453      <protocol type="PING"/>
454      <protocol type="MERGE3"/>
455     <socket-protocol type="FD_SOCK2" socket-binding="jgroups-udp-fd"/>
456     <protocol type="FD_ALL3"/>
457     <protocol type="VERIFY_SUSPECT2"/>
458     <protocol type="pbcast.NAKACK2"/>
459     <protocol type="UNICAST3"/>
460     <protocol type="pbcast.STABLE"/>
461     <protocol type="pbcast.GMS"/>
462     <protocol type="UFC"/>
463     <protocol type="MFC"/>
464     <protocol type="FRAG4"/>
465  </stack>
466  <stack name="tcp">
467  <transport type="TCP" socket-binding="jgroups-tcp"/>
  <protocol type="org.jgroups.protocols.TCPPING">
  <property name="initial_hosts">10.10.0.31[7600],10.10.0.32[7600]</property>
  <property name="port_range">0</property>
  </protocol>
473 <socket-protocol type="MPING" socket-binding="jgroups-mping"/>
474  <protocol type="MERGE3"/>
475  <socket-protocol type="FD_SOCK2" socket-binding="jgroups-tcp-fd"/>
476     <protocol type="FD_ALL3"/>
477     <protocol type="VERIFY_SUSPECT2"/>
478     <protocol type="pbcast.NAKACK2"/>
479     <protocol type="UNICAST3"/>
480     <protocol type="pbcast.STABLE"/>
481     <protocol type="pbcast.GMS"/>
482     <protocol type="UFC"/>
483     <protocol type="MFC"/>
484     <protocol type="FRAG4"/>
485      </stack>
486    </stacks>
487    </subsystem>

 

  • $ 저장하고 난후에 env.sh  파일 수정
  • $ cd ..
  • $ vi env.sh        wildfly 1번 서버 복제 한거라 아이피를 2번 서버에 맞게 변경해야 한다.

 

  • 아이피를 2번 서버 10.10.0.32로 변경후 저장
  • $ ./start.sh   /* was 기동 */

 

  • root 컨텍스트 변경 아파치에서 wildfly 일때 wildfly  서버 호출하게 설정을 하였기 때문에 컨텍스트를 변경해야 한다.
  • $ cd /app/wildfly/was/WEB-INF  이동
  • $ vi jboss-web.xml  파일 열어서 변경한다.

 

<context-root>/wildfly</context-root> 로 변경

 

  • jboss-web.xml을 수정후 was 1번, was2번 재기동

 

  • 브라우저에서 아파치 서버를 통해서 잘 접속 되는지 확인

 

url : http://192.168.0.120/session.jsp  /* 처음 셋팅한 톰캣 서버 접속 */

  • Session Connect count 도 잘 증가하고 Session ID도 동일하다.

 

/* wildfly는 문제 가 발생했다. 접속은 되는데 세션 동기화가 안되고 있다. */

접속주소 : http://192.168.0.120/wildfly/session.jsp

 

화면을 계속 리프레쉬 하면 Connect count가 증가 되어야 하는데 항상 1이다.

Session ID가 계속 변경이 된다. 

HostName 에 wildfly1번 서버 wildfly2번 서버 번갈아 가며 접속은 되는데 세션 동기화가 안된다.

 

/* 에러를 잡아야 하는데…ㅠ.ㅠ 스스로 잡아 보기를 바란다. */

 

  • $ 환경설정 파일 수정 : cd /app/domains/sample/configuration
  • $ vi standalone-ha.xml

 

<subsystem xmlns="urn:jboss:domain:jgroups:9.0">
  <channels default="ee">
    <channel name="ee" stack="tcp" cluster="ejb"/>
  </channels>
  <stacks>
  <stack name="udp">
    <transport type="UDP" socket-binding="jgroups-udp"/>
      <protocol type="RED"/>
      <protocol type="PING"/>
      <protocol type="MERGE3"/>
      <socket-protocol type="FD_SOCK2" socket-binding="jgroups-udp-fd"/>
      <protocol type="FD_ALL3"/>
      <protocol type="VERIFY_SUSPECT2"/>
      <protocol type="pbcast.NAKACK2"/>
      <protocol type="UNICAST3"/>
      <protocol type="pbcast.STABLE"/>
      <protocol type="pbcast.GMS"/>
      <protocol type="UFC"/>
      <protocol type="MFC"/>
      <protocol type="FRAG4"/>
  </stack>
  <stack name="tcp">
  <transport type="TCP" socket-binding="jgroups-tcp"/>
  <protocol type="org.jgroups.protocols.TCPPING">
<!-- 포트를 수정해 줘야 한다 기본포트 7600 에서 portoffset 8을 적용해서

7600 + 8 = 7608 로 수정해야 한다  —>  
<property name="initial_hosts">10.10.0.31[7608],10.10.0.32[7608]</property>
  <property name="port_range">0</property>
  </protocol>

                        <protocol type="RED"/>

                  <socket-protocol type="MPING" socket-binding="jgroups-mping"/>
                    <protocol type="MERGE3"/>
                    <socket-protocol type="FD_SOCK2" socket-binding="jgroups-tcp-fd"/>
                    <protocol type="FD_ALL3"/>
                    <protocol type="VERIFY_SUSPECT2"/>
                    <protocol type="pbcast.NAKACK2"/>
                    <protocol type="UNICAST3"/>
                    <protocol type="pbcast.STABLE"/>
                    <protocol type="pbcast.GMS"/>
                    <protocol type="UFC"/>
                    <protocol type="MFC"/>
                    <protocol type="FRAG4"/>

                </stack>




 

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

   <!-- 여기 아이피도 was 실제 아이피로 변경해야 함 –>
    <inet-address value="${jboss.bind.address.private:10.10.0.32}"/>
  </interface>
  <interface name="public">
    <inet-address value="${jboss.bind.address:127.0.0.1}"/>
  </interface>
</interfaces>
    <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
        <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
        <socket-binding name="http" port="${jboss.http.port:8080}"/>
        <socket-binding name="https" port="${jboss.https.port:8443}"/>
        <socket-binding name="jgroups-mping" interface="private" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/>
        <socket-binding name="jgroups-tcp" interface="private" port="7600"/>
        <socket-binding name="jgroups-tcp-fd" interface="private" port="57600"/>
        <socket-binding name="jgroups-udp" interface="private" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/>
        <socket-binding name="jgroups-udp-fd" interface="private" port="54200"/>
        <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
        <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
        <socket-binding name="modcluster" multicast-address="${jboss.modcluster.multicast.address:224.0.1.105}" multicast-port="23364"/>
        <socket-binding name="txn-recovery-environment" port="4712"/>
        <socket-binding name="txn-status-manager" port="4713"/>
        <outbound-socket-binding name="mail-smtp">
            <remote-destination host="${jboss.mail.server.host:localhost}" port="${jboss.mail.server.port:25}"/>
        </outbound-socket-binding>
</socket-binding-group>

 

was1번과 2번 수정후 was 재기동

 

다시 브라우저 확인



was1번, was2 번 동기화가 잘 되었다.

 

 

이상으로  Wildfly 스탠드 방식의 설정이 끝났다.

도메인 방식으로 설정 하는 방식도 있는데 나중에 이 부분도 정리 차원에서 작성 해 봐야겠음

 

'IT > 프로그램' 카테고리의 다른 글

PostgreSQL DB 설치  (0) 2024.01.30
마리아 DB 설치  (0) 2024.01.30
아파치 Wildfly 연동  (0) 2024.01.30
Wildfly 테스트 소스 작업  (0) 2024.01.29
도커 우분투22.04에 Wildfly 설치  (0) 2024.01.29