본문 바로가기
  • 노션에서 삽질한 내용을 정리하는 블로그
자기발전소/# Middleware

[WebLogic] Cluster

by iamlucia 2021. 1. 19.

클러스터


1. What is a WebLogic Server Cluster ? 

확장성과 신뢰성을 높이기 위해 여러 개의 웹로직 서버 인스턴스(동시 실행중인)들로 이루어져있다.

클라이언트 입장에서는 클러스터가 단일한 웹로직 서버 인스턴스로 보인다.

한 클러스터의 멤버인 서버 인스턴스들은 모두동일한 머신 위에 올라갈 수도 있고, 각각 다른 시스템 위에 올라갈 수도 있다.

서버나 머신(시스템)을 추가함으로써 클러스터의 용량을 증가시킬 수 있다.

각 서버 인스턴스는 동일한 버전의 웹로직 서버이어야 한다. 

 

2. Dynamic Cluster ? 

동적인 클러스터는 해당 어플리케이션에서 요구하는 자원에 맞춰 동적으로 스케일업이 가능하다. 

생성될 서버 인스턴스들의 설정을 정의해 놓은 단일의 서버 템플리트를 사용한다.

 

동적 클러스터를 생성하면, 동적인 서버는 미리 설정되며 자동적으로 생성됨으로써 사용자가 필요할 때

쉽게 필요한 서버 인스턴스 의 개수까지 스케일 업할 수 있다.

수동으로 설정하거나 그 서버를 클러스터에 추가할 필요 없이 단순히 동적 서버를 기동하기만 하면 되기 때문이다.

3. HOW a Cluster Relates to a Domain 

클러스터는 도메인의 한 부분이다.

도메인이라, 웹로직 서버 자원의 상호연관되어있는 하나의 세트라고 할 수 있으며, 이는 하나의 단위로 관리된다.

도메인은 클러스터된 서버 또는 클러스터되지않은 서버를 포함할 수 있으며, 여러 개의 클러스터를 포함할 수도 있다.

 

각 도메인에서 하나의 웹로직 서버 인스턴스는 어드민 서버의 역할을 하게된다: 즉, 해당 도메인 내의 다른 서버 인스턴스나 자원을 구성하고 관리하고 모니터링하는 서버가 된다. 각 어드민 서버는 하나의 도메인만을 관리한다. 만약 도메인이 다수의 클러스터를 포함하고 있다면 각 클러스터는 동일한 어드민 서버를 가지는 것이다.

 

한 클러스터의 모든 서버 인스턴스는 반드시 동일한 도메인 내에 있어야 한다. 즉 하나의 클러스터를 다수의 도메인에 걸쳐 "분리"할 수 없다는 것이다.비슷한 의미로, 도메인 간에 자원이나 하위 시스템을 공유할 수 없다.

 

클러스터된 인스턴스는 비클러스터 서버(non-clustered)들과 거의 비슷한데, 유일한 차이점은 클러스터된 인스턴스들은 

failover load-balancing 기능을 제공한다는 것이다. 따라서 비클러스터 서버와 달리 클러스터된 서버의 경우에는 클러스터 구성을 위한 특정 가이드라인을 따라야 한다. 

 

4.Benefits of a Clustering

확장성 : 서비스 중단 없이 원하는 만큼 클러스터의 서버 인스턴스를 추가할 수 있다.

고가용성 : 클러스터를 대상으로 어플리케이션를 배포함으로써 어플리케이션 요소를 클러스터할 수 있다. 하나의 서버인스턴스가 다운되더라도 다른 서버 인스턴스가 어플리케이션 처리를 지속할 수 있다.

 

5. Key Capabilities of a Cluster 

확장성과 고가용성을 가능하게 한 클러스터의 특징을 배워보는 섹션.

 

1) 어플리케이션 Failover

특정 작업을 수행하고 있떤 어플리케이션의 요소(object) 가 어떠한 이유로 사용불가상태가 되었을 때,

그 object의 복제본이 해당 job을 마무리한다.

 

즉, failover 가 잘 이루어지기 위해서는

- 사용가능한 복제본copy가 있어야 한다.

- 모든 object들의 운영 상태와 위치 관련 정보에 failover 관리 프로그램이나 다른 object들이 접근 가능해야 한다.

- 처리 중인 job의 진행상황에 대한 정보에 failover 관리 프로그램이나 다른 object들이 접근 가능해야 한다.

 

