22.3. Infinispan


22.3.1. Infinispan 정보

Infinispan은 캐시된 데이터를 관리하는 데 필요한 Java -107호환 캐시 인터페이스를 제공하는 Java 데이터 그리드 플랫폼입니다. Infinispan 기능 및 구성 옵션에 대한 자세한 내용은 Infinispan 문서를 참조하십시오.

infinispan 하위 시스템은 JBoss EAP에 대한 캐싱 지원을 제공합니다. 이를 통해 이름이 지정된 캐시 컨테이너 및 캐시에 대한 런타임 지표를 구성하고 볼 수 있습니다.

관리형 도메인의 ha 또는 full-ha 프로필 또는 독립 실행형 서버의 standalone-ha.xml 또는 standalone-full-ha.xml 구성 파일과 같은 고가용성 기능을 제공하는 구성을 사용하는 경우 infinispan 하위 시스템은 캐싱, 상태 복제 및 상태 배포 지원을 제공합니다. 고가용성이 아닌 구성에서 infinispan 하위 시스템은 로컬 캐싱 지원을 제공합니다.

중요

Infinispan은 JBoss EAP의 캐싱 기능을 제공하기 위해 JBoss EAP에서 프라이빗 모듈로 제공됩니다. Infinispan은 애플리케이션에서 직접 사용할 수 없습니다.

22.3.2. 캐시 컨테이너

캐시 컨테이너는 하위 시스템에서 사용하는 캐시의 리포지토리입니다. 각 캐시 컨테이너는 사용할 기본 캐시를 정의합니다.

JBoss EAP 7은 다음과 같은 기본 Infinispan 캐시 컨테이너를 정의합니다.

  • Singleton 캐싱을 위한 서버
  • 세션 클러스터링을 위한 웹
  • 상태 저장 세션 빈 클러스터링을 위한 binary
  • 엔티티 캐싱을 위한 Hibernate

예: 기본 Infinispan 구성

<subsystem xmlns="urn:jboss:domain:infinispan:4.0">
  <cache-container name="server" aliases="singleton cluster" default-cache="default" module="org.wildfly.clustering.server">
    <transport lock-timeout="60000"/>
    <replicated-cache name="default" mode="SYNC">
      <transaction mode="BATCH"/>
    </replicated-cache>
  </cache-container>
  <cache-container name="web" default-cache="dist" module="org.wildfly.clustering.web.infinispan">
    <transport lock-timeout="60000"/>
    <distributed-cache name="dist" mode="ASYNC" l1-lifespan="0" owners="2">
      <locking isolation="REPEATABLE_READ"/>
      <transaction mode="BATCH"/>
      <file-store/>
    </distributed-cache>
  </cache-container>
  <cache-container name="ejb" aliases="sfsb" default-cache="dist" module="org.wildfly.clustering.ejb.infinispan">
    <transport lock-timeout="60000"/>
    <distributed-cache name="dist" mode="ASYNC" l1-lifespan="0" owners="2">
      <locking isolation="REPEATABLE_READ"/>
      <transaction mode="BATCH"/>
      <file-store/>
    </distributed-cache>
  </cache-container>
  <cache-container name="hibernate" default-cache="local-query" module="org.hibernate.infinispan">
    <transport lock-timeout="60000"/>
    <local-cache name="local-query">
      <eviction strategy="LRU" max-entries="10000"/>
      <expiration max-idle="100000"/>
    </local-cache>
    <invalidation-cache name="entity" mode="SYNC">
      <transaction mode="NON_XA"/>
      <eviction strategy="LRU" max-entries="10000"/>
      <expiration max-idle="100000"/>
    </invalidation-cache>
    <replicated-cache name="timestamps" mode="ASYNC"/>
  </cache-container>
</subsystem>

각 캐시 컨테이너에 정의된 기본 캐시를 확인합니다. 예를 들어 캐시 컨테이너는 dist distributed cache를 기본값으로 정의합니다. 따라서 웹 세션을 클러스터링할 때 dist 캐시가 사용됩니다.

중요

HTTP 세션, 상태 저장 세션 빈 또는 싱글톤 서비스 또는 배포와 같은 추가 캐시 및 캐시 컨테이너를 추가할 수 있습니다. 이러한 캐시는 사용자 애플리케이션에서 직접 사용할 수 없습니다.

