10장. 서버 캐시 구성
Red Hat Single Sign-On에는 두 가지 유형의 캐시가 있습니다. 하나의 캐시 유형은 데이터베이스 앞에 있어 DB의 부하를 줄이고 데이터를 메모리에 보관하여 전체 응답 시간을 줄입니다. realm, client, role, user metadata는 이러한 유형의 캐시에 보관됩니다. 이 캐시는 로컬 캐시입니다. 더 많은 Red Hat Single Sign-On 서버가 있는 경우에도 로컬 캐시는 복제를 사용하지 않습니다. 대신 로컬로 복사본만 보관하고 항목이 업데이트된 경우 클러스터의 나머지 부분으로 전송되고 항목이 제거됩니다. 별도의 복제된 캐시 작업이
있습니다. 로컬 캐시에서 제거해야 하는 항목에 대해 무효화 메시지를 전체 클러스터에 보내는 작업은 무엇입니까. 이렇게 하면 네트워크 트래픽을 크게 줄이고 효율적으로 수행하며, 유선을 통해 민감한 메타데이터를 전송하는 것을 방지할 수 있습니다.
두 번째 유형의 캐시는 사용자 세션 관리, 오프라인 토큰, 로그인 실패 추적을 처리하여 서버가 암호 피싱 및 기타 공격을 감지할 수 있도록 합니다. 이러한 캐시에 저장된 데이터는 메모리에서만 임시이지만 클러스터에 복제될 수 있습니다.
이 장에서는 클러스터형 배포 및 비클러스터형 배포 모두에 대해 이러한 캐시에 대한 몇 가지 구성 옵션에 대해 설명합니다.
이러한 캐시의 고급 구성은 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>
허용된 항목 수를 제한하거나 확장하려면 오브젝트
요소 또는 특정 캐시 구성의 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
가 있습니다. 이 캐시는 기본적으로 바인딩되지 않습니다. 그러나 이 캐시의 항목이 매우 짧은 경우 메모리 문제가 발생하지 않아야 합니다.