9.4. 고정 세션


일반적인 클러스터 배포는 사설 네트워크의 로드 밸런서(Reverse proxy)와 2개 이상의 Red Hat Single Sign-On 서버로 구성됩니다. 성능을 위해 로드 밸런서가 특정 브라우저 세션과 관련된 모든 요청을 동일한 Red Hat Single Sign-On 백엔드 노드로 전달하는 경우 유용할 수 있습니다.

그 이유는 Red Hat Single Sign-On이 현재 인증 세션 및 사용자 세션과 관련된 데이터를 저장하기 위해 Infinispan 분산 캐시를 사용하고 있기 때문입니다. Infinispan 분산 캐시는 기본적으로 하나의 소유자로 구성됩니다. 즉, 특정 세션이 하나의 클러스터 노드에만 저장되고 다른 노드는 액세스하려는 경우 세션을 원격으로 조회해야 합니다.

예를 들어 ID 10.0.0.1을 사용하여 인증 세션을 node1 의 Infinispan 캐시에 저장한 다음 node2 에서 이 세션을 조회해야 하는 경우 특정 세션 엔티티를 반환하기 위해 네트워크를 통해 node1 에 요청을 보내야 합니다.

특정 세션 엔티티를 항상 로컬에서 사용할 수 있는 경우 유용하며 고정 세션의 도움말을 사용하여 수행할 수 있습니다. 공용 프런트 엔드 로드 밸런서와 두 개의 백엔드 Red Hat Single Sign-On 노드가 있는 클러스터 환경의 워크플로는 다음과 같습니다.

  • 사용자가 Red Hat Single Sign-On 로그인 화면을 확인하기 위해 초기 요청을 보냅니다.
  • 이 요청은 임의의 노드(예: node1)로 전달하는 프런트 엔드 로드 밸런서에서 제공합니다. 노드가 무작위일 필요는 없지만 다른 기준(클라이언트 IP 주소 등)에 따라 선택할 수 있습니다. 이 모든 작업은 기본 로드 밸런서의 구현 및 구성에 따라 달라집니다(Reverse proxy).
  • Red Hat Single Sign-On은 임의의 ID(예: 10.0.0.1)를 사용하여 인증 세션을 생성하여 Infinispan 캐시에 저장합니다.
  • Infinispan 분산 캐시는 세션 ID의 해시를 기반으로 세션의 기본 소유자를 할당합니다. 이에 대한 자세한 내용은 Infinispan 설명서를 참조하십시오. Infinispan이 node2 를 이 세션의 소유자로 할당했다고 가정하겠습니다.
  • Red Hat Single Sign-On은 < session-id>.<owner-node-id >와 같은 형식으로 AUTH_SESSION_ID 쿠키를 생성합니다. 이 예에서는 10.0.0.1 .node2 가 됩니다.
  • 브라우저에서 Red Hat Single Sign-On 로그인 화면과 AUTH_SESSION_ID 쿠키를 사용하여 응답이 반환됩니다.

이 시점에서 로드 밸런서가 모든 다음 요청을 node2 로 전달하는 것이 좋습니다. 이 경우 ID 10.0.0.1이 있는 인증 세션의 소유자이므로 Infinispan이 이 세션을 로컬로 조회할 수 있습니다. 인증이 완료되면 인증 세션이 사용자 세션으로 변환되며 ID가 동일하기 때문에 node2 에도 저장됩니다.

고정 세션은 클러스터 설정에 필수는 아니지만 위에서 언급한 이유로 성능이 좋습니다. AUTH_SESSION_ID 쿠키를 고정하도록 로드 밸런서를 구성해야 합니다. 이를 수행하는 방법은 로드 밸런서에 따라 달라집니다.

시작 중에 시스템 속성 jboss.node.name 을 사용하고 경로 이름에 해당하는 값과 함께 Red Hat Single Sign-On 측에서 사용하는 것이 좋습니다. 예를 들어 -Djboss.node.name=node1node1 을 사용하여 경로를 식별합니다. 이 경로는 Infinispan 캐시에서 사용되며 노드가 특정 키의 소유자인 경우 AUTH_SESSION_ID 캐시에 연결됩니다. 다음은 이 시스템 속성을 사용하는 시작 명령의 예입니다.

cd $RHSSO_NODE1
./standalone.sh -c standalone-ha.xml -Djboss.socket.binding.port-offset=100 -Djboss.node.name=node1
Copy to Clipboard

일반적으로 프로덕션 환경에서는 경로 이름이 백엔드 호스트와 동일한 이름을 사용해야 하지만 필수는 아닙니다. 다른 경로 이름을 사용할 수 있습니다. 예를 들어 개인 네트워크 내에서 Red Hat Single Sign-On 서버의 호스트 이름을 숨기려면 다음을 수행하십시오.

9.4.1. 경로 추가 비활성화

일부 로드 밸런서는 백엔드 Red Hat Single Sign-On 노드에 의존하는 대신 자체적으로 경로 정보를 추가하도록 구성할 수 있습니다. 그러나 위에서 설명한 대로 Red Hat Single Sign-On으로 경로를 추가하는 것이 좋습니다. 이는 Red Hat Single Sign-On이 특정 세션의 소유자이며 로컬 노드가 아닌 해당 노드로 라우팅할 수 있는 엔티티를 인식하므로 이러한 방식으로 성능이 향상되기 때문입니다.

Red Hat Single Sign-On의 AUTH_SESSION_ID 쿠키(Red Hat Single Sign-On 하위 시스템 구성의 RHSSO_HOME/standalone/configuration/standalone-ha.xml 파일에 다음을 추가하여)에 경로 정보 추가를 비활성화할 수 있습니다.

<subsystem xmlns="urn:jboss:domain:keycloak-server:1.2">
  ...
    <spi name="stickySessionEncoder">
        <provider name="infinispan" enabled="true">
            <properties>
                <property name="shouldAttachRoute" value="false"/>
            </properties>
        </provider>
    </spi>

</subsystem>
Copy to Clipboard
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat