Sun Java System Instant Messaging 7.2 관리 설명서

7장 리디렉션 서버를 사용하여 Instant Messaging 서버 풀 최적화

Instant Messaging과 함께 제공되는 리디렉션 서비스를 사용하면 한 서버 풀에서 서버 간의 로드를 균형 조정할 수 있습니다(여러 노드 배포 환경). 단일 배포 내 서버 간에 필요한 통신량은 성능에 직접적인 영향을 미치므로 상태 확인 정보와 메시지를 공유할 두 사용자가 동일한 노드에서 수행하는 작업의 성공 확률을 높이면 성능을 개선할 수 있습니다.

Instant Messaging 리디렉션 서버를 사용하기 위해 이 장에서 다루는 내용은 다음과 같습니다.

Instant Messaging 리디렉션 개요

리디렉션 서버는 Instant Messaging 서버에 연결 종단점 할당과 같은 리디렉션 작업을 수행하도록 특별히 구성된 Instant Messaging 서버 인스턴스입니다. 배포 환경에 리디렉션 서버를 추가하면 같은 호스트에서 서로 통신할 가능성이 높은 사용자들을 그룹화하여 서버 간 통신량을 줄일 수 있습니다. 이렇게 하면 배포 환경에서 서버 간에 전달되는 상태 확인 알림도 줄일 수 있습니다. 사용자 그룹은 대화 상대 목록의 내용에 따라 결정됩니다. 대화 상대 목록의 공유 항목은 통신할 가능성이 더 높다는 것을 나타냅니다.

Instant Messaging 사용자 분할 영역 알고리즘

Instant Messaging은 배포 환경에서 사용자들을 최적으로 구분하는 방법을 결정하여 사용자의 그룹이나 분할 영역을 만듭니다. Instant Messaging에서 사용하는 알고리즘은 다음과 같습니다.

  1. 배포 환경에서 사용자 또는 사용자 네트워크 집합 중 하나 이상 및 해당 연결을 결정합니다. 그런 다음 리디렉션 서버에서 각 사용자를 사용자 네트워크에 매핑하는 사용자 대 네트워크 맵이라는 테이블을 만듭니다.

  2. 연결이 약한 구성 요소 각각의 최대 크기가 구성된 분할 영역 크기보다 크지 않도록 최대 분할 영역 크기보다 큰 사용자 네트워크를 가장 약한 연결을 기준으로 하여 분할합니다. 사용자 네트워크를 분할할 경우 사용자 네트워크 간의 연결 수가 적은 것을 약한 연결로 결정할 수 있지만 지리적 제약 조건, 사용자 네트워크당 연결 수, 관리자가 설정한 기타 제약 조건 등 다른 매개 변수도 고려할 수 있습니다.

  3. 크기가 대략 비슷하고 개수가 지정된 분할 영역에 집합을 배포합니다. 먼저 리디렉션 서버에서 이 프로세스의 일부로 네트워크 대 분할 영역 테이블을 만들고, 마지막으로 사용자 대 분할 영역 테이블을 만듭니다. 이러한 테이블은 모두 리디렉션 데이터베이스를 구성합니다. 리디렉션 데이터베이스에서는 분할 영역 아이디로 각 사용자가 매핑됩니다. rdadmin 명령줄 유틸리티를 사용하여 이 데이터베이스를 만들고 관리합니다.


예 7–1 Instant Messaging 리디렉션 이벤트 순서

