Liberty에 대한 세션 지속성 구성

서버 재시작이나 예기치 않은 서버 장애 중에 세션 데이터를 유지해야 하는 경우에는 데이터베이스에 대한 세션 데이터의 지속성을 위해 Liberty를 구성할 수 있습니다. 이 구성에서는 다중 서버가 동일 세션 데이터를 공유할 수 있으며 세션 데이터는 장애 복구의 경우 복구될 수 있습니다.

이 태스크 정보

데이터베이스에 대한 세션 데이터의 지속성을 위해 Liberty에서 하나 이상의 서버를 구성하려면 다음 단계를 완료하십시오.

프로시저

  1. 모든 서버 간에 다시 사용될 수 있는 공유 세션 관리 구성을 정의하십시오. 최소한의 요구사항으로, 다음 단계를 완료해야 합니다.
    1. sessionDatabase-1.0 기능을 사용 가능하게 설정하십시오.
    2. 데이터 소스를 정의하십시오.
      <dataSource id="SessionDS" ... />
    3. 세션 데이터베이스 구성에서 데이터 소스를 참조하십시오.
      <httpSessionDatabase id="SessionDB" dataSourceRef="SessionDS" ... />
    4. 세션 관리 구성에서 지속적 스토리지 위치를 참조하십시오.
      <httpSession storageRef="SessionDB" ... />
    참고: httpSession 요소의 storageRef 속성과 httpSessionDatabase 요소의 id 속성은 필수가 아닙니다. sessionDatabase-1.0 기능을 사용하고 httpSessionDatabase 요소가 올바른 데이터 소스를 참조하는 경우 storageRef 속성이 설정되지 않아도 세션 지속성이 사용 가능합니다.

    httpSessionhttpSessionDatabase 요소에 대한 세부사항은 데이터베이스 세션 지속성을 참조하십시오.

    예를 들어, 다음과 같이 ${shared.config.dir}/httpSessionPersistence.xml이라는 파일을 작성할 수 있습니다.
    <server description="Demonstrates HTTP Session Persistence Configuration">
    
        <featureManager>
            <feature>sessionDatabase-1.0</feature>
            <feature>servlet-3.0</feature>
        </featureManager>
        <httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="${httpPort}">
            <tcpOptions soReuseAddr="true"/>
        </httpEndpoint>
    
        <fileset id="DerbyFiles" includes="*.jar" dir="${shared.resource.dir}/derby/client"/>
        <library id="DerbyLib" filesetRef="DerbyFiles"/>
        <jdbcDriver id="DerbyDriver" libraryRef="DerbyLib"/>
        <dataSource id="SessionDS" jdbcDriverRef="DerbyDriver">
            <properties.derby.client user="user1" password="password1" 
                                     databaseName="${shared.resource.dir}/databases/SessionDB" 
                                     createDatabase="create"/>
        </dataSource>
    
        <httpSessionDatabase id="SessionDB" dataSourceRef="SessionDS"/>
        <httpSession storageRef="SessionDB" cloneId="${cloneId}"/>
    
        <application id="test" name="test" type="ear" location="${shared.app.dir}/test.ear"/>    
    
    </server>
    참고: 다중 서버가 세션 데이터를 동일 데이터베이스로 유지하도록 구성된 경우, 이 서버는 동일 세션 관리 구성을 공유해야 합니다. 기타 구성은 지원되지 않습니다. 예를 들어, 한 서버는 다중 행 스키마를 사용하고 다른 서버는 단일 행 스키마를 사용하는 것은 불가능합니다.

    HTTP 서버 플러그인은 요청 사이에 세션 선호도를 유지하기 위해 응답/요청 헤더에 삽입되는 복제본 ID를 사용합니다. 일반적으로 복제본 ID는 변경되지 않지만, Liberty에서 복제본 ID는 처음 서버를 시작할 때 생성되며 --clean option으로 서버를 시작할 때 재생성됩니다. 프로덕션 사용의 경우, 복제본 ID를 수동으로 지정하면 ID가 안정되고 요청 선호도가 올바르게 유지됩니다. 복제본 ID는 각 서버에 대해 고유해야 하고 8 - 9자의 길이 영숫자이며 3단계에서 지정됩니다.

  2. 각 서버의 공유 세션 관리 구성을 포함하십시오. 예를 들어, 다음과 같이 s1s2라는 서버 인스턴스에 대해 두 server.xml 파일을 작성하십시오.
    • ${wlp.user.dir}/servers/s1/server.xml
    • ${wlp.user.dir}/servers/s2/server.xml
    <server description="Example Server">
        <include location="${shared.config.dir}/httpSessionPersistence.xml"/>
    </server>

    구성 파일에서 include 요소 사용의 내용을 참조하십시오.

  3. 각 서버의 bootstrap.properties 파일에 고유 변수를 지정하십시오.
    • ${wlp.user.dir}/servers/s1/bootstrap.properties
      httpPort=9081
      cloneId=s1
    • ${wlp.user.dir}/servers/s2/bootstrap.properties
      httpPort=9082
      cloneId=s2
  4. 서버를 시작하기 전에 세션 지속성에 대한 테이블을 작성하십시오.
    • 기본 행 크기, 테이블 이름 또는 테이블스페이스 이름을 변경하려는 경우, httpSessionDatabase 요소에 대한 세부사항은 데이터베이스 세션 지속성을 참조하십시오.
    • For distributed platforms서버가 분산 운영 체제 중 하나에 설치된 경우 추가 조치가 필요하지 않습니다. 서버는 자동으로 테이블을 작성합니다.
    • For z/OS platforms서버를 z/OS®에 설치한 경우 테이블을 수동으로 작성해야 합니다. 서버가 세션 지속성을 위해 z/OS DB2®를 사용하는 경우 다른 단계를 따라 테이블을 수동으로 작성해야 합니다.
    • 서버가 세션 지속성을 위해 DB2를 사용하는 경우 페이지 크기를 증가시켜 대용량의 데이터를 데이터베이스에 기록할 때의 성능을 최적화할 수 있습니다.
  5. Liberty 서버를 호스팅하는 모든 시스템의 시스템 클럭을 동기화하십시오. 시스템 클럭이 동기화되지 않으면 세션 무효화가 예상보다 빨리 발생할 수 있습니다.
  6. 옵션: 필요하면 Liberty에서 HTTP 세션과 보안을 통합하십시오. 기본적으로, 세션이 작성되고 보안이 사용 가능한 보호된 자원 내에 액세스한 후 해당 세션의 원래 소유자만이 액세스할 수 있습니다. 기본적으로 세션 보안(보안 통합)이 사용으로 설정됩니다.
  7. 옵션: 필요한 경우, 구성한 각 서버에 요청을 라우팅하려면 웹 서버 플러그인을 설치하여 구성하십시오. 사용자의 플러그인 구성이 서버 구성에 정의된 복제 ID와 일치하는 복제 ID를 지정하는 경우에만 세션 선호도가 유지보수됩니다.

주제의 유형을 표시하는 아이콘 태스크 주제

파일 이름: twlp_admin_session_persistence.html