CA Directory를 세션 저장소로 구성
다음 절차를 완료하여 CA Directory를 세션 저장소로 구성할 수 있습니다.
casso127kkr
다음 절차를 완료하여 CA Directory를 세션 저장소로 구성할 수 있습니다.
2
이 절차에서는 CA Directory가 설치되어 작동하고 있다고 가정합니다.
이 항목에서는 다음과 같은 규칙이 사용됩니다.
- DXHOME = C:\Program Files\CA\Directory\dxserver(Windows)
- DXHOME = /opt/CA/Directory/dxserver(UNIX)
세션 저장소 스키마 파일 찾기
세션 저장소에서 정책 서버는 자체 LDAP 디렉터리 개체를 사용합니다. CA Directory에서는 이러한 추가 클래스의 구조를 인식할 수 있어야 합니다. 세션 저장소 스키마 파일인 netegrity.dxc는 CA Directory에서 이러한 추가 클래스의 이름 및 구조를 인식할 수 있도록 합니다.
netegrity.dxc
파일은 정책 서버와 함께 설치됩니다. 올바른 스키마 파일이 있는지 확인하십시오.다음 단계를 수행하십시오.
- siteminder_home\eTrust 디렉터리로 이동합니다. 여기서siteminder_home은 정책 서버 설치 경로입니다.
- 스키마 파일netegrity.dxc가 있는지 확인합니다. 이 파일은 DSA가 사용자 세션 정보를 저장하고 검색할 수 있도록 하는 DSA 세션 저장소 스키마를 생성합니다. 이 파일이 없으면Single Sign-On관리자에게 문의하여 파일을 요청하십시오.
세션 저장소에 대한 DSA(디렉터리 시스템 에이전트) 생성
DSA를 생성하고 용도를 세션 저장소 전용으로 한정하십시오. 전용 DSA를 사용하면 세션 저장소 성능을 최대화할 수 있습니다.
다음 단계를 수행하십시오.
- CA Directory 호스트 시스템에 로그인합니다.
- 다음 명령을 실행하여 데이터 DSA를 생성합니다.dxnewdsadsa_name port prefix
- dsa_name- 세션 저장소 DSA의 이름을 지정합니다.
- port- 세션 저장소가 요청을 수신 대기하는 포트를 지정합니다.
- prefix- 네임스페이스 접두사를 지정합니다. LDAP 구문을 사용하여 접두사를 지정합니다.
예를 들면 다음과 같습니다.dxnewdsa smsessionstore 1234 o=forwardinc,c=usForwardinc는 가상의 회사 이름입니다. 이 이름은 설명용으로만 사용되며 실제 회사를 가리키지 않습니다.
DSA가 생성되었습니다.
세션 저장소 스키마 만들기
DSA에서 사용자 세션 정보를 저장하고 검색하려면 스키마가 필요합니다.
다음 단계를 수행하십시오.
- CA Directory 호스트 시스템에 로그인합니다.
- 다음 명령을 사용하여 DSA를 중지합니다.dxserver stopDSA_nameDSA_name- DSA에 할당하는 이름입니다.
- siteminder_home\eTrust에서netegrity.dxc파일을 복사합니다.
- DXHOME\config\schema로 이동하고netegrity.dxc를 이 디렉터리에 붙여 넣습니다.
- 다음 단계를 수행하여 스키마 파일을 생성합니다.
- 기본 DSA 스키마 파일(default.dxg)을 복사합니다. default.dxg 파일은 schema 디렉터리에 있습니다.
- 복사본에서 읽기 전용 특성을 제거합니다.
- 복사본의 이름을 바꿔 새 파일을 생성합니다. 예를 들어 복사본의 이름을 smsession.dxg로 바꿉니다.
- 새 스키마 파일의 맨 아래에 다음 행을 추가합니다.#CA Schemasource "netegrity.dxc";
- 파일을 저장합니다.
- 새 스키마 파일에 읽기 전용 특성을 다시 적용합니다.
DSA에서 세션 저장소 제한 설정
세션 저장소 스키마에서 세션 저장소 기본 제한을 설정하십시오. 이 제한은 응용 프로그램과 DSA의 연결이 유지되는 시간이나 검색 쿼리 제어 방법과 같은 DSA 작업에 대한 제한을 정의합니다.
다음 단계를 수행하십시오.
- DXHOME\config\limits로 이동합니다.
- 다음 단계를 완료하여 세션 저장소 제한 파일을 생성합니다.
- 기본 제한 파일(default.dxc)을 복사합니다.
- 읽기 전용 특성을 제거합니다.
- 파일 이름을 smsession.dxc 등으로 바꿉니다.
- smsession.dxc파일의 크기 제한 섹션에서max-ops설정을 다음 예와 일치하도록 설정합니다. 이 값은 상한을 나타냅니다. 세션 저장소는 검색 쿼리당 1,000개 이상의 개체를 반환하지 않아야 합니다.set max-op-size = 1000;
- multi-write-queue설정을 구성합니다. multi-write queue 설정은 사용할 수 없는 DSA에 대해 메모리에 보관되는 최대 트랜잭션 수를 지정합니다. 특정 기간 동안 오프라인 상태인 서버를 지원하려면 이 설정을 사용하십시오. 기본값은 20,000입니다. 큐에서 300,000 ~ 500,000개의 트랜잭션을 처리하도록 설정하십시오. 최적의 값을 사용하면 다중 쓰기 큐를 채우지 않고도 디렉터리 서버 호스트 중 하나를 정상적으로 재부팅할 수 있습니다. 예를 들면 다음과 같습니다.set multi-write-queue = 300000;
- multi-write-outstanding-ops 제한설정을 구성합니다. 이 설정은 DSA가 다중 쓰기 큐에서 복구 중인 DSA로 한 번에 전송할 수 있는 업데이트 수를 결정합니다. 기본값은 10입니다. 다중 쓰기 큐에 있는 잠재적 업데이트의 수에 따라, DSA가 한 번에 기본값인 10개의 업데이트를 전송할 경우에는 DSA의 자동 복구 기간이 길어집니다. 권장 값은 1000입니다. 예를 들면 다음과 같습니다.set multi-write-outstanding-ops = 1000;
- 파일을 저장합니다.
- 읽기 전용 특성을 다시 적용합니다.
세션 저장소 초기화 파일 수정
초기화 파일(
dsa_name
.dxi)에는 다음 기능을 구성하기 위한 설정이 포함되어 있습니다.- 인덱스CA Directory 인덱스의 최적화는 CA Directory의 전체 성능에 매우 중요합니다. 인덱스를 제대로 구성하지 않으면 디렉터리에서 추가 및 제거 작업의 응답 시간이 느려질 수 있습니다.set cache-index항목에서 인덱싱이 필요한 특성을 지정합니다.
- 메모리에 세션 개체 저장
- 트랜잭션 로깅기본적으로 각 CA Directory 데이터 DSA는 트랜잭션 로그를 사용하도록 구성되어 있습니다. 세션 저장소에는 트랜잭션 로그가 필요하지 않으며, 트랜잭션 로깅 시 디렉터리의 성능이 저하될 수 있습니다. 따라서 로깅을 비활성화하십시오.
다음 단계를 수행하십시오.
- DXHOME\config\servers로 이동하여 세션 저장소 초기화 파일.DSA_namedxi를 엽니다.DSA_name은 세션 저장소 DSA의 이름입니다.
- #schema 섹션에서 스키마 참조를 default.dxg에서 새 파일로 편집합니다.예:default.dxg를 smsession.dxg로 변경합니다.
- #service limits 섹션에서 서비스 제한 참조를 default.dxc에서 새 파일로 편집합니다.예:default.dxc를 smsession.dxc로 변경합니다.
- #grid configuration 섹션에서set cache-index항목을 다음 텍스트와 일치하도록 편집합니다.set cache-index = smSessionId, smExpirationTime, smIdleExpirationTime, smSearchData, smVariableName, smFullVariableName;set cache-index항목이set lookup-cache항목 위에 있는지 확인합니다.set cache-index = smSessionId, smExpirationTime, smIdleExpirationTime, smSearchData, smVariableName, smFullVariableName;set lookup-cache = true;
- (선택 사항) 메모리에 더 많은 세션 개체를 저장하려면 다음 명령을 사용하여 smVariableValue 특성을 압축합니다.set compresstype=smVariableValue여기서type은 base64, hex, deflate, deflate1, deflate2 중 하나입니다. deflate 유형이 가장 빠르고, deflate1은 속도와 압축 비율을 적절하게 조절하며, deflate2는 최대 압축을 시도합니다.지정된 특성의 모든 값이 base64로 인코딩된 경우에는 base64만 사용하십시오. hex 유형은 지정된 특성의 모든 값이 16진수로 인코딩된 경우에만 지정하십시오. 특성 값이 base64 또는 hex가 아닌 다른 유형을 사용하여 인코딩된 경우에는 deflate 유형 중 하나를 사용하십시오.
- multi-write-disp-recovery설정이 기본 설정인 false로 설정되어 있는지 확인합니다. 이 세션 저장소에는 이 복구 방법이 필요하지 않습니다. 다음 예에 올바른 항목이 나와 있습니다.set multi-write-disp-recovery = false;라우팅 DSA에는 이 설정이 필요하지 않습니다.여러 DSA 피어를 설정하고 다중 쓰기 복제를 사용할 수 있지만, DISP 복구에는 이 기능을 사용하지마십시오. 복제 설정에 대한 지침은 CA Directory 설명서를 참조하십시오.
- (선택 사항) 트랜잭션 로깅을 비활성화하여 성능을 향상시킵니다. 이 기능은 기본적으로 활성화되어 있습니다. 로깅을 비활성화하려면 각 초기화 파일에 다음 설정을 추가하십시오.set disable-transaction-log = true;set multi-write-disp-recovery = false 항목아래에로깅 항목을 추가하십시오. 예를 들면 다음과 같습니다.set multi-write-disp-recovery = false;set disable-transaction-log = true;라우팅 DSA의 경우에는 트랜잭션 로깅을 비활성화할 필요가 없습니다. 트랜잭션 로깅을 비활성화할 경우 데이터 복구에 미치는 영향을 고려하십시오. 자세한 내용은 CA Directory 설명서를 참조하십시오.
- (선택 사항) 세션 저장소 DSA를 복제하는 경우에 DSA지식파일(DXHOME/config/knowledge/)에 dsp-idle-time 설정을 추가합니다. 유휴 시간 값은 너무 낮지 않게 설정하는 것이 유용합니다. 너무 낮게 설정하면 DSA가 복구되기 전에 다중 쓰기 DSA와 해당 복구 피어 DSA 사이의 연결이 시간 만료될 수 있습니다.dsp-idle-time = 30
- 다음 명령을 사용하여 DSA를 다시 시작합니다.dxserver startDSA_Name
세션 저장소 스키마가 구성되었습니다.
세션 저장소 백업이 필요하지 않음
세션 저장소 내의 데이터는 항상 변경되므로 세션 저장소를 백업할 필요는 없습니다. 백업하더라도 복원된 데이터는 이미 오래되었거나 부정확할 수 있습니다.
비동기 복제
동일한 디렉터리 정보가 여러 서버에 저장되도록 DSA 복제를 구성할 수 있습니다. 복제 기능은 응용 프로그램이 계속 작업할 수 있도록 디렉터리 서버의 가용성을 향상시키기 위해 배포됩니다. 복제 기능을 사용하면 DSA 간에 부하가 분산되어 성능도 향상될 수 있습니다.
CA Directory 세션 저장소는 대량의 업데이트 요청(수정/추가/제거)을 처리합니다. 로컬 저장소를 포함한 모든 DSA 세션 저장소에서 복제 구성을 최적화하려면 복제를 비동기로 설정하십시오. 비동기적으로 전송된 업데이트는 스레드를 확보하므로 유효성 검사를 위해 대기할 필요 없이 요청을 계속해서 처리할 수 있습니다. 따라서 복제 성능이 효율적입니다.
다음 단계를 수행하십시오.
- DSA의DXHOME/config/knowledge/로 이동합니다.
- 모든 DSA의 지식 구성에서 dsa-flag로multi-write-async옵션을 설정합니다. 예를 들면 다음과 같습니다.[ dsa-flags = multi-write-async, no-service-while-recovering ]
정책 서버에서 세션 저장소를 관리하도록 설정
정책 서버에서 세션 저장소를 관리하도록 하려면 다음 태스크를 완료하십시오.
- DSA에 세션 저장소 관리 사용자를 추가합니다.
- 세션 저장소의 루트 DN을 설정합니다.
- 정책 서버를 세션 저장소에 연결합니다.
DSA의 세션 저장소 관리 사용자 및 루트 DN 추가
정책 서버에서 세션 저장소를 관리하기 위해서는 다음 정보가 필요합니다.
- DSA에 있는 사용자의 전체 고유 이름(DN)과 암호. 정책 서버에서는 이 자격 증명을 사용하여 세션 저장소를 관리합니다.
- 세션 정보를 쓸 수 있는 루트 DN
다음 단계를 수행하십시오.
- 다음 방법 중하나로 익명 인증을 사용하여 DSA에 액세스합니다.
- JXplorer 도구를 사용합니다.
- CA Directory 명령줄 인터페이스를 사용합니다.
- 정책 저장소에서 세션 저장소를 관리하는 데 사용할 수 있는 사용자를 생성합니다.
- 개체 클래스inetOrgPerson으로만 사용자를 생성해야 합니다.
- 자격 증명을 기록합니다. 정책 서버를 세션 저장소 DSA에 연결하려면 이 자격 증명이 필요합니다.
- JXplorer 연결을 해제합니다.
- JXplorer를 시작합니다.
- 앞서 생성한 관리 사용자의 전체 DN을 사용하여 DSA에 로그인하여 DSA에 액세스할 수 있는지 확인합니다.예:cn=admin,o=forwardinc,c=us
- 세션 저장소의 루트 DN으로 사용할 조직 단위를 수동으로 생성합니다.예:ou=sessionstore
- JXplorer 연결을 해제합니다.
참고:
세션 저장소에 대한 권한 없는 액세스를 방지하도록 익명 인증을 비활성화하는 것이 좋습니다.정책 서버를 세션 저장소에 연결
정책 서버가 세션 저장소를 관리할 수 있도록 정책 서버를 세션 저장소 DSA에 연결합니다.
다음 단계를 수행하십시오.
- 정책 서버 관리 콘솔을 엽니다.casso127kkr중요!Windows Server에서 UAC(사용자 계정 컨트롤)를 사용하도록 설정된 경우 관리자 권한으로 바로 가기를 여십시오. 관리자로 시스템에 로그인한 경우에도 관리자 권한을 사용하십시오. 자세한 내용은Single Sign-On구성 요소의 릴리스 정보를 참조하십시오.
- 데이터 탭을 클릭합니다.
- "데이터베이스" 목록에서 "세션 저장소"를 선택합니다.
- "저장소" 목록에서 "CA Directory"를 선택합니다.
- "세션 저장소 사용" 옵션을 선택합니다.
- "LDAP 세션 저장소" 섹션 아래에서 다음 작업을 수행하십시오.
- 세션 저장소 DSA의 IP 주소와 포트를 입력합니다.
- 세션 저장소 DSA의 루트 DN을 입력합니다.예:ou=sessionstore,o=fowardinc,c=us
- DSA의 관리 사용자에 대한 전체 DN을 입력합니다.예:cn=admin,o=forwardinc,c=us
- 관리 사용자의 암호를 입력합니다.
- "LDAP 연결 테스트"를 클릭하여 연결을 확인합니다.
- "확인"을 클릭합니다.
- 정책 서버를 다시 시작합니다.
정책 서버가 세션 저장소를 관리하도록 구성되었습니다.
세션 저장소 성능 최적화
사용 환경에 고성능이 필요한 경우 다음 권장 사항을 고려하십시오.
- CA Directory는 단일 OU의 데이터를 여러 DSA에 나눌 수 있도록 하는 네임스페이스 분할을 지원합니다. 이 경우 더 많은 DSA에서 LDAP 요청 부하를 처리할 수 있으므로 성능에 상당한 영향을 미칠 수 있습니다. 데이터 분할을 사용하면 단일 호스트나 여러 호스트에 있는 여분의 CPU를 비롯하여 사용 가능한 모든 하드웨어를 활용할 수 있습니다. 복제본이 많을수록 디렉터리에 대한 병렬 쓰기가 더 많이 발생할 수 있습니다.사용 환경의 기존 호스트나 이용 중이 아닌 다른 호스트에 CPU 또는 코어가 있는 경우 CA Directory 네임스페이스를 분할하도록 구성하는 것이 좋습니다.
- 모든 세션 저장소 특성을 인덱싱하지 마십시오. 세션 데이터에 대해 너무 많은 인덱스를 구성하면 삭제 성능이 저하됩니다. 배포에 사용되는 세션 저장소 특성만 인덱싱하십시오. 배포 환경에서 사용되는 인덱스를 확인하려면 CA Directory 설명서를 참조하십시오.
- 파티션을 사용하되 각 파티션을 개별 호스트에 배치하십시오.
- 각 호스트의 모든 CA Directory 서버 데이터 파일을 충분한 물리적 메모리에 포함할 수 있도록 하십시오. 호스트는 물리적 시스템이거나 게스트 인스턴스일 수 있습니다. 데이터 파일의 크기는 CA Directory 서버 설치의 데이터 디렉터리에서 확인할 수 있습니다.
- DSA의 초기화 파일(dsa_name.dxi)에서 다음 항목을 확인하십시오. 이 파일은DXHome/config/servers 디렉터리에 있습니다. 파일에 이러한 항목이 없으면 추가하십시오.
- 서버 파일에 다음 명령을 추가하여 CA Directory 트랜잭션 로깅을 비활성화하십시오.# disable transaction logging for performanceset disable-transaction-log = true;set disable-transaction-log-flush = true;참고:서비스 중단이 발생할 경우 복제를 활성화하지 않고 트랜잭션 로깅을 비활성화하려면 사용자가 다시 로그인해야 합니다.
- dxgrid-queue 명령을 추가하여 기본 단일 큐를 사용하십시오. 이 명령에 대한 기본 설정은 "true"입니다. 예를 들면 다음과 같습니다.# use single queue in front of DSA instead of# one queue per threadset dxgrid-queue = true;
연결 풀
연결 풀은 이후에 데이터베이스에 대한 요청이 필요할 때 연결을 다시 사용할 수 있도록 유지 관리되는 데이터베이스 연결 핸들의 캐시입니다. 정책 서버는 연결 풀(기본 LDAP 연결 핸들 수 10개)을 사용하여 세션 저장소 성능을 높입니다.
그러나 세션 저장소 연결 핸들을 필요로 하는 동시 스레드가 너무 많으면 연결 풀의 부하가 높아지고 스레드 큐가 가득 찰 수 있습니다. 이 문제를 진단하려면 LDAP 핸들이 잠기기 전에 정책 서버 프로파일러 로그에서 지연된 요청을 검색하십시오. 이러한 지연은 세션 저장소 연결의 수를 늘려야 함을 나타냅니다.
프로파일러 로그에서 발췌한 다음 예에서는 작업자 스레드 ID 3003599728이 2초 동안 기다린 후에야 LDAP 연결 핸들을 얻을 수 있었음을 보여 줍니다.
[13:23:38.671][26918][3003599728][Leave function CSm_Auth_Message::SetAuthContext][Sm_Auth_Message.cpp:4280][CSm_Auth_Message::SetAuthContext][13:23:40.671][26918][3003599728][Lock LDAP handle. slot=0 ld=0xb3071fe0][LdapStore.cpp:375][Lock_LdapHandle]
(굵게 표시된 메시지 타임스탬프 간의 시간차 2초가 지연을 나타냅니다.)
세션 저장소 연결 풀의 크기를 늘리려면 다음 레지스트리 위치에서 찾을 수 있는 MaxConnections 레지스트리 설정의 값을 수정하십시오.
HKEY_LOCAL_MACHINE\SOFTWARE\Netegrity\SiteMinder\CurrentVersion\LdapSessionServer=numeric_id
값
: 연결 풀 크기(16진수). 예: 0xf(15)기본값
: 0xa(10)참고
: 작업자 스레드 2개마다 최소 1개의 연결 핸들을 사용할 수 있도록 최대 작업자 스레드 값의 절반에 가깝게 값을 구성하십시오. 이 권장 사항은 사용되는 하드웨어와 기타 환경 요인에 따라 달라집니다. 최적의 성능을 위해서는 테스트 환경에서 이러한 설정을 테스트한 후 필요한 대로 수정하여 사용 환경에 맞게 조정하는 것이 좋습니다.대규모 환경에서 만료된 세션이 과도할 경우 삭제
CA Directory를 세션 저장소로 사용하도록 구성된 정책 서버는 세션을 생성한 다음 만료된 세션을 정리해야 합니다. 정책 서버는 사용자가 인증할 때 세션을 생성하며, 그런 다음에는 정기적으로 만료된 세션을 검색하여 제거합니다.
대규모 환경에서는 CA Directory 세션 저장소에 만료된 세션이 너무 많이 있을 수 있습니다. 이 문제가 발생할 경우 CA Support에 문제를 제출하면 CA Support 팀에서 만료된 세션을 지속적으로 확인하고 제거하는 SMDeleteSession 유틸리티를 제공할 수 있습니다.