이 예에서는 클라이언트 리디렉션이 성공하는 이벤트의 순서를 설명합니다.

  1. 관리자가 rdadmin을 실행하여 리디렉션 데이터베이스를 생성하거나 업데이트합니다.

  2. 사용자가 리디렉션 서버에 연결하여 인증을 시도합니다.

  3. 리디렉션 서버에서 사용자의 Identity를 확인한 다음 해당 사용자 아이디를 리디렉션 데이터베이스에서 찾습니다.

  4. 리디렉션 서버에서 사용자 아이디를 찾지 못하면 라운드 로빈 메커니즘으로 결정되는 다음 리디렉션 서버에 연결하여 해당 사용자 아이디를 포함한 리디렉션 데이터베이스를 찾습니다. 리디렉션 서버에서 사용자 아이디를 찾으면 사용자가 할당된 분할 영역 아이디를 가져옵니다.

  5. 리디렉션 서버에서 할당된 분할 영역 아이디를 기준으로 사용자를 리디렉션할 노드를 결정합니다.

  6. 리디렉션 서버에서 리디렉션할 노드가 있는 클라이언트에 오류를 반환하고 해당 클라이언트 연결을 닫습니다.

    리디렉션 서버에서 see-other-host 스트림 오류를 사용하여 클라이언트에 해당 정보를 반환합니다. 자세한 내용은 RFC 3920을 참조하십시오.

  7. 클라이언트에서 오류를 해석하여 오류와 함께 반환된 노드에 연결합니다.

  8. 리디렉션 서버에서 노드를 계속 모니터링하고 필요한 경우 분할 영역 대 호스트 테이블을 업데이트합니다.


Instant Messaging 리디렉션 데이터베이스 정보

이 데이터베이스에는 로컬 사용자만 포함되며,게이트웨이, 구성 요소 및 원격 사용자는 포함되지 않습니다.

Instant Messaging 리디렉션 서버 개요

리디렉션 서버는 클라이언트 연결을 리디렉션하는 기능만 수행하는 Instant Messaging 서버 인스턴스이며,최종 사용자에 대해 어떤 서비스도 수행하지 않습니다. 시작 시 리디렉션 서버에서 서버 구성과 분할 영역 파일을 로드하고 다음 데이터 구조를 만듭니다.

리디렉션 서버에서는 두 데이터 구조를 모두 사용하여 클라이언트 연결을 리디렉션합니다. 리디렉션 서버에서 이 정보를 사용하는 방법은 예 7–1을 참조하십시오.

Instant Messaging 리디렉션 서버 및 StartTLS

연결하는 클라이언트의 Identity를 설정하는 데 필요한 만큼 StartTLS 협상이 클라이언트와 리디렉션 서버 간에 발생할 수 있습니다. 클라이언트에서는 자격 증명을 확인하지 않고 사용자 아이디만 요구합니다.

리디렉션 서버로 Instant Messaging 서버 인스턴스 구성

서버 인스턴스를 리디렉션 서버로 지정하려면 iim.conf 파일에서 iim_server.redirect.provider 매개 변수 값을 제공해야 합니다. 이렇게 하고 나서 iim.conf 파일에서 리디렉션에 관련된 추가 매개 변수 값을 지정하여 구성 정보를 더 자세히 제공해야 합니다. 표 7–1에서는 리디렉션 구성 매개 변수를 설명합니다.

표 7–1 iim.conf의 리디렉션 서버 구성 매개 변수

매개 변수 

기본값 

설명 

iim_server.redirect.provider

없음 

com.sun.im.provider.Redirector 인터페이스를 구현하는 리디렉션 공급자 이름 또는 클래스를 쉼표로 구분한 목록입니다. 이 매개 변수의 값은 서버 인스턴스를 리디렉션 서버로 정의합니다. 지원되는 값은 com.sun.im.provider.Redirector 인터페이스를 구현하는 db, roundrobin, regex 및 클래스 이름입니다.

iim_server.redirect.to

없음 

이 리디렉션 서버에서 클라이언트 연결을 리디렉션할 수 있는 노드를 쉼표로 구분한 목록입니다. 노드 이름은 영숫자 문자열입니다. 이 목록은 iim_server.redirect.to.nodename.host에 정의된 호스트의 초집합일 수 있습니다.

iim_server.redirect.to.nodename.host

없음 

nodenameiim_server.redirect.to에 있는 노드의 이름입니다. 이 속성은 리디렉션 서버에서 사용될 nodename에 필요합니다.

iim_server.redirect.to.nodename.usessl