22.3.2.1. 캐시 컨테이너 구성

캐시 컨테이너 및 캐시 속성은 관리 콘솔 또는 관리 CLI를 사용하여 구성할 수 있습니다.

주의

구성의 다른 구성 요소가 참조할 수 있으므로 캐시 또는 캐시 컨테이너 이름을 변경하지 않아야 합니다.

관리 콘솔을 사용하여 캐시 구성

관리 콘솔의 Configuration 탭에서 Infinispan 하위 시스템으로 이동하면 캐시 및 캐시 컨테이너를 구성할 수 있습니다. 관리형 도메인에서 구성할 적절한 프로필을 선택해야 합니다.

  • 캐시 컨테이너를 추가합니다.

    캐시 컨테이너 제목 옆에 있는 추가 버튼을 클릭하고 새 캐시 컨테이너의 설정을 입력합니다.

  • 캐시 컨테이너 설정을 업데이트합니다.

    적절한 캐시 컨테이너를 선택하고 드롭다운에서 컨테이너 설정을 선택합니다. 필요에 따라 캐시 컨테이너 설정을 구성합니다.

  • 캐시 컨테이너 전송 설정을 업데이트합니다.

    적절한 캐시 컨테이너를 선택하고 드롭다운 에서 전송 설정을 선택합니다. 필요에 따라 캐시 컨테이너 전송 설정을 구성합니다.

  • 캐시 구성.

    적절한 캐시 컨테이너를 선택하고 View 를 선택합니다. 적절한 캐시 탭(예: 복제된 캐시)에서 캐시를 추가, 업데이트 및 제거할 수 있습니다.

관리 CLI를 사용하여 캐시 구성

관리 CLI를 사용하여 캐시 및 캐시 컨테이너를 구성할 수 있습니다. 관리형 도메인에서 이러한 명령 앞에 /profile=PROFILE_NAME 을 사용하여 업데이트할 프로필을 지정해야 합니다.

  • 캐시 컨테이너를 추가합니다.

    /subsystem=infinispan/cache-container=CACHE_CONTAINER:add
  • 복제된 캐시를 추가합니다.

    /subsystem=infinispan/cache-container=CACHE_CONTAINER/replicated-cache=CACHE:add(mode=MODE)
  • 캐시 컨테이너의 기본 캐시를 설정합니다.

    /subsystem=infinispan/cache-container=CACHE_CONTAINER:write-attribute(name=default-cache,value=CACHE)
  • 복제된 캐시에 대한 일괄 처리를 구성합니다.

    /subsystem=infinispan/cache-container=CACHE_CONTAINER/replicated-cache=CACHE/component=transaction:write-attribute(name=mode,value=BATCH)
기본 handler 캐시 컨테이너 변경

아래 설명된 대로 Cryostat 3 하위 시스템에서 캐시 컨테이너를 사용할 수 있습니다.

  • migration 세션 빈의 활성화를 지원하려면 infinispan 하위 시스템에 정의된 Cryostat 캐시 컨테이너를 사용하여 세션을 저장할 수 있습니다.
  • 서버에서 클러스터형 배포에 연결하는 원격 migration 클라이언트의 경우 상호 작용하는 노드가 실패하는 경우 클러스터 토폴로지 정보를 이러한 클라이언트에 제공해야 클러스터의 다른 노드로 장애 조치될 수 있습니다.

아래 예제와 같이 전달 및 토폴로지 정보 프로비저닝을 지원하는 기본 캐시 컨테이너를 변경하거나 이름을 변경하는 경우 cache-container 특성을 passivation-stores 요소에 추가하고 cluster 속성을 원격 요소에 추가해야 합니다. 자체 사용을 위해 새 캐시를 추가하는 경우 이러한 변경을 수행할 필요가 없습니다.

<subsystem xmlns="urn:jboss:domain:ejb3:4.0">
    <passivation-stores>
        <passivation-store name="infinispan" cache-container="ejb-cltest" max-size="10000"/>
    </passivation-stores>

    <remote cluster="ejb-cltest" connector-ref="http-remoting-connector" thread-pool-name="default"/>
</subsystem>

<subsystem xmlns="urn:jboss:domain:infinispan:4.0">
    ...
    <cache-container name="ejb-cltest" aliases="sfsb" default-cache="dist" module="org.wildfly.clustering.ejb.infinispan">
