10장. 서버 캐시 구성
Red Hat Single Sign-On에는 두 가지 유형의 캐시가 있습니다. 한 가지 유형의 캐시는 데이터베이스 앞에 위치하여 DB의 부하를 줄이고 데이터를 메모리에 유지하여 전체 응답 시간을 줄입니다. 이러한 유형의 캐시에는 realm, 클라이언트, 역할 및 사용자 메타데이터가 유지됩니다. 이 캐시는 로컬 캐시입니다. 로컬 캐시는 클러스터에 더 많은 Red Hat Single Sign-On 서버가 있는 경우에도 복제를 사용하지 않습니다. 대신 로컬 복사본만 보관하고 항목이 업데이트되면 invalidation 메시지가 클러스터의 나머지 부분으로 전송되고 항목이 제거됩니다. 별도의 복제된 캐시 작업이
있습니다. 이 작업은 로컬 캐시에서 제거해야 하는 항목에 대한 invalidation 메시지를 전체 클러스터에 보내는 것입니다. 이를 통해 네트워크 트래픽을 크게 줄이고, 작업을 효율적으로 수행하고, 전선을 통해 민감한 메타데이터를 전송하는 것을 방지할 수 있습니다.
두 번째 유형의 캐시는 사용자 세션 관리, 오프라인 토큰을 처리하고 로그인 실패를 추적하여 서버가 암호 피싱 및 기타 공격을 탐지할 수 있도록 합니다. 이러한 캐시에 보관된 데이터는 메모리에서만 저장되지만 클러스터에 복제될 수 있습니다.
이 장에서는 클러스터된 배포와 클러스터되지 않은 배포 모두에 대한 이러한 캐시의 일부 구성 옵션에 대해 설명합니다.
이러한 캐시의 고급 구성은 JBoss EAP 구성 가이드 의 Infinispan 섹션에서 확인할 수 있습니다.
10.1. 제거 및 만료
Red Hat Single Sign-On에 대해 다양한 캐시가 여러 개 구성되어 있습니다. 보안 애플리케이션, 일반 보안 데이터 및 구성 옵션에 대한 정보를 보유하는 영역 캐시가 있습니다. 사용자 메타데이터가 포함된 사용자 캐시도 있습니다. 두 캐시 모두 기본적으로 최대 10000개의 항목으로 캐시하고 최근 사용된 제거 전략을 사용합니다. 각 오브젝트는 클러스터형 설정에서 제거를 제어하는 오브젝트 버전 캐시에도 연결됩니다. 이 캐시는 암시적으로 생성되며 구성된 두 배입니다. 권한 부여 데이터를 보유하는 권한 부여
캐시에도 동일하게 적용됩니다. 키
캐시에는 외부 키에 대한 데이터가 들어 있으며 전용 리버전 캐시가 필요하지 않습니다. 대신 명시적으로 선언된 만료
가 있으므로 키는 주기적으로 만료되고 외부 클라이언트 또는 ID 공급자에서 주기적으로 다운로드해야 합니다.
이러한 캐시의 제거 정책 및 max 항목은 운영 모드에 따라 standalone.xml,standalone-ha.xml, domain.xml 에서 구성할 수 있습니다. 구성 파일에는 infinispan 하위 시스템과 관련된 부분이 있으며 이는 다음과 유사합니다.
<subsystem xmlns="urn:jboss:domain:infinispan:12.0"> <cache-container name="keycloak"> <local-cache name="realms"> <object-memory size="10000"/> </local-cache> <local-cache name="users"> <object-memory size="10000"/> </local-cache> ... <local-cache name="keys"> <object-memory size="1000"/> <expiration max-idle="3600000"/> </local-cache> ... </cache-container>
<subsystem xmlns="urn:jboss:domain:infinispan:12.0">
<cache-container name="keycloak">
<local-cache name="realms">
<object-memory size="10000"/>
</local-cache>
<local-cache name="users">
<object-memory size="10000"/>
</local-cache>
...
<local-cache name="keys">
<object-memory size="1000"/>
<expiration max-idle="3600000"/>
</local-cache>
...
</cache-container>
허용된 항목의 수를 제한하거나 확장하려면 오브젝트
요소 또는 특정 캐시 구성의 expiration
요소를 추가하거나 편집하기만 하면 됩니다.
또한 별도의 캐시 세션
,clientSessions
,offlineSessions
,offlineClientSessions
,loginFailures
및 actionTokens
도 있습니다. 이러한 캐시는 클러스터 환경에서 배포되며 기본적으로 크기가 바인딩되지 않습니다. 바인딩된 경우 일부 세션이 손실될 수 있습니다. 만료된 세션은 제한 없이 이러한 캐시의 크기를 늘리지 않도록 Red Hat Single Sign-On 자체에서 내부적으로 정리됩니다. 많은 세션으로 인해 메모리 문제가 표시되는 경우 다음을 시도할 수 있습니다.
- 클러스터 크기 증가(클러스터의 더 많은 노드는 세션의 노드 간에 더 균등하게 분배됨)
- Red Hat Single Sign-On 서버 프로세스의 메모리 증가
- 캐시가 한 곳에 저장되도록 소유자 수를 줄입니다. 자세한 내용은 10.2절. “복제 및 페일오버” 을 참조하십시오.
- 분산 캐시의 l1-lifespan을 비활성화합니다. 자세한 내용은 Infinispan 설명서를 참조하십시오.
- Red Hat Single Sign-On 관리 콘솔의 각 영역에 대해 개별적으로 수행할 수 있는 세션 시간 초과를 줄입니다. 그러나 이는 최종 사용자의 유용성에 영향을 미칠 수 있습니다. 자세한 내용은 시간 제한을 참조하십시오.
클러스터 노드 간에 메시지를 보내는 데 주로 사용되는 추가 복제 캐시 work
가 있습니다. 이 캐시는 기본적으로 바인딩되지 않습니다. 그러나 이 캐시는 이 캐시의 항목이 매우 수명이 짧기 때문에 메모리 문제가 발생하지 않아야 합니다.