Liberty에 대한 세션 지속성 구성
서버 다시 시작 또는 예기치 않은 서버 실패로부터 세션 데이터를 유지보수해야 하는 경우, 세션 데이터를 데이터베이스로 유지하도록 Liberty를 구성할 수 있습니다. 이 구성에서는 다중 서버가 동일 세션 데이터를 공유할 수 있으며 세션 데이터는 장애 복구의 경우 복구될 수 있습니다.
이 태스크 정보
데이터베이스에 세션 데이터를 유지하도록 Liberty에 하나 이상의 서버를 구성하려면 다음 단계를 완료하십시오.
프로시저
- 모든 서버 간에 다시 사용될 수 있는 공유 세션 관리 구성을 정의하십시오. 최소한의 요구사항으로,
다음 단계를 완료해야 합니다.
- sessionDatabase-1.0 기능을 사용 가능하게 설정하십시오.
- 데이터 소스를 정의하십시오.
<dataSource id="SessionDS" ... />
- 세션 데이터베이스 구성에서 데이터 소스를 참조하십시오.
<httpSessionDatabase id="SessionDB" dataSourceRef="SessionDS" ... />
- 세션 관리 구성에서 지속적 스토리지 위치를 참조하십시오.
<httpSession storageRef="SessionDB" ... />
참고: httpSession 요소의 storageRef 속성과 httpSessionDatabase 요소의 id 속성은 필수가 아닙니다. sessionDatabase-1.0 기능을 사용하고 httpSessionDatabase 요소가 올바른 데이터 소스를 참조하는 경우 storageRef 속성이 설정되지 않아도 세션 지속성이 사용 가능합니다.httpSession 및 httpSessionDatabase 요소에 관한 세부사항은 Database Session Persistence의 내용을 참조하십시오.
예를 들어, 다음과 같이 ${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를 사용합니다. Liberty에서 일반적으로 복제본 ID가 변경되지 않으면, 처음 서버를 시작할 때 복제본 ID가 생성되고 --clean option으로 서버를 시작하는 경우 재생성됩니다. 프로덕션 사용의 경우, 복제본 ID를 수동으로 지정하면 ID가 안정되고 요청 선호도가 올바르게 유지됩니다. 복제본 ID는 각 서버에 대해 고유해야 하고 8 - 9자의 길이 영숫자이며 3단계에서 지정됩니다.
- 각 서버의 공유 세션 관리 구성을 포함하십시오. 예를 들어,
다음과 같이 s1 및 s2라는 서버 인스턴스에 대해 두 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 요소 사용을 확인하십시오.
- 각 서버의 bootstrap.properties 파일에
고유 변수를 지정하십시오.
- ${wlp.user.dir}/servers/s1/bootstrap.properties
httpPort=9081 cloneId=s1
- ${wlp.user.dir}/servers/s2/bootstrap.properties
httpPort=9082 cloneId=s2
- ${wlp.user.dir}/servers/s1/bootstrap.properties
- 서버를 시작하기 전에 세션 지속성에 대한 테이블을 작성하십시오.
- 기본 행 크기, 테이블 이름 또는 테이블스페이스 이름을 변경하려는 경우, httpSessionDatabase 요소에 관한 세부사항은 Database Session Persistence의 내용을 참조하십시오.
서버가 분산 운영 체제 중 하나에 설치된 경우 추가 조치가 필요하지 않습니다. 서버는 자동으로 테이블을 작성합니다.
- 서버가 세션 지속성을 위해 DB2®를 사용하는 경우 페이지 크기를 증가시켜 대용량의 데이터를 데이터베이스에 기록할 때의 성능을 최적화할 수 있습니다.
- Liberty 서버를 호스트하는 모든 시스템의 시스템 클럭을 동기화하십시오. 시스템 클럭이 동기화되지 않으면 세션 무효화가 예상보다 빨리 발생할 수 있습니다.
- 옵션: 필요할 경우에 Liberty에서 HTTP 세션과 보안을 통합하십시오. 기본적으로, 세션이 작성되고 보안이 사용 가능한 보호된 자원 내에 액세스한 후 해당 세션의 원래 소유자만이 액세스할 수 있습니다. 기본적으로 세션 보안(보안 통합)이 사용됩니다.
- 옵션: 필요한 경우, 구성한 각 서버에 요청을 라우팅하려면 웹 서버 플러그인을 설치하여 구성하십시오. 사용자의 플러그인 구성이 서버 구성에 정의된 복제 ID와 일치하는 복제 ID를 지정하는 경우에만 세션 선호도가 유지보수됩니다.


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_admin_session_persistence
파일 이름: twlp_admin_session_persistence.html