</subsystem>

22.3.3. 클러스터링 모드

클러스터링은 Infinispan을 사용하여 JBoss EAP에서 두 가지 방법으로 구성할 수 있습니다. 애플리케이션에 가장 적합한 방법은 요구 사항에 따라 다릅니다. 각 모드에서는 가용성, 일관성, 안정성 및 확장성 간에 절충이 있습니다. 클러스터링 모드를 선택하기 전에 네트워크에서 가장 중요한 기능을 식별하고 이러한 요구 사항을 균형 있게 조정해야 합니다.

캐시 모드
복제됨
복제 모드에서는 클러스터에서 새 인스턴스를 자동으로 감지하고 추가합니다. 이러한 인스턴스에 대한 변경 사항은 클러스터의 모든 노드에 복제됩니다. 복제 모드는 네트워크를 통해 복제해야 하는 정보의 양 때문에 일반적으로 소규모 클러스터에서 가장 잘 작동합니다. Infinispan은 UDP 멀티 캐스트를 사용하도록 구성할 수 있으므로 네트워크 트래픽 혼잡을 어느 정도 완화합니다.
분산

분산 모드를 사용하면 Infinispan이 클러스터를 선형으로 확장할 수 있습니다. 분산 모드는 일관된 해시 알고리즘을 사용하여 클러스터에서 새 노드를 배치해야 하는 위치를 결정합니다. 보관해야 하는 정보의 사본(소유자) 수를 구성할 수 있습니다. 보존된 복사본 수, 데이터의 지속성 및 성능 간의 절충이 있습니다. 유지되는 복사본이 많을수록 성능에 더 많은 영향을 미치지만 서버 장애 시 데이터가 손실될 가능성이 적습니다. 또한 해시 알고리즘은 메타데이터 멀티 캐스트 또는 저장 없이 항목을 찾아 네트워크 트래픽을 줄이기 위해 작동합니다.

클러스터 크기가 6-8 노드를 초과하면 분산 모드를 캐싱 전략으로 사용해야 합니다. 분산 모드를 사용하면 모든 노드와 달리 데이터가 클러스터 내의 노드 하위 집합에만 배포됩니다.

동기 및 비동기 복제

동기화 또는 비동기 모드에서 복제를 수행할 수 있으며 선택한 모드는 요구 사항과 애플리케이션에 따라 다릅니다.

동기 복제
동기 복제를 사용하면 사용자 요청을 처리하는 스레드가 복제에 성공할 때까지 차단됩니다. 복제에 성공하면 응답이 클라이언트로 다시 전송되고 스레드만 해제됩니다. 동기 복제는 클러스터의 각 노드의 응답이 필요하기 때문에 네트워크 트래픽에 영향을 미칩니다. 그러나 클러스터의 모든 노드에 모든 수정 사항이 적용되었는지 확인하는 이점이 있습니다.
비동기 복제
비동기 복제를 통해 Infinispan은 스레드 풀을 사용하여 백그라운드에서 복제를 수행합니다. 발신자는 클러스터의 다른 노드에서 응답을 기다리지 않습니다. 그러나 캐시 읽기는 이전 복제가 완료될 때까지 차단되므로 오래된 데이터를 읽지 않습니다. 복제는 시간에 따라 또는 큐 크기에 따라 트리거됩니다. 실패한 복제 시도는 실시간으로 알림을 받지 않고 로그에 기록됩니다.

22.3.3.1. 캐시 모드 구성

관리 CLI를 사용하여 기본 캐시를 변경할 수 있습니다.

참고

이 섹션에서는 기본적으로 분산 모드인 웹 세션 캐시 구성 관련 지침을 보여줍니다. 단계 및 관리 CLI 명령은 다른 캐시 컨테이너에 적용되도록 쉽게 조정할 수 있습니다.

복제된 캐시 모드로 변경

웹 세션 캐시의 기본 JBoss EAP 7 구성에는 repl 복제 캐시가 포함되어 있지 않습니다. 이 캐시를 먼저 추가해야 합니다.

참고

