[WebSphere] Liberty Cluster: End-to-End 구축 및 구성 가이드
Summary: WebSphere Liberty Profile(WLP)의 Collective 및 Cluster 기능을 활용한 인프라 구축 가이드입니다. Controller 구성부터 Member 조인, 클러스터링 설정 및 트러블슈팅까지의 전체 과정을 다룹니다.
WebSphere Application Server Liberty Profile(WLP)은 경량화된 구조와 확장성 덕분에 채택률이 높아지고 있습니다. 본 포스트는 WLP Collective와 Clustering 기능을 사용하여 확장 가능한 토폴로지를 구축하는 방법을 단계별로 정리한 엔지니어링 노트입니다.
이 시리즈는 다음 순서로 진행됩니다.
- How to Create and Configure WebSphere Liberty Cluster End-to-End (Current)
- How to Deploy Application in WebSphere Liberty Cluster
- How to Setup Front-End Web Server for WebSphere Liberty Cluster
1. Topology Architecture
이 가이드에서는 Collective Controller 1대와 Collective/Cluster Member 2대로 구성된 토폴로지를 구현합니다. 프론트엔드에는 IBM HTTP Server(IHS)가 배치되며 별도의 배포 서버가 존재하는 구조입니다.
2. Prerequisites & WLP Installation
본 가이드는 WLP 17.0.2 및 CentOS Linux 7.3 환경을 기준으로 작성되었습니다. 설치 전 지원되는 Java 버전이 설치되어 있는지 확인이 필요합니다.
Check System Environment
$> cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
$> ./java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build pxa6480sr4fp5-20170421_01(SR4 FP5))
IBM J9 VM (build 2.8, JRE 1.8.0 Linux amd64-64 Compressed References 20170419_344392)
Base Installation (Machine: 02)
먼저 Controller가 될 머신(Machine: 02)에 WLP를 설치하고 필요한 기능을 추가한 뒤, 이를 패키징하여 Member 서버들(Machine: 03, 04)로 배포하는 전략을 사용합니다.
# Create directory
$> sudo mkdir -p /opt/ibm
# Change ownership
$> sudo chown -R wasadmin:wasgrp /opt/ibm
# Install WLP
$> java -jar wlp-17.0.0.2-all.jar --acceptLicense /opt/ibm
# Verify version
$> cd /opt/ibm/wlp/bin
$> ./productInfo version
Product name: WebSphere Application Server
Product version: 17.0.0.2
Install Required Features
Collective, Cluster, SSL, JMX Connector 등의 필수 기능을 설치합니다.
$> ./installUtility install collectiveController-1.0 collectiveMember-1.0 clusterMember-1.0 websocket-1.1 restConnector-2.0 ssl-1.0 localConnector-1.0 adminCenter-1.0
Package and Distribute
설치된 환경을 wlp_install.jar로 패키징하여 다른 노드에 복제합니다.
# Create defaultServer for packaging context
$> ./server create
# Package server including all binaries
$> ./server package defaultServer --archive=/tmp/wlp_install.jar --include=all
Server defaultServer package complete in /tmp/wlp_install.jar.
생성된 wlp_install.jar를 Machine 03, 04로 전송한 후 동일하게 설치를 진행합니다.
# On Machine 03 & 04
$> sudo mkdir -p /opt/ibm
$> chown -R wasadmin:wasgrp /opt/ibm
$> java -jar wlp_install.jar --acceptLicense /opt/ibm
3. Setup Collective Controller (Machine: 02)
Controller 서버(wlpCntlr)를 생성하고 구성을 초기화합니다.
# Create server
$> ./server create wlpCntlr
# Initialize Collective Controller
$> ./collective create wlpCntlr --keystorePassword=<password> --createConfigFile=/opt/ibm/wlp/usr/servers/wlpCntlr/wlpcntlr_include.xml
위 명령어를 수행하면 인증서 생성 및 wlpcntlr_include.xml 설정 파일이 생성됩니다. 이후 server.xml과 include 파일을 다음과 같이 수정합니다.
Configuration: server.xml (Controller)
<server description="CollectiveController">
<featureManager>
<feature>adminCenter-1.0</feature>
<feature>websocket-1.1</feature>
<feature>restConnector-1.0</feature>
<feature>localConnector-1.0</feature>
</featureManager>
<!-- Include generated config -->
<include location="${server.config.dir}/wlpcntlr_include.xml" />
<httpEndpoint id="defaultHttpEndpoint" httpPort="9080" httpsPort="9443" host="*" />
</server>
Configuration: wlpcntlr_include.xml
자동 생성된 파일에서 quickStartSecurity 부분을 본인의 계정 정보로 수정합니다.
<quickStartSecurity userName="wasadmin" userPassword="{xor}EncryptedPassword..." />
Firewall Configuration
CentOS 방화벽에서 9080, 9443 포트를 허용해야 합니다.
$> sudo firewall-cmd --zone=public --permanent --add-port=9443/tcp
$> sudo firewall-cmd --zone=public --permanent --add-port=9080/tcp
$> sudo firewall-cmd --reload
Start Controller
$> ./server start wlpCntlr
로그(messages.log)에서 CWWKX6011I: The collective controller is ready 메시지를 확인합니다. Admin Center(https://hostname:9443/adminCenter/) 접속도 가능해야 합니다.
4. Setup Collective & Cluster Members
Machine 03과 04에서 멤버 서버를 생성하고 Controller에 Join 시킵니다.
Create & Join Member (Machine: 03)
# Create Server
$> ./server create wlpSrv01
# Join Collective
$> ./collective join wlpSrv01 \
--host=waslibctlr01 \
--port=9443 \
--user=wasadmin \
--password=<password> \
--keystorePassword=<password> \
--createConfigFile=/opt/ibm/wlp/usr/servers/wlpSrv01/wlpsrv01_include.xml
SSL Handshake 과정에서 인증서를 신뢰하겠냐는 프롬프트에 y를 입력합니다.
Configuration: server.xml (Member)
Member 서버의 server.xml에 Cluster 기능을 추가하고, Controller가 배포 관리를 할 수 있도록 remoteFileAccess를 설정합니다.
<server description="Cluster Member">
<featureManager>
<feature>webProfile-7.0</feature>
<feature>restConnector-1.0</feature>
<feature>localConnector-1.0</feature>
<!-- Added for Clustering -->
<feature>clusterMember-1.0</feature>
</featureManager>
<include location="${server.config.dir}/wlpsrv01_include.xml" />
<!-- Define Cluster Name -->
<clusterMember name="wlpCluster"/>
<httpEndpoint id="defaultHttpEndpoint" httpPort="9081" httpsPort="9444" host="*" />
<!-- Write Access for Controller -->
<remoteFileAccess>
<writeDir>${server.config.dir}</writeDir>
</remoteFileAccess>
</server>
Machine: 04 (wlpSrv02)에 대해서도 위 과정을 동일하게 반복합니다.
Security Considerations (LTPA)
클러스터 환경에서 세션 공유 및 보안을 위해 모든 멤버는 동일한 LTPA 키를 사용해야 합니다. 한 서버에서 생성된 ltpa.keys 파일을 다른 멤버 서버들의 동일한 경로(${server.ouput.dir}/resources/security/)로 복사합니다.
5. Start Members & Verification
각 노드에서 멤버 서버를 시작합니다.
$> ./server start wlpSrv01 # On Machine 03
$> ./server start wlpSrv02 # On Machine 04
로그 파일에서 다음 메시지들을 확인하여 정상 구동을 검증합니다.
CWWKX8112I: Collective Repository에 호스트 정보 게시 성공.CWWKX7400I: ClusterMember MBean 활성화 (클러스터 조인 성공).
6. Troubleshooting Notes
설정 과정에서 자주 발생하는 오류와 해결 방법입니다.
-
CWWKX0229E (401 Unauthorized / 403 Forbidden)
collective join시 인증 실패.quickStartSecurity의 계정 정보가 일치하는지 확인하십시오. 403 에러의 경우 해당 사용자가administrator-role을 가지고 있는지 확인해야 합니다. -
CWWKS9582E (SSL unresolved)
IIOP 보안 설정 시 SSL 참조 오류.server.xml에 SSL 구성 및 KeyStore 정의가 명확한지 확인하십시오. -
CWWKO0221E / CWWKS9580E (Port in use)
한 호스트에 여러 인스턴스를 띄울 경우 JMS 포트(7276)나 IIOP 포트(2809) 충돌이 발생할 수 있습니다.wasJmsEndpoint및iiopEndpoint설정을 통해 포트를 변경해야 합니다.
Next Step: 클러스터 구성이 완료되었습니다. 다음 포스트에서는 이 클러스터에 애플리케이션을 배포하는 방법을 다룹니다.