방화벽 open 대상 서비스 포트(5개)를 확인합니다.
부록2 에 명시된 바와 같이 rabbitmq - 5672, 15672 / WorkCenter APP – 8080 / WorkCenter TCP/IP Socket – 8081 의 Inbound / outbound port 설정 여부를 확인합니다.
Socket 통신은 Active-Standby로 구성되며, APP 서비스 구동시 Active 서버에만 8091 port가 활성화됩니다. 윈도우에서 현재 활성화된 포트를 확인하려면, 커맨드 창에서 $netstat –ano 입력합니다. 최초 연결된 1개 서버에만 8091포트가 listening 상태임을 확인할 수 있습니다.
1. Erlang(otp) 과 RabbitMQ 설치 (관리자 권한으로 실행)
C:\Program Files\erl-23.1
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.9
시스템 환경변수 ERLANG_HOME 이 자동으로 설정되었는지 확인합니다.
RabbitMQ Management 플러그인을 설치합니다.
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.9\sbin>로 이동
$rabbitmq-plugins.bat enable rabbitmq_management
Plugin 설치 목록을 확인하려면 $rabbitmq-plugins.bat list 로 확인할 수 있습니다.
[E*] 또는 [e*]로 표시되면 적용 완료된 것입니다.
2. RabbitMQ Clustering 구성 – 참조) https://www.rabbitmq.com/clustering.html
hosts 파일을 확인합니다.
C:\Windows\System32\drivers\etc\hosts
192.168.41.125 PADP842-001 #rabbitmq server-1
192.168.41.127 PADP959-002 #rabbitmq server-2
1번 노드의 erlang.cookie값을 2번 노드 해당 경로의 파일에 업데이트합니다.
아래와 같이 두군데 파일이 위치하며, 파일 숨김 해제 후 확인 가능합니다.
C:\Users\ICTUSER\.erlang.cookie
C:\Windows\System32\config\systemprofile\.erlang.cookie
3. 윈도우 방화벽 끄기
4. RabbitMQ 클러스터 구성
2번 서버 노드에서 윈도우 서비스( CMD > services.msc) 실행 후 RabbitMQ 서비스를 stop 후 restart 합니다. 그리고 아래와 같이 Stop App, Join_Cluster, Start App 순으로 실행합니다.
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.9\sbin 폴더로 이동 후
$rabbitmqctl.bat stop_app
$rabbitmqctl join_cluster --disc rabbit@PADP842-001
// PADP842-001 : 1번 노드의 호스트명
$rabbitmqctl.bat start_app
$rabbitmqctl.bat cluster_status
한 개 서버에서 작업하면, 클러스터링에 의해 자동 복제됩니다.
$rabbitmqctl add_user mquser 1234qwer
$rabbitmqctl.bat list_users
Listing users ...
user tags
mquser [administrator]
guest [administrator]
$rabbitmqctl set_user_tags mquser administrator
$rabbitmqctl delete_user guest
아래 작업(permission, policy)은 Management 에 접속해서 직접 클릭해도 됩니다.
RabbitMQ 에는 Virtual Host(vhost)라는 개념이 존재하는데, Message Queue의 주소라고 생각하면 됩니다. 참고) https://www.rabbitmq.com/vhosts.html
// rabbitmqctl set_permissions [-p <vhostpath>] <user> <conf> <write> <read> 실행
$rabbitmqctl set_permissions -p / mquser ".*" ".*" ".*"
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.9\sbin>rabbitmqctl.bat list_permissions
Listing permissions for vhost "/" ...
user configure write read
mquser .* .* .*
$rabbitmqctl set_policy ha-all "^" "{""ha-mode"":""all"", ""ha-sync-mode"":""automatic""}"
명령어 대신 관리도구를 통해 정책과 권한을 부여할 수 있습니다.
http://<RabbitMQ_Server_IP>:15672/ 사이트 접속 후 로그인(mquser/1234qwer) 후 Admin 메뉴에서 로그 및 DB 정보는 C:\Users\{사용자명}\AppData\Roaming\RabbitMQ\ 에서 확인할 수 있습니다.
1) Admin > Users > mquser 선택 후 setpermission 클릭
2) Admin > Policies > Add/update a policy
ㄴ Name : ha-all
ㄴ Pattern : 없음
ㄴ Appyly to : Exchanges and queues
ㄴ Proiority :
ㄴ Definition : ha-mode = all
ha-sync-mode = automatic
C:\Users\ICTUSER\AppData\Roaming\RabbitMQ\db> dir
디렉터리: C:\Users\ICTUSER\AppData\Roaming\RabbitMQ\db
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2020-12-08 오전 8:12 rabbit@hostname-mnesia
d----- 2020-12-08 오전 8:09 rabbit@hostname-plugins-expand
-a---- 2020-11-25 오후 2:32 90 rabbit@hostname-feature_flags
-a---- 2020-12-08 오전 8:09 4 rabbit@hostname.pid
Windows CMD > services.msc > A.WORKS 서비스 상태를 확인한 후 버전이 다른 경우 서비스를 stop 후 uninstall 합니다. 그리고 다시 서비스를 등록(install) 후 시작(start) 합니다.
1. 기존 서비스 중지 및 제거
C:\>cd %WORKCENTER_HOME%
%WORKCENTER_HOME%\bin\winsw>workcenter-app.exe status
Stopped
%WORKCENTER_HOME%\bin\winsw>workcenter-app.exe uninstall
2. 신규 서비스 버전(예:v3.1.0) 확인 및 라이브러리 적용
C:\>cd %WORKCENTER_HOME%
%WORKCENTER_HOME%\bin\cmd>notepad setenv
SET JAVA_HOME=c:\progra~1\java
SET WORKCENTER_VER=3.1.0
%WORKCENTER_HOME%\bin\winsw>notepad workcenter-api.xml
<env name="WORKCENTER_VER" value="3.1.0"/> //라이브러리 버전 확인
C:\>cd %WORKCENTER_HOME%\lib\dir
Workcenter-admin-version.jar
Workcenter-app-version.jar
3. WorkCenter 설정 파일 확인
Workcenter-app.yml 파일에서 API 서비스 Port, Data Source, RabbitMQ, Cluster, Domain (L4switch_IP:8080), netty tcp port(8081), RabbitMQ Management URI (http://server_node1_ip:15672/api), tokenUrl (http://L4_Switch_IP:8080/oauth/token) 등을 확인합니다.
C:\>cd %WORKCENTER_HOME%
%WORKCENTER_HOME%\conf>notepad workcenter-app.yml
server:
port: 8080
spring:
datasource:
url: jdbc:mariadb://L4switch_IP:3306/aworksdb?autoReconnect=true
username: wcadmin
password: wcadmin
rabbitmq:
addresses: server_node1_ip:5672, server_node2_ip:5672
username: mquser
password: 1234qwer
cluster:
enable: true
members:
- server_node1_ip
- server_node2_ip
domain:
webUrl: L4_Switch_IP:8080
netty:
tcpPort: 8081
rabbitmq:
managementUrl: http://server_node1_ip:15672/api
swagger:
tokenUrl: http://server_node1_ip:8080/oauth/token
윈도우 서비스를 등록합니다.
%WORKCENTER_HOME%\bin\winsw>workcenter-app.exe install
%WORKCENTER_HOME%\bin\winsw>workcenter-app.exe start
windows CMD 명령어 > services.msc > A.WORKS 서비스가 등록 및 시작 상태인지 확인합니다.
4. 인증서 적용
workcenter-app.yml 파일 내의 SSL enabled= true 로 변경하고, http url 은 https 로 변경합니다.
%WORKCENTER_HOME%\conf>workcenter-app.yml
ssl:
enabled: true
key-store: classpath:cert/aworks_store.jks
swagger:
tokenUrl: https://server_node1_ip:8080/oauth/token
적용된 인증서가 사설인증서인 경우 API 서비스에 1회 접속해야 합니다.
윈도우 서비스 재기동 후 웹브라우저에서 접속합니다. https://L4_switch_ip:8080/
인증서 적용시 아래와 같이 키 생성 및 트러스트스토어에 등록한다.
$ keytool -genkey -alias aworks -storetype PKCS12 -keyalg RSA -validity 3650 -keystore aworks_store.jks
$ keytool -export -alias aworks -keystore aworks_store.jks -rfc -file AWORKS_CA.cer
$ keytool -import -alias aworks_trust -file AWORKS_CA.cer -keystore aworks_store.ts
$ keytool -keystore "C:/JDK/Java/jdk1.8.0_161/jre/lib/security/cacerts" -storepass changeit -list -v