클러스터는 하나의 논리 엔티티로 함께 작동하는 Application Server 인스턴스 모음입니다. 클러스터는 하나 이상의 Java EE 응용 프로그램에 런타임 환경을 제공합니다. 고가용성 클러스터는 상태 보존형 응용 프로그램 서비스를 클러스터 및 로드 밸런서에 통합합니다.
클러스터를 사용하면 다음과 같은 이점을 얻을 수 있습니다.
고가용성: 클러스터 내 서버 인스턴스에 대한 페일오버 보호를 허용합니다. 한 서버 인스턴스가 중지되면 다른 서버 인스턴스에서 사용 불가능한 서버 인스턴스가 처리하던 요청을 넘겨 받습니다.
확장성: 서버 인스턴스를 클러스터에 추가할 수 있어 시스템 용량을 늘릴 수 있습니다. 로드 밸런서 플러그인이 클러스터 내 사용 가능한 서버 인스턴스로 요청을 배포합니다. 관리자가 서버 인스턴스를 클러스터에 추가하므로 서비스를 중단할 필요가 없습니다.
클러스터의 모든 인스턴스는 다음과 같습니다.
동일한 구성을 참조합니다.
동일한 집합의 배포된 응용 프로그램을 갖습니다(예: Java EE 응용 프로그램 EAR 파일, 웹 모듈 WAR 파일 또는 EJB JAR 파일).
동일한 자원 집합을 가지므로 JNDI 이름 공간도 같습니다.
도메인의 모든 클러스터에는 고유한 이름이 있습니다. 여기서 이 이름은 모든 노드 에이전트 이름, 서버 인스턴스 이름 및 구성 이름에 대해 고유해야 합니다. 또한 이름은 domain으로 지정할 수 없습니다. 클러스터링되지 않은 서버 인스턴스에서 수행하는 것과 동일한 작업(예: 응용 프로그램 배포 및 자원 작성)을 클러스터에서 수행합니다.
클러스터의 설정은 다른 클러스터와 공유될 수 있는 명명된 구성에서 파생됩니다. 다른 서버 인스턴스나 클러스터와 구성을 공유하지 않는 클러스터는 독립 실행형 구성 을 갖는다고 할 수 있습니다. 기본적으로 이 구성의 이름은 cluster_name -config입니다. 여기서 cluster_name은 클러스터의 이름입니다.
다른 클러스터나 인스턴스와 구성을 공유하는 클러스터는 공유 구성을 갖는다고 할 수 있습니다.
클러스터, 서버 인스턴스, 로드 밸런서 및 세션은 다음과 같이 관련되어 있습니다.
서버 인스턴스가 클러스터의 일부일 필요는 없습니다. 그러나 클러스터의 일부가 아닌 인스턴스는 세션 간의 세션 상태 전송을 통한 고가용성을 이용할 수 없습니다.
클러스터 내의 서버 인스턴스를 하나 또는 여러 대의 시스템에 호스트할 수 있습니다. 다른 시스템의 서버 인스턴스를 한 클러스터로 묶을 수 있습니다.
특정한 로드 밸런서는 요청을 여러 클러스터의 서버 인스턴스로 전달할 수 있습니다. 로드 밸런서의 이 기능을 사용하면 서비스 손실 없이 온라인 업그레이드를 수행할 수 있습니다. 자세한 내용은 "클러스터 구성" 장의 "서비스 손실 없이 온라인 업그레이드에 여러 클러스터 사용"을 참조하십시오.
한 클러스터에서 여러 로드 밸런서로부터 요청을 수신할 수 있습니다. 클러스터를 여러 로드 밸런서에서 사용할 경우 각 로드 밸런서에서 동일한 방법으로 클러스터를 구성해야 합니다.
각 세션은 특정 클러스터에 연결됩니다. 따라서 여러 클러스터에 응용 프로그램을 배포할 수 있지만 세션 페일오버는 단일 클러스터 내에서만 발생합니다.
클러스터는 클러스터 내 서버 인스턴스의 세션 페일오버에 대한 안전한 경계 역할을 합니다. 로드 밸런서를 사용하여 서비스 손실 없이 Application Server 내에서 구성 요소를 업그레이드할 수 있습니다.