False 

true이면 nodename에서 레거시 SSL을 사용하도록 구성됩니다. 자세한 내용은 Instant Messaging에서의 TLS 및 레거시 SSL 사용 개요를 참조하십시오.

iim_server.redirect.db.users

im-db-base/redirect.db

리디렉션 데이터베이스의 이름과 위치 

iim_server.redirect.db.partitions

im-cfg-base/redirect.partitions

리디렉션 분할 영역 파일의 이름과 위치 

iim_server.redirect.db.partitionsize

5000 

분할 영역의 최대 사용자 수 

iim_server.redirect.roundrobin.partitions

im-cfg-base/redirect.partitions

리디렉션 분할 영역 파일의 이름과 위치 

iim_server.redirect.pollfrequency

 

리디렉션 서버에서 redirect.hosts 파일에 정의된 호스트에 연결하는 간격입니다. 리디렉션 서버는 이러한 호스트를 폴링하여 온라인 상태에서 클라이언트 연결을 받아들일 수 있는지 여부를 확인합니다.

ProcedureInstant Messaging 서버를 리디렉션 서버로 구성하려면

시작하기 전에

2006Q1 이전 버전의 Instant Messenger은 리디렉션 서버에 사용할 수 없습니다. 타사 클라이언트를 사용하는 경우 해당 클라이언트에서 XMPP 리디렉션을 지원하는지 확인하십시오.

  1. 위의 표 7–1에 있는 정보를 수집합니다.

  2. iim.conf를 엽니다.

    이 파일의 찾기 및 수정에 대한 지침은 부록 A, iim.conf 의 Instant Messaging 구성 매개 변수를 참조하십시오.

  3. 배포 환경에 맞게 매개 변수 값을 수정합니다.

    표 7–1에서는 값을 제공해야 하는 매개 변수를 나열합니다. iim.conf에 매개 변수가 없으면 해당 매개 변수를 추가합니다. 다음 예는 수정해야 하는 리디렉션 서버 매개 변수에 해당하는 iim.siroe.comiim.conf 섹션을 보여 줍니다.


    iim_server.redirect.provider=db,roundrobin
    iim_server.redirect.to=imserverA,imserverB
    iim_server.redirect.to.imserverA.host=iimA.siroe.com
    iim_server.redirect.to.imserverB.host=iimB.siroe.com
    iim_server.redirect.to.imserverA.usessl=false
    iim_server.redirect.to.imserverB.usessl=false
  4. 변경 내용을 저장한 다음 iim.conf를 닫습니다.

  5. 리디렉션 서버의 구성을 새로 고칩니다.


    imadmin refresh server
    
  6. 멀티플렉서 대신 리디렉션 서버에 연결하도록 클라이언트를 구성합니다.

Instant Messaging 리디렉션 서버 관리

Instant Messaging 리디렉션 서버를 관리하기 위해 이 절에서 다루는 내용은 다음과 같습니다.

Instant Messaging 리디렉션 서버 중지, 시작, 재시작, 새로 고침 및 상태 확인

리디렉션 서버는 리디렉션만 수행하도록 구성된 Instant Messaging 서버 인스턴스입니다. 일반 서버 인스턴스에 사용하는 것과 동일한 절차를 중지, 시작, 재시작, 새로 고침 및 상태 확인에 사용하십시오. 예를 들어 리디렉션 서버를 시작하려면 다음을 입력합니다.


imadmin start server

자세한 내용은 Instant Messaging 구성 요소 중지, 시작, 새로 고침 및 확인 을 참조하십시오.

Instant Messaging 리디렉션 서버 로깅

리디렉션 서버는 리디렉션만 수행하도록 구성된 Instant Messaging 서버 인스턴스입니다. 일반 서버 인스턴스에 사용하는 것과 동일한 지침과 로그를 사용하십시오. 자세한 내용은 13 장, Instant Messaging 로깅 관리을 참조하십시오.

Instant Messaging 리디렉션 서버의 분할 영역 크기 설정