아래 관리 CLI 명령은 독립 실행형 서버에 대한 것입니다. 관리형 도메인에서 실행하는 경우 /subsystem=infinispan 명령 앞에 /profile=PROFILE_NAME 을 추가하여 업데이트할 프로필을 지정해야 합니다.

  1. repl 복제 캐시를 추가합니다.

    /subsystem=infinispan/cache-container=web/replicated-cache=repl:add(mode=ASYNC)
    /subsystem=infinispan/cache-container=web/replicated-cache=repl/component=transaction:write-attribute(name=mode,value=BATCH)
    /subsystem=infinispan/cache-container=web/replicated-cache=repl/component=locking:write-attribute(name=isolation, value=REPEATABLE_READ)
    /subsystem=infinispan/cache-container=web/replicated-cache=repl/store=file:add
  2. 기본 캐시를 repl replicated 캐시로 변경합니다.

    /subsystem=infinispan/cache-container=web:write-attribute(name=default-cache,value=repl)
  3. 서버를 다시 로드합니다.

    reload
분산 캐시 모드로 변경

웹 세션 캐시의 기본 JBoss EAP 7 구성에는 이미 dist distributed cache가 포함되어 있습니다.

참고

아래 관리 CLI 명령은 독립 실행형 서버에 대한 것입니다. 관리형 도메인에서 실행하는 경우 /subsystem=infinispan 명령 앞에 /profile=PROFILE_NAME 을 추가하여 업데이트할 프로필을 지정해야 합니다.

  1. 기본 캐시를 dist distributed cache로 변경합니다.

    /subsystem=infinispan/cache-container=web:write-attribute(name=default-cache,value=dist)
  2. 분산 캐시의 소유자 수를 설정합니다. 다음 명령은 5 명의 소유자를 설정합니다. 기본값은 2 입니다.

    /subsystem=infinispan/cache-container=web/distributed-cache=dist/:write-attribute(name=owners,value=5)
  3. 서버를 다시 로드합니다.

    reload

22.3.3.2. 캐시 전략 성능

SYNC 캐싱 전략을 사용하는 경우 복제 비용이 복제가 완료될 때까지 요청이 완료되지 않기 때문에 응답 시간에 쉽게 측정하고 직접 확인할 수 있습니다.

ASYNC 캐싱 전략으로 SYNC 캐싱 전략보다 응답 시간이 짧아야 하지만 올바른 조건에서만 마찬가지입니다. ASYNC 캐싱 전략은 측정하기가 더 어렵지만 요청 사이의 기간이 캐시 작업을 완료하기에 충분한 기간인 경우 SYNC 전략보다 성능이 향상될 수 있습니다. 이는 복제 비용이 응답 시간에 즉시 표시되지 않기 때문입니다.

동일한 세션에 대한 요청이 너무 빨리 수행되면 이전 요청의 복제 비용이 이전 요청에서 복제가 완료될 때까지 대기해야 하므로 이후 요청 앞쪽으로 이동합니다. 응답이 수신된 직후에 후속 요청이 전송되는 빠른 실행 요청의 경우 ASYNC 캐싱 전략이 SYNC 캐싱 전략보다 성능이 저하됩니다. 결과적으로 SYNC 캐싱 전략이 실제로 A SYNC 캐싱 전략보다 더 나은 동일한 세션에 대한 요청 사이에 임계값이 있습니다. 실제 사용에서 동일한 세션에 대한 요청은 일반적으로 빠른 연속으로 수신되지 않습니다. 대신 요청 사이에 일반적으로 몇 초 이상의 시간 간격이 있습니다. 이 경우 ASYNC 캐싱 전략은 합리적인 기본값이며 가장 빠른 응답 시간을 제공합니다.

22.3.4. Infinispan Thread Pools 구성

infinispan 하위 시스템에는 async-operations,expiration,listener,persistence,remote-command,state-transfer, 전송 스레드 풀이 포함되어 있습니다. 이러한 풀은 모든 Infinispan 캐시 컨테이너에 대해 구성할 수 있습니다.

다음 표에는 infinispan 하위 시스템의 각 스레드 풀에 구성할 수 있는 특성과 각각에 대한 기본값이 나열되어 있습니다.

스레드 풀 이름keepalive-timemax-threadsmin-threadsqueue-length

async-operations

60000L

25

25

1000

만료

60000L

1

해당 없음

해당 없음

listener

60000L

1

1

100000

지속성

60000L

4

1

0

remote-command

60000L

200

1

0

state-transfer

60000L

60

1

0

전송

60000L

25

25

100000

