6.5. HA Singleton 배포
애플리케이션을 Singleton 배포로 배포할 수 있습니다. 클러스터된 서버 그룹에 배포하면 Singleton 배포는 지정된 시간에 단일 노드에만 배포됩니다. 배포가 활성 상태인 노드가 중지되거나 실패하면 다른 노드에서 배포가 자동으로 시작됩니다.
다음과 같은 상황에서 Singleton 배포를 여러 노드에 배포할 수 있습니다.
- 지정된 노드의 클러스터된 서버 그룹은 구성 문제나 네트워크 문제로 인해 연결을 설정할 수 없습니다.
다음 구성 파일과 같이 HA가 아닌 구성이 사용됩니다.
-
Jakarta EE 8 Web Profile 또는
standalone구성으로 Jakarta EE 8 Full Platform 프로파일을 지원합니다.-full.xml 구성을 지원하는standalone.xml -
domain.xml구성 - 기본 도메인 프로필 또는 전체 도메인 프로필로 구성됩니다.
-
Jakarta EE 8 Web Profile 또는
비 HA 구성에는 기본적으로 Singleton 하위 시스템이 활성화되어 있지 않습니다. 이 기본 구성을 사용하는 경우 애플리케이션의 성공적인 배포를 촉진하기 위해 Singleton-deployment.xml 파일이 무시됩니다.
그러나 비HA 구성을 사용하면 jboss-all.xml 설명자 파일에 오류가 발생할 수 있습니다. 이러한 오류를 방지하려면 Singleton-deployment.xml 설명자에 단일 배포를 추가합니다. 그런 다음 모든 프로필 유형을 사용하여 애플리케이션을 배포할 수 있습니다.
HA Singleton 동작 제어 정책은 새 Singleton 하위 시스템에서 관리합니다. 배포는 특정 Singleton 정책을 지정하거나 기본 하위 시스템 정책을 사용할 수 있습니다.
배포는 기존 배포에 배포 오버레이로 적용되는 META-INF/singleton-deployment.xml 배포 설명자를 사용하여 Singleton 배포로 식별합니다. 또는 기존의 jboss-all.xml 파일에 필요한 Singleton 구성을 포함할 수 있습니다.
Singleton 배포 정의 또는 선택
배포를 Singleton 배포로 정의하려면 애플리케이션 아카이브에 META-INF/singleton-deployment.xml 설명자를 포함합니다.
Maven WAR 플러그인이 이미 있는 경우 플러그인을 META-INF 디렉토리: 로 마이그레이션할 수 있습니다.
**/src/main/webapp/META- INF
절차
애플리케이션이 EAR 파일에 배포된 경우
jboss요소를-all.xml파일에 있는singleton-deployment.xml 설명자 또는 singleton-deploymentMETA-INF디렉터리의 최상위 레벨로 이동합니다.예제: Singleton 배포 설명자
<?xml version="1.0" encoding="UTF-8"?> <singleton-deployment xmlns="urn:jboss:singleton-deployment:1.0"/>
애플리케이션 배포를 WAR 파일 또는 JAR 파일로 추가하려면
singleton-deployment.xml설명자를 애플리케이션 아카이브의/META-INF디렉터리의 최상위 레벨로 이동합니다.예제: 특정 Singleton 정책이 있는 Singleton 배포 설명자
<?xml version="1.0" encoding="UTF-8"?> <singleton-deployment policy="my-new-policy" xmlns="urn:jboss:singleton-deployment:1.0"/>
선택 사항:
jboss을 정의하려면-all.xml 파일에서 singleton-deploymentjboss-all.xml설명자를 애플리케이션 아카이브의/META-INF디렉터리의 최상위 레벨로 이동합니다.예제:
jboss정의-all.xml에서 singleton-deployment<?xml version="1.0" encoding="UTF-8"?> <jboss xmlns="urn:jboss:1.0"> <singleton-deployment xmlns="urn:jboss:singleton-deployment:1.0"/> </jboss>선택 사항: singleton 정책을 사용하여
jboss을 정의합니다.-all.xml 파일에서 singleton-deploymentjboss-all.xml설명자를 애플리케이션 아카이브의/META-INF디렉터리의 최상위 레벨로 이동합니다.예제: 특정
Singleton 정책을 사용하여정의jboss-all.xml에 Singleton-deployment<?xml version="1.0" encoding="UTF-8"?> <jboss xmlns="urn:jboss:1.0"> <singleton-deployment policy="my-new-policy" xmlns="urn:jboss:singleton-deployment:1.0"/> </jboss>
Singleton 배포 생성
JBoss EAP는 다음 두 가지 선택 정책을 제공합니다.
단순 선택 정책
simple-election-policy는 지정된 애플리케이션이 배포될position특성으로 표시된 특정 멤버를 선택합니다.position속성은 사용 기간이 내림차순으로 정렬된 후보 목록에서 선택할 노드의 인덱스를 결정합니다. 여기서0은 가장 오래된 노드를나타내고,-1은 가장 오래된 노드를 나타내고,-2는 가장 오래된 노드를 나타냅니다. 지정된 위치가 후보 수를 초과하는 경우 모듈러스 작업이 적용됩니다.예제: 관리 CLI를 사용하여
간단한election-policy및 위치가-1로 설정된 새 Singleton 정책 생성batch /subsystem=singleton/singleton-policy=my-new-policy:add(cache-container=server) /subsystem=singleton/singleton-policy=my-new-policy/election- policy=simple:add(position=-1) run-batch
참고새로 생성된 정책
my-new-policy를 기본값으로 설정하려면 다음 명령을 실행합니다./subsystem=singleton:write-attribute(name=default, value=my-new-policy)
예제:
standalone구성-ha.xml을 사용하여 위치가policy-1로 설정된 simple-election-<subsystem xmlns="urn:jboss:domain:singleton:1.0"> <singleton-policies default="my-new-policy"> <singleton-policy name="my-new-policy" cache-container="server"> <simple-election-policy position="-1"/> </singleton-policy> </singleton-policies> </subsystem>임의 선택 정책
random-election-policy는 지정된 애플리케이션이 배포될 임의 멤버를 선택합니다.예제:
random-election-policy를 사용하여 새 Singleton 정책 생성, 관리 CLI 사용batch /subsystem=singleton/singleton-policy=my-other-new-policy:add(cache-container=server) /subsystem=singleton/singleton-policy=my-other-new-policy/election-policy=random:add() run-batch
예제:
standalone구성-ha.xml을 사용하여 random-election-policy<subsystem xmlns="urn:jboss:domain:singleton:1.0"> <singleton-policies default="my-other-new-policy"> <singleton-policy name="my-other-new-policy" cache-container="server"> <random-election-policy/> </singleton-policy> </singleton-policies> </subsystem>참고cache특성은 정책을 추가하기 전에 정의해야 합니다. 이렇게 하지 않으면 사용자 정의 캐시 컨테이너를 사용하는 경우 오류 메시지가 표시될 수 있습니다.-container의 default-cache
환경 설정
또한 Singleton 선택 정책은 클러스터의 하나 이상의 구성원에 대한 기본 설정을 나타낼 수 있습니다. 기본 설정은 노드 이름을 사용하거나 아웃바운드 소켓 바인딩 이름을 사용하여 정의할 수 있습니다. 노드 기본 설정은 항상 선택 정책 결과에 우선합니다.
예제: 관리 CLI를 사용하여 기존 Singleton 정책의 기본 설정 표시
/subsystem=singleton/singleton-policy=foo/election-policy=simple:list-add(name=name-preferences, value=nodeA) /subsystem=singleton/singleton-policy=bar/election-policy=random:list-add(name=socket-binding-preferences, value=binding1)
예제: 관리 CLI를 사용하여 단순election-policy 및 를 사용하여 새 Singleton 정책 생성name- preferences
batch /subsystem=singleton/singleton-policy=my-new-policy:add(cache-container=server) /subsystem=singleton/singleton-policy=my-new-policy/election-policy=simple:add(name-preferences=[node1, node2, node3, node4]) run-batch
새로 생성된 정책 my-new-policy 를 기본값으로 설정하려면 다음 명령을 실행합니다.
/subsystem=singleton:write-attribute(name=default, value=my-new-policy)
예제: standalone 구성-ha.xml을 사용하여 election-policysocket-binding-preferences 를 사용하여 random-
<subsystem xmlns="urn:jboss:domain:singleton:1.0">
<singleton-policies default="my-other-new-policy">
<singleton-policy name="my-other-new-policy" cache-container="server">
<random-election-policy>
<socket-binding-preferences>binding1 binding2 binding3 binding4</socket-binding-preferences>
</random-election-policy>
</singleton-policy>
</singleton-policies>
</subsystem>
쿼럼 정의
네트워크 파티션은 동일한 배포에 대해 여러 Singleton 프로바이더를 트리거하여 동시에 실행될 수 있으므로 Singleton 배포에 특히 문제가 있습니다. 이 시나리오에 대해 보호하기 위해 Singleton 정책은 Singleton 공급자 선택을 수행하기 전에 최소 노드 수가 있어야 하는 쿼럼을 정의할 수 있습니다. 일반적인 배포 시나리오에서는 N/2 + 1의 쿼럼을 사용합니다. 여기서 N은 예상되는 클러스터 크기입니다. 이 값은 런타임 시 업데이트할 수 있으며 해당 Singleton 정책을 사용하여 Singleton 배포에 즉시 영향을 미칩니다.
예제: standalone-ha.xml 파일의 쿼럼 선언
<subsystem xmlns="urn:jboss:domain:singleton:1.0">
<singleton-policies default="default">
<singleton-policy name="default" cache-container="server" quorum="4">
<simple-election-policy/>
</singleton-policy>
</singleton-policies>
</subsystem>
예제: 관리 CLI를 사용한 쿼럼 선언
/subsystem=singleton/singleton-policy=foo:write-attribute(name=quorum, value=3)
Singleton 배포를 사용하여 애플리케이션에 패키지된 서비스의 전체 작업 예는 JBoss EAP와 함께 제공되는 ha-singleton-deployment 빠른 시작을 참조하십시오.
CLI를 사용하여 기본 Singleton 서비스 공급자 결정
Singleton 하위 시스템은 특정 Singleton 정책에서 생성된 각 Singleton 배포 또는 서비스에 대한 런타임 리소스를 노출합니다. 이렇게 하면 CLI를 사용하여 기본 Singleton 공급자를 확인하는 데 도움이 됩니다.
Singleton 공급자 역할을 하는 클러스터 구성원의 이름을 볼 수 있습니다. 예를 들면 다음과 같습니다.
/subsystem=singleton/singleton-policy=default/deployment=singleton.jar:read-attribute(name=primary-provider)
{
"outcome" => "success",
"result" => "node1"
}Singleton 배포 또는 서비스가 설치된 노드의 이름을 볼 수도 있습니다. 예를 들면 다음과 같습니다.
/subsystem=singleton/singleton-policy=default/deployment=singleton.jar:read-attribute(name=providers)
{
"outcome" => "success",
"result" => [
"node1",
"node2"
]
}