iim.confiim_server.redirect.db.partitionsize 매개 변수를 설정하여 최대 분할 영역 크기를 지정할 수 있습니다. 이 매개 변수 값은 분할 영역당 최대 허용 사용자 수와 같습니다. 기본값은 5,000(사용자 수)입니다.

Instant Messaging 리디렉션 서버의 분할 영역 목록 지정

redirect.partitions 파일은 특정 분할 영역의 사용자가 리디렉션되는 기본 노드와 일련의 폴백 노드(선택 사항)를 정의합니다. 이 파일에서 비어 있지 않고 주석 처리되지 않은 각 줄에 분할 영역의 노드 목록을 정의합니다. 목록의 각 노드는 iim.confiim_server.redirect.to 매개 변수 값으로 정의된 노드와 일치해야 합니다. 정의된 분할 영역이 redirect.partitions 파일의 줄 수보다 더 많은 경우 지정되지 않은 분할 영역은 라운드 로빈 방식으로 처리됩니다.

기본적으로 redirect.partitions 파일은 다음 위치에 저장됩니다.


im-cfg-base/redirect.partitions

예 7–2 Redirect.partitions 파일 구성

redirect.partitions 파일 예는 다음을 가정합니다.

이 시나리오에서 redirect.partitions에는 다음 항목이 포함됩니다.


imserverA, imserverB, imserverC
imserverB, imserverC

비어 있지 않고 주석 처리되지 않은 두 줄은 사용자 분할 영역이 둘 이상 있음을 나타냅니다. 첫 번째 줄은 분할 영역 1의 리디렉션 동작을 정의합니다. 리디렉션 서버에서는 먼저 분할 영역 1 사용자를 imserverA로 리디렉션합니다. 이 동작이 실패하면 리디렉션 서버에서 imserverBimserverC를 차례로 시도합니다. 작동되는 노드가 없는 경우 리디렉션 서버에서 클라이언트에 오류를 반환합니다.


rdadmin 유틸리티를 사용한 Instant Messaging 리디렉션 테이블 만들기 및 관리

일반적으로 rdadmin 유틸리티는 필요에 따라 사용합니다. Roster 변경사항은 대개 대용량이 아니므로 빈번하게 테이블을 다시 생성할 필요가 없지만 2주마다 한 번 이상 이 유틸리티를 실행해야 합니다.

Procedure기존 Instant Messaging 리디렉션 데이터베이스를 새로 만들거나 업데이트하려면

  1. 리디렉션 서버를 중지합니다.


    imadmin stop redirect
    
  2. 기존 리디렉션 데이터베이스를 업데이트하는 경우 rdadmin을 통해 이전에 만든 분할 영역 수를 파악합니다.

    1. 텍스트 편집기에서 rdadmin.log 파일을 엽니다.

      rdadmin.log 파일은 다음 위치에 저장됩니다.


      im-runtime-base/log
    2. "NO OF PARTITIONS RUN"이라는 값을 찾습니다.

  3. 분할 영역 개수 이상의 사용자 항목이 있는지 확인합니다.

  4. 새 리디렉션 데이터베이스를 생성합니다.

    예를 들면 다음과 같습니다.


    rdadmin generate

    rdadmin 추가 옵션에 대해서는 rdadmin 설명서 페이지를 참조하십시오.

    rdadmin 유틸리티에서 새 데이터베이스를 만들고 다른 이름을 지정하지 않으면 이 데이터베이스를 im-db-base/redirect.new.db로 저장합니다.

  5. 리디렉션 데이터베이스를 처음 생성하는 경우 데이터베이스 이름을 redirect.db로 변경합니다.

  6. 기존 리디렉션 데이터베이스를 업데이트하는 경우 기존 리디렉션 데이터베이스를 새 데이터베이스로 대체합니다.

    예를 들면 다음과 같습니다.


    rm im-db-base/redirect.db
    cp im-db-base/redirect.new.db im-db-base/redirect.db
    
  7. 리디렉션 서버를 시작합니다.


    imadmin start redirect
    

