1.4 Wildfly 복제
- Wildfly 서버가 한대만 설정 되어 있기 때문에 설정이 끝난 Wildfly서버를 도커 이미지로 생성후 생성된 이미지로 Wildfly 컨테이너를 하나 더 만들어 보겠습니다.
- 도커 이미지 생성
- 우분투 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 |