11.5. 클러스터링


11.5.1. Cryostat 검색 메커니즘 구성

OpenShift에서 JBoss EAP 클러스터링을 활성화하려면 kubernetes.KUBE_PING 또는 dns.DNS_PING 검색 메커니즘을 사용하도록 JBoss EAP 구성에서 Cryostat 프로토콜 스택을 구성합니다.

사용자 지정 standalone.xml 구성 파일을 사용할 수 있지만 환경 변수를 사용하여 이미지 빌드에서 Cryostat를 구성하는 것이 좋습니다.

아래 명령은 환경 변수를 사용하여 OpenShift 이미지용 JBoss EAP에 대한 검색 메커니즘을 구성합니다.

중요

Helm 차트를 사용하여 OpenShift 이미지용 JBoss EAP 상단에 애플리케이션을 배포하는 경우 기본 검색 메커니즘은 dns.DNS_PING 입니다.

dns.DNS_PINGkubernetes.KUBE_PING 검색 메커니즘은 서로 호환되지 않습니다. 검색을 위해 dns.DNS_PING 메커니즘을 사용하고 kubernetes.KUBE_PING 메커니즘을 사용하여 두 개의 독립적인 하위 클러스터에서 슈퍼클러스터를 구성할 수 없습니다. 마찬가지로 롤링 업그레이드를 수행할 때 소스 및 대상 클러스터 둘 다 검색 메커니즘이 동일해야 합니다.

11.5.1.1. KUBE_PING 구성

KUBE_PING Cryostat 검색 메커니즘을 사용하려면 다음을 수행합니다.

  1. KUBE_PING 을 검색 메커니즘으로 사용하도록 Cryostat 프로토콜 스택을 구성해야 합니다.

    JGROUPS_PING_PROTOCOL 환경 변수를 kubernetes.KUBE_PING 으로 설정하여 이 작업을 수행할 수 있습니다.

    JGROUPS_PING_PROTOCOL=kubernetes.KUBE_PING
  2. KUBERNETES_NAMESPACE 환경 변수를 OpenShift 프로젝트 이름으로 설정해야 합니다. 예를 들면 다음과 같습니다.

    KUBERNETES_NAMESPACE=PROJECT_NAME
  3. KUBERNETES_LABELS 환경 변수를 설정해야 합니다. 이는 서비스 수준에서 설정된 라벨 과 일치해야 합니다. 설정되지 않으면 애플리케이션 외부의 Pod(네임스페이스에 있음)가 참여하려고 합니다. 예를 들면 다음과 같습니다.

    KUBERNETES_LABELS=application=APP_NAME
  4. Kubernetes의 REST API에 액세스할 수 있도록 pod가 실행 중인 서비스 계정에 권한을 부여해야 합니다. 이 작업은 OpenShift CLI를 사용하여 수행됩니다. 다음 예제에서는 현재 프로젝트 네임스페이스의 default 서비스 계정을 사용합니다.

    oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default -n $(oc project -q)

    프로젝트 네임스페이스 에서 Cryostat-service-account 사용:

    oc policy add-role-to-user view system:serviceaccount:$(oc project -q):eap-service-account -n $(oc project -q)
    참고

    서비스 계정에 정책을 추가하는 방법에 대한 자세한 내용은 OpenShift에서 애플리케이션 배포를 참조하십시오.

11.5.1.2. DNS_PING 구성

DNS_PING Cryostat 검색 메커니즘을 사용하려면 다음을 수행합니다.

  1. DNS_PING 을 검색 메커니즘으로 사용하도록 Cryostat 프로토콜 스택을 구성해야 합니다.

    JGROUPS_PING_PROTOCOL 환경 변수를 dns.DNS_PING:로 설정하여 이 작업을 수행할 수 있습니다.

    JGROUPS_PING_PROTOCOL=dns.DNS_PING
  2. OPENSHIFT_DNS_PING_SERVICE_NAME 환경 변수는 클러스터의 ping 서비스 이름으로 설정해야 합니다.

    OPENSHIFT_DNS_PING_SERVICE_NAME=PING_SERVICE_NAME
  3. OPENSHIFT_DNS_PING_SERVICE_PORT 환경 변수는 ping 서비스가 노출되는 포트 번호로 설정해야 합니다. DNS_PING 프로토콜은 SRV 레코드에서 포트를 식별하려고 합니다. 그렇지 않으면 기본값은 8888 입니다.

    OPENSHIFT_DNS_PING_SERVICE_PORT=PING_PORT
  4. ping 포트를 노출하는 ping 서비스를 정의해야 합니다. 이 서비스는 헤드리스(ClusterIP=None)여야 하며 다음이 있어야 합니다.

    1. 포트의 이름은 이어야 합니다.
    2. 서비스에 service.alpha.kubernetes.io/tolerate-unready-endpointspublishNotReadyAddresses 속성을 true 로 설정해야 합니다.

      참고
      • service.alpha.kubernetes.io/tolerate-unready-endpointspublishNotReadyAddresses 속성을 모두 사용하여 ping 서비스가 이전 OpenShift 릴리스와 최신 OpenShift 릴리스에서 작동하도록 합니다.
      • 이러한 주석을 생략하면 각 노드가 시작 중에 자체 "1 클러스터"를 형성합니다. 그런 다음 다른 노드가 시작된 후 다른 노드가 감지되지 않으므로 각 노드는 시작 후 클러스터를 다른 노드의 클러스터에 병합합니다.
      kind: Service
      apiVersion: v1
      spec:
          publishNotReadyAddresses: true
          clusterIP: None
          ports:
          - name: ping
            port: 8888
          selector:
              deploymentConfig: eap-app
      metadata:
          name: eap-app-ping
          annotations:
              service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
              description: "The JGroups ping port for clustering."