Instant Messaging 리디렉션 서버의 물리적 호스트 모니터링

리디렉션 서버는 클라이언트를 리디렉션할 호스트의 작동 상태를 모니터링합니다. 리디렉션 서버에서 호스트 중 하나가 실패했다고 확인하면 redirect.partitions 파일에 정의된 대로 후속 호스트에 분할 영역을 다시 할당합니다. 또한 리디렉션 서버는 호스트가 다시 온라인 상태가 되는 시점을 검색하여 분할 영역이 해당 호스트로 다시 리디렉션될 수 있게 합니다. 리디렉션 서버는 다음의 두 가지 방법으로 호스트를 모니터링합니다.

Procedure Instant Messaging 리디렉션 서버의 호스트 폴링 빈도를 설정하려면

  1. 리디렉션 서버에서 iim.conf를 엽니다.

    이 파일의 찾기 및 수정에 대한 지침은 부록 A, iim.conf 의 Instant Messaging 구성 매개 변수를 참조하십시오.

  2. iim_server.redirect.pollfrequency 매개 변수를 설정합니다.

    이 값은 분 단위입니다. 예를 들면 다음과 같습니다.


    iim_server.redirect.pollfrequency=200
  3. iim.conf를 저장하고 닫습니다.

  4. 리디렉션 서버를 새로 고칩니다.


    imadmin refresh server
    

Instant Messaging 리디렉션 서버에 대한 유용한 정보 및 문제 해결

이 절에서 설명하는 Instant Messaging 리디렉션 서버에 대한 유용한 정보와 문제 해결 정보는 다음과 같습니다.

리디렉션 서버 인증서

보안 인증을 위해 인증서를 사용하는 배포 환경에서는 연결할 때마다 두 인증서를 승인하도록 요청하는 메시지가 클라이언트에 표시될 수 있습니다. 두 인증서의 경우 하나는 리디렉션 서버에 대한 인증서이며 다른 하나는 클라이언트가 리디렉션되는 호스트에 대한 인증서입니다. 이 문제를 해결하려면 신뢰할 수 있는 인증서를 사용하거나 두 서버에 대해 동일한 인증서를 사용하십시오.

Instant Messaging 리디렉션 서버 지원 클라이언트

특히 RFC 3920 및 see-other-host 스트림 오류(XMPP 리디렉션)를 지원하지 않는 클라이언트에서는 리디렉션이 작동하지 않습니다. Instant Messenger 2006Q1 이상은 리디렉션 서버에 사용할 수 있습니다. 타사 클라이언트를 사용하는 경우 해당 클라이언트에서 XMPP 리디렉션을 지원하는지 확인하십시오.

LDAP에서의 리디렉션 서버 사용 및 사용자 등록 정보 저장

사용자 등록 정보를 저장하는 데 LDAP, 즉 iim.userprops.store=ldap를 사용하는 경우 iim_ldap.usergroupbinddniim_ldap.usergroupbindcred의 값에 이 디렉토리에 대한 디렉토리 관리자 수준 액세스 권한이 있는지 확인해야 합니다.

리디렉션 데이터베이스의 분할 영역 크기 결정

분할 영역 크기는 사용자 네트워크가 분할되지 않도록 가능한 한 커야 하지만 가장 작은 시스템에서 지원할 수 있는 크기보다 크지 않아야 합니다.

분할 영역 호스트로 리디렉션 서버 사용

리디렉션 서버에서 분할 영역을 하나 이상 호스트할 수도 있습니다. 이렇게 하려면 리디렉션 서버 인스턴스를 redirect.partitions 파일에 나열하거나 iim_server.redirect.to 매개 변수 값으로 나열하면 됩니다. 그러나 동기화되지 않는 redirect.partitions 파일로 인해 리디렉션 루프가 발생할 수 있으므로 분할 영역 호스트로 리디렉션 서버를 둘 이상 지정해서는 안됩니다.