관리 CLI를 사용하여 Infinispan 스레드 풀을 구성하려면 다음 구문을 사용합니다.

/subsystem=infinispan/cache-container=CACHE_CONTAINER_NAME/thread-pool=THREAD_POOL_NAME:write-attribute(name=ATTRIBUTE_NAME, value=ATTRIBUTE_VALUE)

다음은 서버 캐시 컨테이너의 지속성 스레드 풀에서 max-threads 값을 10 으로 설정하는 관리 CLI 명령의 예입니다.

/subsystem=infinispan/cache-container=server/thread-pool=persistence:write-attribute(name="max-threads", value="10")

22.3.5. Infinispan 통계

모니터링을 위해 Infinispan 캐시 및 캐시 컨테이너에 대한 런타임 통계를 활성화할 수 있습니다. 성능상의 이유로 통계 수집은 기본적으로 활성화되어 있지 않습니다.

각 캐시 컨테이너, 캐시 또는 둘 다에 대해 통계 컬렉션을 활성화할 수 있습니다. 각 캐시에 대한 statistics 옵션은 캐시 컨테이너의 옵션을 덮어씁니다. 캐시 컨테이너에 대한 통계 컬렉션을 활성화하거나 비활성화하면 명시적으로 지정하지 않는 한 해당 컨테이너의 모든 캐시가 설정을 상속합니다.

22.3.5.1. Infinispan 통계 활성화

주의

Infinispan 통계를 활성화하면 infinispan 하위 시스템의 성능에 부정적인 영향을 미칠 수 있습니다. 통계는 필요한 경우에만 활성화해야 합니다.

관리 콘솔 또는 관리 CLI를 사용하여 Infinispan 통계 컬렉션을 활성화하거나 비활성화할 수 있습니다. 관리 콘솔에서 Configuration 탭에서 Infinispan 하위 시스템으로 이동하여 적절한 캐시 또는 캐시 컨테이너를 선택하고 통계 활성화 속성을 편집합니다. 관리 CLI를 사용하여 통계를 활성화하려면 아래 명령을 사용합니다.

캐시 컨테이너에 대한 통계 컬렉션을 활성화합니다. 서버 다시 로드가 필요합니다.

/subsystem=infinispan/cache-container=CACHE_CONTAINER:write-attribute(name=statistics-enabled,value=true)

캐시에 대한 통계 컬렉션을 활성화합니다. 서버 다시 로드가 필요합니다.

/subsystem=infinispan/cache-container=CACHE_CONTAINER/CACHE_TYPE=CACHE:write-attribute(name=statistics-enabled,value=true)
참고

다음 명령을 사용하면 캐시 컨테이너의 statistics-enabled 속성 설정을 상속하도록 캐시의 statistics-enabled 특성을 정의할 수 있습니다.

/subsystem=infinispan/cache-container=CACHE_CONTAINER/CACHE_TYPE=CACHE:undefine-attribute(name=statistics-enabled)

22.3.6. Infinispan 파티션 처리

Infinispan 클러스터 는 데이터가 저장되는 여러 노드로 빌드됩니다. 여러 노드가 실패하는 경우 데이터 손실을 방지하기 위해 Infinispan은 여러 노드에 동일한 데이터를 복사합니다. 이 수준의 데이터 중복성은 owners 속성을 사용하여 구성됩니다. 구성된 노드 수보다 동시에 충돌하는 한 Infinispan에는 사용 가능한 데이터 사본이 있습니다.

그러나 클러스터에 너무 많은 노드가 사라질 때 발생할 수 있는 심각한 상황이 있습니다.

스플릿 브레인

이렇게 하면 클러스터가 독립적으로 작동하는 두 개 이상의 파티션 또는 하위 클러스터로 분할됩니다. 이러한 상황에서 여러 클라이언트가 서로 다른 파티션에서 읽고 쓰는 경우 동일한 캐시 항목의 다른 버전을 볼 수 있으므로 많은 애플리케이션에서 문제가 발생합니다.

참고

중복 네트워크 또는 IP 본딩 과 같이 분할 뇌가 발생할 가능성을 완화하는 방법이 있습니다. 그러나 이러한 문제는 발생하는 시간만 줄일 수 있습니다.

여러 노드가 순서대로 충돌
여러 노드, 특히 소유자 수를 빠른 순서로 충돌하고 Infinispan이 충돌 사이에 상태를 적절하게 재조정할 시간이 없는 경우 결과는 부분적인 데이터 손실입니다.