참고

DNS_PING 은 서비스 계정을 수정할 필요가 없으며 기본 권한을 사용하여 작동합니다.

11.5.2. 클러스터 트래픽을 암호화하도록 Cryostat 구성

OpenShift에서 JBoss EAP에 대한 클러스터 트래픽을 암호화하려면 SYM_ENCRYPT 또는 ASYM_ENCRYPT 프로토콜을 사용하도록 JBoss EAP 구성에서 Cryostat 프로토콜 스택을 구성해야 합니다.

사용자 지정 standalone.xml 구성 파일을 사용할 수 있지만 환경 변수를 사용하여 이미지 빌드에서 Cryostat를 구성하는 것이 좋습니다.

아래 명령은 환경 변수를 사용하여 OpenShift 이미지의 JBoss EAP의 클러스터 트래픽 암호화 프로토콜을 구성합니다.

중요

SYM_ENCRYPTASYM_ENCRYPT 프로토콜은 서로 호환되지 않습니다. 클러스터 트래픽 암호화를 위해 SYM_ENCRYPT 프로토콜을 사용하고 다른 하나는 A SYM_ENCRYPT 프로토콜을 사용하여 두 개의 독립적인 하위 클러스터로 구성할 수 없습니다. 마찬가지로 롤링 업그레이드를 수행할 때 소스 및 대상 클러스터 모두에서 프로토콜을 동일해야 합니다.

11.5.2.1. SYM_ENCRYPT 구성

SYM_ENCRYPT 프로토콜을 사용하여 Cryostat 클러스터 트래픽을 암호화하려면 다음을 수행합니다.

  1. SYM_ENCRYPT 를 암호화 프로토콜로 사용하도록 Cryostat 프로토콜 스택을 구성해야 합니다.

    JGROUPS_ENCRYPT_PROTOCOL 환경 변수를 SYM_ENCRYPT 로 설정하여 이 작업을 수행할 수 있습니다.

    JGROUPS_ENCRYPT_PROTOCOL=SYM_ENCRYPT
  2. JGROUPS_ENCRYPT_KEYSTORE_DIR 환경 변수는 키 저장소를 포함하는 시크릿이 마운트된 디렉터리 경로로 설정해야 합니다. 예를 들면 다음과 같습니다.

    JGROUPS_ENCRYPT_KEYSTORE_DIR=/etc/jgroups-encrypt-secret-volume
  3. JGROUPS_ENCRYPT_KEYSTORE 환경 변수는 지정된 시크릿 내에서 키 저장소 파일의 이름으로 설정해야 합니다. 설정되지 않은 경우 클러스터 통신이 암호화되지 않고 경고가 표시됩니다. 예를 들면 다음과 같습니다.

    JGROUPS_ENCRYPT_KEYSTORE=jgroups.jceks
  4. JGROUPS_ENCRYPT_NAME 환경 변수를 서버 인증서와 연결된 이름으로 설정해야 합니다. 설정되지 않은 경우 클러스터 통신이 암호화되지 않고 경고가 표시됩니다. 예를 들면 다음과 같습니다.

    JGROUPS_ENCRYPT_NAME=jgroups
  5. JGROUPS_ENCRYPT_PASSWORD 환경 변수는 키 저장소 및 인증서에 액세스하는 데 사용되는 암호로 설정해야 합니다. 설정되지 않은 경우 클러스터 통신이 암호화되지 않고 경고가 표시됩니다. 예를 들면 다음과 같습니다.

    JGROUPS_ENCRYPT_PASSWORD=mypassword

11.5.2.2. ASYM_ENCRYPT 구성

참고

JBoss EAP 8.0에는 새로운 버전의 ASYM_ENCRYPT 프로토콜이 포함되어 있습니다. 이전 버전의 프로토콜은 더 이상 사용되지 않습니다. JGROUPS_CLUSTER_PASSWORD 환경 변수를 지정하면 더 이상 사용되지 않는 프로토콜 버전이 사용되며 Pod 로그에 경고가 표시됩니다.

ASYM_ENCRYPT 프로토콜을 사용하여 Cryostat 클러스터 트래픽을 암호화하려면 ASYM_ENCRYPT 를 암호화 프로토콜로 지정하고 elytron 하위 시스템에 구성된 키 저장소를 사용하도록 구성합니다.

-e JGROUPS_ENCRYPT_PROTOCOL="ASYM_ENCRYPT" \
-e JGROUPS_ENCRYPT_NAME="encrypt_name" \
-e JGROUPS_ENCRYPT_PASSWORD="encrypt_password" \
-e JGROUPS_ENCRYPT_KEYSTORE="encrypt_keystore" \
-e JGROUPS_CLUSTER_PASSWORD="cluster_password"

11.5.3. Pod 스케일링 고려 사항

Cryostat의 검색 메커니즘을 기반으로 시작 노드는 기존 클러스터 코디네이터 노드를 검색합니다. 코디네이터 노드가 지정된 시간 내에 없으면 시작 노드는 해당 노드가 첫 번째 멤버라고 가정하고 코디네이터 상태를 차지합니다.

여러 노드가 동시에 시작되면 여러 파티션이 있는 분할 클러스터를 생성하는 첫 번째 멤버가 있다고 가정합니다. 예를 들어 DeploymentConfig API를 사용하여 0에서 2개의 Pod로 확장하면 분할 클러스터가 생성될 수 있습니다. 이 상황을 방지하려면 첫 번째 Pod를 시작한 다음 필요한 Pod 수로 확장해야합니다.

참고

기본적으로 JBoss EAP Operator는 Pod 생성을 순서대로 시작하는 StatefulSet API(즉, 하나씩)를 사용하므로 분할 클러스터를 생성하지 못합니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동