*job에 있어서 이루어진 모든 것에 대한 정보는 state 라고 불린다.
웹로직 서버는 "세션 복제" 및 "복제를 알고 있는 스텁(replica-aware stubs)" 기술을 사용하여
이 state에 대한 정보를 유지한다. 
특정 object가 예기치않게 중지되었을 때, 복제 기술은 해당 object의 복제본이
그 전 object가 중지된 부분을 짚어내고 그 job을 마무리할 수 있게 한다. 

 

웹로직서버는 표준기반 통신 기술과 IP 소켓과 JNDI(Java Naming Directory Interface)와 같은 facility 

사용하여 클러스터에 있는 object들의 사용가능성에 대한 정보를 공유하고 유지한다.

(이전 버전과의 호환성을 위해 웹로직 서버는 클러스터 간의 통신을 위한 멀티캐스트 사용을 허용)

 

 

2) 서버 마이그레이션

 

웹로직 서버는 머신 간 클러스터 서버 인스턴의 자동 및 수동 마이그레이션을 지원한다.

이렇게 마이그레이션이 가능한 매니지드 서버를 migratable server라고 부른다.

이는 고가용성에 필요한 환경으로 고안된 특징으로, 이러한 마이그레이션 기능은 다음의 상황에 유용하다.

 

- 싱글톤 서비스(항상 싱글 서버 인스턴스에서 돌아가야 하는)가 방해받지 않고 가용될 수 있게 한다.  

예) 호스팅 서버가 죽었을 때 시행되는 JTA, JMS 트랜잭션 회복 시스템

자동 마이그레이션으로 설정된 매니지드 서버의 경우 중지 이벤트 발생시 다른 머신으로 자동적으로 마이그레이션된다.

 

- 재위치된 매니지드 서버 그리고 그 서버가 호스팅하는 모든 서비스의 처리 과정을 더 쉽게 한다. 

 

서버 마이그레이션 과정은 매니지드 서버를 완전히 재위치시키는 것을 말한다 (IP주소나 호스팅되는 어플리케이션 등)

 

3) 로드 밸런싱

 

로드밸런싱은 쉽게 말해 job의 고른 분포를 말한다. 

(또한 정해진 환경 내의 컴퓨팅 및 네트워킹 자원에 대한 연관된 소통)

 

로드밸런싱을 위해 다음이 필요하다: 

- 하나의 object에 대한 다수의 복제본이 있어야 한다.

- 모든 object의 위치와 운영 상태에 대한 정보가 사용가능해야 한다.

 웹로직 서버는 이러한 정보를 유니캐스트, ip소켓, JNDI를 통해 공유한다. 

 

6. Communications in a Cluster 

1) 웹로직 서버 클러스터 메시징 프로토콜

- 멀티캐스트 : 웹서버 4.0 버전부터 지원되는, UDP 멀티캐스트에 의존하는 프로토콜

- 유니캐스트 : 웹서버 10에 추가된, 1:1 TCP/IP 소켓에 의존하는 프로토콜

 

2) IP 멀티캐스트 사용 

 

- 멀티캐스트란, 다수의 어플리케이션이 특정 IP주소와 포트 넘버를 "구독(subscribe)"하여 메세지에 응답할 수 있게 하는 브로드캐스트 기술

 

- 멀티캐스트 주소는 224.0.0.0 ~ 239.255.255.255 범위의 IP 주소를 가지고, 웹로직 서버의 멀티캐스트 기본값은 239.192.0.0 

멀티캐스트용 포트는 일반적인 UDP 포트 범위(0~65535)를 가지지만 어떤 UDP 포트는 특정 목적을 위해 예약되어 있기 때문에 확인이 필요

 

-멀티캐스트는 어플리케이션에 메시지를 브로드캐스트 하지만, 메시지가 그 어플리케이션에 제대로 전달되는지는 확신할 수 없다. 어플리케이션의 로컬 멀티캐스트 버퍼가 가득차있는 경우, 새로운 멀티캐스트 메시지는 버퍼에 쓰여질 수 없고 어플리케이션은 메시지가 드랍된 것을 안내받지 못하게 된다. 이러한 제한점으로 인해 웹로직 서버 인스턴스는 멀티캐스트로 브로드캐스팅된 메세지를 때때로 놓칠 수 있다는 가능성을 허용한다(allow).