Solution/EAI

webMethods for Clustering

유가엘 2019. 8. 12. 16:11

클러스터링

정의 : 여러 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를 진행하는 것이 좋다.