목표는 분할된 뇌 또는 여러 노드가 빠른 순서로 충돌하여 사용자에게 잘못된 데이터가 반환되는 상황을 방지하는 것입니다.

22.3.6.1. 분할 Brain

분할 뇌 상황에서 각 네트워크 파티션은 고유한 Cryostat 보기를 설치하고 다른 파티션에서 노드를 제거합니다. 파티션이 서로를 인식하지 못하기 때문에 클러스터가 두 개 이상의 파티션으로 분할되었는지 여부를 직접 확인할 수 없습니다. 대신 명시적 휴가 메시지를 보내지 않고 하나 이상의 노드가 Cryostat 클러스터에서 사라질 때 클러스터가 분할되었다고 가정합니다.

파티션 처리가 비활성화되면 이러한 각 파티션이 독립적인 클러스터로 계속 작동합니다. 각 파티션은 데이터의 일부만 볼 수 있으며 각 파티션은 캐시에서 충돌하는 업데이트를 작성할 수 있습니다.

파티션 처리가 활성화된 상태에서 분할을 감지하면 각 파티션이 즉시 리밸런싱을 시작하지 않지만 먼저 성능이 저하된 모드로 전환해야 하는지 여부를 확인합니다.

  • 하나 이상의 세그먼트가 모든 소유자를 손실한 경우, 마지막으로 리밸런스가 종료된 이후 지정된 소유자 수가 남아 있는 경우 파티션은 성능이 저하된 모드로 전환됩니다.
  • 파티션에 최신 안정된 토폴로지 에서도 대부분의 노드(floor(numNodes/2) + 1)가 포함되어 있지 않은 경우 파티션도 성능 저하 모드로 전환됩니다.
  • 그렇지 않으면 파티션이 정상적으로 작동하고 리밸런스를 시작합니다.

stable 토폴로지 는 리밸런스 작업이 종료될 때마다 업데이트되고 코디네이터는 다른 리밸런스가 필요하지 않다고 결정합니다. 이러한 규칙은 하나의 파티션이 사용 가능한 모드로 남아 있고 다른 파티션은 성능이 저하된 모드로 유지됩니다.

파티션이 성능 저하 모드인 경우 다음과 같이 설정된 키에 대한 액세스 권한만 허용합니다.

  • 이 파티션 내의 노드의 모든 복사본이 있는 항목에 대한 요청(읽기 및 쓰기)이 적용됩니다.
  • 오류가 발생한 노드에서 부분적으로 또는 완전히 소유한 항목에 대한 요청은 AvailabilityException 과 함께 거부됩니다.

이렇게 하면 파티션에서 동일한 키(캐시가 일관됨)에 대해 다른 값을 쓸 수 없으며 하나의 파티션에서 다른 파티션에서 업데이트된 키를 읽을 수 없습니다(비효한 데이터 없음).

참고

두 개의 파티션이 격리된 상태로 시작될 수 있으며 병합하지 않는 한 일관성 없는 데이터를 읽고 쓸 수 있습니다. 나중에 사용자 정의 가용성 전략(예: 특정 노드가 클러스터의 일부인지 확인)을 허용하거나 이러한 상황을 처리할 수 있는 외부 시스템에 액세스할 수 있는지 확인할 수 있습니다.

22.3.6.2. 파티션 처리 구성

현재 파티션 처리는 기본적으로 비활성화되어 있습니다. 다음 관리 CLI 명령을 사용하여 파티션 처리를 활성화합니다.

/subsystem=infinispan/cache-container=web/distributed-cache=dist/component=partition-handling:write-attribute(name=enabled, value=true)

22.3.7. JBoss Data Grid에 HTTP 세션 외부화

참고

이 기능을 사용하려면 Red Hat JBoss Data Grid 서브스크립션이 필요합니다.

Red Hat JBoss Data Grid는 HTTP 세션과 같은 JBoss EAP의 애플리케이션 관련 데이터에 대한 외부 캐시 컨테이너로 사용할 수 있습니다. 이를 통해 애플리케이션과 독립적으로 데이터 계층을 확장할 수 있으며 다양한 도메인에 있을 수 있는 다양한 JBoss EAP 클러스터를 활성화하여 동일한 JBoss Data Grid 클러스터의 데이터에 액세스할 수 있습니다. 또한 다른 애플리케이션은 Red Hat JBoss Data Grid에서 제공하는 캐시와 상호 작용할 수 있습니다.

