webMethods for Clustering
클러스터링
정의 : 여러 Integration Server를 단일 가상 서버처럼 배포하고 해당 아키텍처를 활용하는 응용 프로그램을 제공
이점 :
확장성 :수평적 확장성을 제공하므로 동일하거나 유사한 용량의 시스템을 추가하는것만으로 용량을 무제한으로 확장가능하다.
유효성 : 오류로 인해 허용 할 수 없는 중단 시간이 발생할 수 있다.
클러스터링은 여러 Integration Server에 응용 프로그램을 배포함으로써 중단 없는 가용성을 제공
신뢰성 : 독립 서버와 달리 클러스터링은 업무 핵심 응용 프로그램에 필요한 안정성을 제공
서버로의 데이터 분배과정을 거치기 위해서는 Load Balancer가 필요하다.
LoadBalancer 란?
정의 : 트래픽이 많을 때 여러 대의 서버가 분산처리하여 서버의 부하량, 속도저하 등을 고려하여 적절히 분산처리하여 해결해주는 서비스
WebMethods 에서는 클러스터링을 위해 Teracotta를 채택
Terracotta 란?
EHCache 기반의 BigMemory 를 공유하는 기능을 지원하지만, 클러스터링을 위해 사용 가능하다.
클러스터링을 위한 서버 환경
각 서버에는 동일한 라이센스 키, 서비스 패키지, 사용자 계정, ACLS ,DB , Dignostic Port, Messaging Provider가 있어야 한다.
또한 공용 캐시와 자체 Tspace가 필요하다.
EHCache 란?
사용자가 주로 쓰는데이터를 보관해 둠으로써, 요청 시 바로 접근 가능하게 해준다.
경량의 빠른 캐시 엔진
메모리,디스크 저장 자원, 멀티 CPU의 동시 접근 튜닝이 되는 확장성을 가진다.
동기 , 비동기 복사, 피어 자동 발견과 같은 분산 지원을 한다.
메모리를 많이 잡아먹는 Method를 별도의 보관을 통하여 빠르게 사용하도록 지원
서버를 운영하기 위해선 이중화가 필요하며 , 크게 두 가지로 나뉜다.(먼저 실행하는 순서에 따라 Active & Passive 가 결정 된다.)
Active - Active : 위 그림과 같이 두개를 병렬로 연결하여 로드 밸런스를 통하여 데이터의 경로를 제어한다.
Active - Standby : HA(High Availability) 클러스터링 솔루션을 사용하며, Active인 서버에서 장애가 발생할 경우
Standby 인 서버를 실행시킴으로 써 가동률을 도모한다. ( 서버 부팅되면서 약 1분 가량의 시간이 소모된다. )
1. SoftwareAGInstaller 의 실행
2. Terracotta 패키지를 선택한 후 진행
3. Teracotta BigMemory-Max Ex 버전 라이센스 키로 진행
4. {IS Directory}\Terracotta\server\wrapper\conf\tc-config-reference.xml
샘플 예시 :{IS Directory}\Terracotta\config-samples\tc-config-reference.xml 설정에 대한 부연설명을 알려준다.
5. 위의 tc-config-reference.xml 을 아래와 같이 변경한다.
<?xml version="1.0" encoding="UTF-8" ?>
<tc:tc-config xmlns:tc="http://www.terracotta.org/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tc-properties>
<property name="l2.nha.dirtydb.autoDelete" value="true" />
<property name="l1.cachemanager.enabled" value="true" />
<property name="logging.maxLogFileSize" value="1024" />
</tc-properties>
<servers>
// 연결할 서버의 ip 및 정보 입력
<server host="192.168.31.79" name="TS79">
<data>../work/server-data</data>
<logs>../work/server-logs</logs>
<index>../work/server-index</index>
<tsa-port bind="192.168.31.79">9510</tsa-port>
<jmx-port bind="192.168.31.79">9520</jmx-port>
<tsa-group-port bind="192.168.31.79">9530</tsa-group-port>
<management-port bind="192.168.31.79">9540</management-port>
<authentication />
<http-authentication>
<user-realm-file>realm.properties</user-realm-file>
</http-authentication>
<offheap>
<enabled>true</enabled>
<maxDataSize>2g</maxDataSize>
</offheap>
</server>
// 내 서버의 ip 및 정보 입력
<server host="192.168.31.80" name="TS80">
<data>../work/server-data</data>
<logs>../work/server-logs</logs>
<index>../work/server-index</index>
<tsa-port bind="192.168.31.80">9510</tsa-port>
<jmx-port bind="192.168.31.80">9520</jmx-port>
<tsa-group-port bind="192.168.31.80">9530</tsa-group-port>
<management-port bind="192.168.31.80">9540</management-port>
<authentication />
<http-authentication>
<user-realm-file>realm.properties</user-realm-file>
</http-authentication>
<offheap>
<enabled>true</enabled>
<maxDataSize>2g</maxDataSize>
</offheap>
</server>
<update-check>
<enabled>true</enabled>
<period-days>10</period-days>
</update-check>
<garbage-collection>
<enabled>true</enabled>
<verbose>false</verbose>
<interval>3600</interval>
</garbage-collection>
<restartable enabled="false" />
<failover-priority>AVAILABILITY</failover-priority>
<client-reconnect-window>120</client-reconnect-window>
</servers>
<clients>
<logs>logs-%i</logs>
</clients>
</tc:tc-config>
6. D:\SoftwareAG103\Terracotta\server\wrapper\conf\wrapper-tsa.conf
60번째 줄의 set.Server_Name 을 메인 서버로 변경한다.
# set the name of the TC server you want to start, found in conf/tc-config.xml
set.SERVER_NAME=TS80 # 내 서버의 별칭을 기재한다.
# Application parameters. Add parameters as needed starting from 1
# The first application parameter is the name of the class whose main
# method is to be called when the application is launched. The class
# name is followed by the number of parameters to be passed to its main
# method. Then comes the actual parameters.
wrapper.app.parameter.1=com.tc.server.TCServerMain
wrapper.app.parameter.2=4
wrapper.app.parameter.3=-f
wrapper.app.parameter.4=../conf/tc-config.xml
wrapper.app.parameter.5=-n
wrapper.app.parameter.6=%SERVER_NAME%
7. D:\SoftwareAG103\Terracotta\server\wrapper\conf\custom_wrapper.conf
아래와 같이 기존에 존재하는 Wrapper를 주석처리하고 신규로 작성한다.
wrapper.app.parameter.13="%WRAPPER_HOSTNAME%"
#wrapper.app.parameter.6="%WRAPPER_HOSTNAME%" #해당 Wrapper를 주석처리한다.
wrapper.app.parameter.6="TS80" #메인으로 둘 서버이름을 기재한다.
wrapper.java.initmemory=2048
wrapper.java.maxmemory=2048
wrapper.java.additional.8=-XX:MaxDirectMemorySize=9223372036854775807
8. 위와 같이 진행하였다면 D:\SoftwareAG103\Terracotta\server\wrapper\logs\wrapper-tsa.log 가 존재하지 않기 때문에
cmd 창에서 D:\SoftwareAG103\Terracotta\server\wrapper\bin\startup.bat을 실행 시켜준다.
9. Terracotta 에 대한 라이센스 경로를 입력해준다.
10. 상대 DB의 정보를 Pool 등록을 한다.
11. Setting > Clustring에서 상대 경로와 동일하게 입력한다.
Terracotta Server Array URLs에 192.168.31.79:9510 , 192.168.31.80:9510 을 배열하면 이중화 진행
12. Terracotta Server 상태 확인방법
server\bin\start-tc-server.bat -f 강제 실행 후, tc-config.xml을 읽어 오게한다.
13. Fix 진행 시, Database Component Configure를 진행하는 것이 좋다.