다음 예제에서는 HTTP 세션을 외부화하는 방법을 보여줍니다. JBoss EAP의 독립 실행형 인스턴스 및 관리형 도메인에 모두 적용됩니다. 그러나 관리형 도메인에서 각 서버 그룹에는 고유한 원격 캐시가 구성되어 있어야 합니다. 여러 서버 그룹이 동일한 Red Hat JBoss Data Grid 클러스터를 사용할 수 있지만 각 원격 캐시는 JBoss EAP 서버 그룹에 고유합니다.

참고

배포 가능한 각 애플리케이션에 대해 완전히 새 캐시를 생성해야 합니다. 기존 캐시 컨테이너에서 생성할 수 있습니다(예: web).

HTTP 세션을 외부화하려면 다음을 수행합니다.

  1. socket-binding-group 에 네트워킹 정보를 추가하여 원격 Red Hat JBoss Data Grid 서버의 위치를 정의합니다.

    원격 소켓 바인딩 추가 예

    /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-jdg-server1:add(host=JDGHostName1, port=11222)
    
    /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-jdg-server2:add(host=JDGHostName2, port=11222)

    결과 XML

    <socket-binding-group name="standard-sockets" ... >
      ...
      <outbound-socket-binding name="remote-jdg-server1">
        <remote-destination host="JDGHostName1" port="11222"/>
      </outbound-socket-binding>
      <outbound-socket-binding name="remote-jdg-server2">
        <remote-destination host="JDGHostName2" port="11222"/>
      </outbound-socket-binding>
    </socket-binding-group>

    참고

    각 Red Hat JBoss Data Grid 서버에 대해 구성된 원격 소켓 바인딩이 필요합니다.

  2. 원격 캐시 컨테이너가 JBoss EAP의 infinispan 하위 시스템에 정의되어 있는지 확인합니다. remote-store 요소의 cache 속성 아래 예제에서는 원격 JBoss Data Grid 서버에서 캐시 이름을 정의합니다.

    관리형 도메인에서 실행 중인 경우 이러한 명령 앞에 /profile=PROFILE_NAME.

    원격 캐시 컨테이너 추가 예

    /subsystem=infinispan/cache-container=web/invalidation-cache=jdg:add(mode=SYNC)
    
    /subsystem=infinispan/cache-container=web/invalidation-cache=jdg/component=locking:write-attribute(name=isolation,value=REPEATABLE_READ)
    
    /subsystem=infinispan/cache-container=web/invalidation-cache=jdg/component=transaction:write-attribute(name=mode,value=BATCH)
    
    /subsystem=infinispan/cache-container=web/invalidation-cache=jdg/store=remote:add(remote-servers=["remote-jdg-server1","remote-jdg-server2"], cache=default, socket-timeout=60000, passivation=false, purge=false, shared=true)

    결과 XML

    <subsystem xmlns="urn:jboss:domain:infinispan:4.0">
      ...
      <cache-container name="web" default-cache="dist" module="org.wildfly.clustering.web.infinispan" statistics-enabled="true">
        <transport lock-timeout="60000"/>
        <invalidation-cache name="jdg" mode="SYNC">
          <locking isolation="REPEATABLE_READ"/>
          <transaction mode="BATCH"/>
          <remote-store cache="default" socket-timeout="60000" remote-servers="remote-jdg-server1 remote-jdg-server2" passivation="false" purge="false" shared="true"/>
        </invalidation-cache>
        ...
      </cache-container>
    </subsystem>

  3. 애플리케이션의 jboss-web.xml 에 캐시 정보를 추가합니다. 다음 예에서 web 은 캐시 컨테이너의 이름이며 jdg 는 이 컨테이너에 있는 적절한 캐시의 이름입니다.

    jboss-web.xml 파일 예

    <?xml version="1.0" encoding="UTF-8"?>
    <jboss-web xmlns="http://www.jboss.com/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-web_10_0.xsd"
               version="10.0">
        <replication-config>
            <replication-granularity>SESSION</replication-granularity>
            <cache-name>web.jdg</cache-name>
        </replication-config>
    </jboss-web>

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.