| |
| Sun Java System Message Queue 3 2005Q4 기술 개요 | |
3장
Message Queue 서비스Message Queue 클라이언트 성능은 클라이언트 설계 및 Message Queue 서비스를 구성하고 관리하는 방법에 따라 다릅니다. 이 장에서는 1장에서 소개한 Message Queue 서비스에 대해 보다 자세히 설명합니다. 서비스 구성 요소를 검토하고 이러한 구성 요소를 구성하는 데 사용하는 도구를 소개하며 여러 환경에서 메시지 서비스를 관리하는 데 필요한 작업을 요약합니다. 이 장은 다음 내용으로 구성되어 있습니다.
구성 요소 서비스그림 3-1은 Message Queue 서비스를 보여줍니다. 2장에서는 프로그래밍 모델, 클라이언트가 Java 및 C API를 사용하여 클라이언트 런타임과 상호 작용하는 방법 및 클라이언트 응용 프로그램에서 액세스할 수 있는 메시지 서비스 부분에 대해 설명합니다. 이 장에서는 관리자가 액세스할 수 있는 메시지 서비스의 구성 요소 및 서비스에 대해 중점적으로 설명합니다.
그림 3-1 Message Queue 서비스
브로커 등록 정보를 설정하여 Message Queue 서비스를 제어합니다. 이러한 등록 정보는 특정 등록 정보의 영향을 받은 서비스 또는 브로커 구성 요소에 따라 여러 범주로 나뉩니다. 브로커 서비스에는 다음이 포함됩니다.
다음 유지 관리은 이러한 각 서비스에 대해 설명하고 필요 사항에 맞게 서비스를 사용자 정의하는 데 사용하는 등록 정보를 요약합니다.
브로커 등록 정보는 여러 구성 파일에서 정의되며 브로커를 시작하는 데 사용되는 명령줄에서 정의될 수도 있습니다. Message Queue 관리 설명서에서는 구성 파일에 대해 설명하며 또한 특정 구성 파일에 설정된 구성 요소 값이 다른 구성 파일에 설정된 값을 대체하는 데 사용될 수 있는 우선 순위에 대해 설명합니다. 시작 명령으로 설정한 등록 정보는 다른 모든 설정에 우선합니다.
연결 서비스
연결 관련 등록 정보를 사용하여 브로커와 해당 브로커의 클라이언트 간의 물리적 연결을 구성 및 관리할 수 있습니다. Message Queue 클라이언트에서 사용할 수 있는 연결 서비스의 이름, 유형, 기본 프로토콜 등에 대해서는 브로커에 연결에서 설명합니다. 연결 서비스는 다중 스레드되고 브로커의 포트 매퍼가 동적으로 할당할 수 있거나 관리자가 정적으로 할당할 수 있는 전용 포트를 통해 사용할 수 있습니다. 기본적으로 브로커를 시작하면 jms 및 admin 서비스가 시작되고 실행됩니다.
모든 연결에는 양측이 있기 때문에 연결 구성은 양측에서 이루어지며 또한 양측에서 함께 조정되어야 합니다.
- 클라이언트는 기본값이 아닌 연결 서비스, 호스트 및 포트를 요청하고 다른 브로커와의 재연결이 필요한 경우 연결할 브로커 목록을 지정하고 재연결 작동을 구성하도록 연결 팩토리 객체의 특정 속성을 구성해야 합니다. 클라이언트는 핑 간격을 지정하여 실패한 연결에 대해 테스트할 수 있습니다.
- 관리자는 브로커 등록 정보를 사용하여 기본값이 아닌 연결 서비스를 활성화하고 필요한 경우 정적 포트를 할당하고 스레딩을 구성하며 여러 네트워크 카드가 사용되는 경우 연결할 호스트를 지정합니다. 관리자는 핑 간격을 지정하여 클라이언트에 액세스할 수 있는지 여부를 테스트할 수 있으며 이러한 기능은 자원을 관리하는 데 유용합니다.
클라이언트는 방화벽을 통해 Message Queue 서비스에 연결할 수 있습니다. 이렇게 하려면 방화벽 관리자에게 특정 포트를 열어 놓도록 요청한 다음 해당 (정적) 포트에 연결하거나 HTTP 연결에 요약된 것처럼 HTTP 또는 HTTPS 서비스를 사용하면 됩니다.
각 연결 서비스는 특정 인증 및 권한 부여 기능도 지원합니다. 자세한 내용은 보안 서비스를 참조하십시오.
포트 매퍼
연결 서비스는 브로커의 주 포트인 7676에 있는 일반 Port Mapper를 통해 동적으로 포트를 할당합니다. Message Queue 클라이언트 런타임에서 브로커와의 연결을 설정하는 경우 먼저 포트 매퍼에 연결하여 선택한 연결 서비스의 포트 번호를 요청합니다.
jms, ssljms, admin 및 ssladmin 연결 서비스를 구성할 때 이들 연결 서비스에 대하여 정적 포트 번호를 지정하여 포트 매퍼를 대체할 수 있습니다. 하지만 정적 포트는 대개 방화벽을 통한 연결과 같은 특수 상황에서만 사용되므로 일반적으로 권장되지 않습니다.
스레드 풀 관리
각 연결 서비스는 다중 스레드 방식으로서, 다중 연결을 지원합니다. 이러한 연결에 필요한 스레드는 풀에 있는 브로커에서 유지 관리합니다. 할당 방법은 최소 및 최대 스레드 값에 대해 지정한 값 및 선택한 스레딩 모델에 따라 다릅니다.
브로커 등록 정보를 설정하여 스레드의 최소 및 최대 수를 지정할 수 있습니다. 연결 시 스레드가 필요하면 해당 연결을 지원하는 서비스의 스레드 풀에 스레드가 추가됩니다. 최소 수는 할당할 수 있는 스레드 수를 지정합니다. 사용 가능한 스레드가 최소 임계값을 초과할 경우, 시스템은 최소 임계값에 도달할 때까지 스레드를 종료시켜 여유 스레드를 확보하는 방법으로 메모리 자원을 유지 관리합니다. 로드량이 많은 경우 풀의 최대 수에 도달할 때까지 스레드 수가 증가할 수 있습니다. 이러한 경우 스레드를 사용할 수 있을 때까지 새 연결이 거부됩니다.
선택한 스레딩 모델은 스레드가 단일 연결 전용인지 또는 여러 연결에서 공유할지 여부를 지정합니다.
대상 및 라우팅 서비스
브로커에 클라이언트가 연결되면 메시지 경로 지정 및 전달이 수행될 수 있습니다. 이 단계에서 브로커는 여러 종류의 물리적 대상을 작성 및 관리하여 메시지의 원활한 흐름을 보장하고 자원을 효율적으로 관리합니다. 브로커에서 경로 지정 및 대상과 관련된 브로커 등록 정보를 사용하여 사용자의 응용 프로그램 요구 사항을 충족하는 방식으로 이러한 작업을 관리합니다.
메시지 사용자에게 메시지를 전달하기 전에 메시지가 저장되는 메모리 위치인 브로커의 물리적 대상에 대한 개념을 이미 소개했습니다. 다음은 4가지 종류의 물리적 대상입니다.
- 관리 작성 대상은 관리자가 GUI (imqadmin) 또는 imqcmd 유틸리티를 사용하여 작성합니다. 이들 대상은 프로그램 방식으로 작성된 논리 대상이나 관리자가 작성하여 클라이언트에 의해 조회되는 대상 관리 객체에 해당합니다. imqcmd 유틸리티를 사용하여 각 관리 작성 대상의 등록 정보를 설정 및 업데이트할 수 있습니다.
- 자동 작성 대상은 존재하지 않는 대상에 액세스를 시도할 때마다 브로커에서 자동으로 작성됩니다. 이러한 대상은 일반적으로 개발 과정에서 사용됩니다. 이러한 대상의 작성을 허용하지 않도록 브로커 등록 정보를 설정할 수 있습니다. 브로커 등록 정보를 사용하여 특정 브로커의 모든 자동 작성 대상을 구성할 수 있습니다.
대상 관리
imqcmd 유틸리티를 사용하여 대상을 관리합니다. 대상 관리는 다음 여러 작업을 포함합니다.
작업 관리는 관리 작성, 자동 작성, 임시 또는 사용 불가능 메시지 대기열과 같은 대상의 종류에 따라 달라집니다. 예를 들어 임시 대상은 명시적으로 삭제될 필요가 없으며 자동 작성된 등록 정보는 해당 브로커의 모든 자동 작성 대상에 적용되는 브로커 구성 등록 정보를 사용하여 구성됩니다.
물리적 대상 구성
최적의 성능을 얻기 위해 물리적 대상을 작성하거나 업데이트할 때 등록 정보를 설정할 수 있습니다. 설정할 수 있는 등록 정보는 다음을 포함합니다.
대기열 대상의 경우 최대 백업 사용자 수를 구성할 수도 있으며(클러스터된 브로커의 경우) 로컬 대기열로 전달이 권장되는지 여부를 지정할 수 있습니다.
사용 불능 메시지 대기열의 제한 및 작동을 구성할 수도 있습니다. 그러나 이러한 대기열의 기본 등록 정보는 표준 대기열의 등록 정보와 다릅니다.
메모리 관리
대상은 처리하는 메시지의 수 및 크기, 등록하는 사용자의 수 및 지속성에 따라 많은 양의 자원을 사용할 수 있으므로 메시지 서비스의 성능 및 안정성을 보장하도록 면밀하게 관리해야 합니다.
등록 정보를 설정하여 브로커가 받는 메시지로 넘치는 것을 방지하고 브로커의 메모리 부족을 방지할 수 있습니다. 브로커는 세 가지 수준의 메모리 보호 즉, 대상 제한, 시스템 전체 제한 및 시스템 메모리 임계값을 사용하여 자원이 부족하게 될 때 시스템을 계속 작동시킵니다. 이상적인 경우 대상 제한 및 시스템 전체 제한이 적절히 설정되면 중요 시스템 메모리 임계값이 침해되지 않습니다.
대상 메시지 제한
대상 속성을 사용하여 각 대상의 메모리 및 메시지 흐름을 관리할 수 있습니다. 예를 들어, 대상에 허용되는 최대 생성자 수, 대상에 허용되는 최대 메시지 수(또는 크기) 및 단일 메시지의 최대 크기를 지정할 수 있습니다.
제한에 도달하면 생성자 속도 줄이기, 가장 오래된 메시지 삭제, 가장 낮은 우선 순위의 메시지 삭제 또는 최신 메시지 거부와 같이 브로커의 응답 방법을 지정할 수도 있습니다.
시스템 전체 메시지 제한
등록 정보를 사용하여 브로커의 모든 대상에 적용할 제한을 설정할 수 있습니다. 최대 메시지 수 및 모든 메시지에서 사용하는 메모리를 지정할 수 있습니다. 시스템 전체 메시지 제한에 도달하면 브로커는 새 메시지를 거부합니다.
시스템 메모리 임계값
마지막으로 등록 정보를 사용하여 브로커가 메모리 과부하 방지를 위한 조치로서 수위를 점점 높이게 되는 임계값을 설정할 수 있습니다. 조치는 다음과 같이 메모리 자원 상태에 따라 달라집니다. 초록(사용 가능한 메모리 충분), 노랑(브로커 메모리 감소 중), 주황(브로커 메모리 부족), 빨강(브로커가 사용할 수 있는 메모리 없음). 브로커의 메모리 상태가 초록에서 빨강으로 진행될수록 브로커는 조치의 수위를 점점 높입니다.
지속성 서비스
오류 발생 시 브로커를 복구하려면 메시지 전달 작업 상태를 다시 작성해야 합니다. 이렇게 하려면 데이터 저장소에 상태 정보를 저장해야 합니다. 브로커가 다시 시작되면 저장된 데이터를 사용하여 대상 및 영구 가입을 다시 작성하고 지속성 메시지를 복구하며, 열린 트랜잭션을 롤백하고 전달되지 못한 메시지의 경로 지정 테이블을 다시 작성합니다. 그런 다음 메시지 전달을 다시 시작할 수 있습니다.
Message Queue는 파일 기반 및 JDBC 호환 지속성 모듈(그림 3-2 참조)을 지원하고 기본적으로 파일 기반 지속성을 사용합니다.
그림 3-2 지속성 지원
파일 기반 지속성
파일 기반 지속성은 개별 파일을 사용하여 영구 데이터를 저장하는 메커니즘입니다. 파일 기반 지속성을 사용하면 브로커 등록 정보를 사용하여 다음을 수행할 수 있습니다.
일반적으로 파일 기반 지속성은 JDBC 기반 지속성 보다 빠릅니다. 그러나 JDBC 호환 저장소에서 제공하는 중복 및 관리 기능을 선호하는 사용자도 있습니다.
JDBC 기반 지속성
JDBC 기반 지속성은 JDBC� (Java Database Connectivity) 인터페이스를 사용하여 브로커를 JDBC 호환 데이터 저장소에 연결합니다. JDBC 드라이버를 통해 브로커가 데이터 저장소에 액세스하도록 하려면 다음을 수행해야 합니다.
이러한 작업 완료를 위한 유지 관리차 완료 및 관련 구성 등록 정보는 Message Queue 관리 설명서에 자세히 설명되어 있습니다.
보안 서비스
Message Queue 서비스는 각 브로커 인스턴스에 대한 인증 및 권한 부여(액세스 제어)를 지원하고 암호화 기능도 지원합니다.
인증 및 권한 부여는 사용자 이름, 비밀번호 및 그룹 멤버쉽과 같은 메시징 시스템의 사용자에 대한 정보를 포함하는 저장소에 따라 다릅니다. 또한 사용자 또는 그룹의 특정 작업에 대한 권한을 부여하기 위해 브로커는 사용자 또는 그룹이 수행할 수 있는 작업을 지정하는 액세스 제어 등록 정보 파일을 확인해야 합니다. 브로커에서 사용자 인증 및 작업에 대한 권한 부여에 필요한 정보를 설정합니다.
그림 3-3은 인증 및 권한 부여를 제공하기 위해 브로커가 필요로 하는 구성 요소를 보여줍니다.
그림 3-3 보안 관리자 지원
그림 3-3에 표시된 것처럼 Message Queue 서비스와 함께 제공되는 플랫 파일 사용자 저장소에 사용자 데이터를 저장하거나 기존 LDAP 저장소에 플러그 인할 수 있습니다. 브로커 등록 정보를 설정하여 선택을 나타냅니다.
인증 및 권한 부여
클라이언트가 연결을 요청할 경우 이 클라이언트는 사용자 이름 및 비밀번호를 제공해야 합니다. 브로커는 사용자 저장소에 저장된 이름 및 비밀번호와 특정 이름 및 비밀번호를 비교합니다. 클라이언트가 브로커에게 비밀번호를 전송할 때 이 비밀번호는 기본 64 인코딩이나 메시지 다이제스트(MD5)를 사용하여 암호화됩니다. MD5는 플랫 파일 저장소에 사용되고 기본 64는 LDAP 저장소에 사용됩니다. LDAP를 사용하는 경우 보안 TLS 프로토콜을 사용할 수 있습니다. 브로커 등록 정보를 설정하여 별도로 각 연결 서비스가 사용하는 인코딩 유형을 구성하거나 브로커 전체에 대한 인코딩을 설정할 수 있습니다.
사용자가 어떤 작업을 수행하려 하면 브로커는 (액세스 제어 등록 정보 파일에 있는) 해당 작업 액세스를 위해 지정된 사용자의 이름 및 그룹 멤버쉽과 (사용자 저장소에 있는) 사용자의 이름 및 그룹 멤버쉽을 대조 확인합니다. 액세스 제어 등록 정보 파일은 다음 작업에 대한 사용자 또는 그룹의 권한을 지정합니다.
브로커 등록 정보를 설정하여 다음 정보를 지정할 수 있습니다.
암호화
클라이언트와 브로커 사이에 전송되는 메시지를 암호화하려면 (SSL)Secure Socket Layer 표준 기반의 연결 서비스를 사용해야 합니다. SSL은 SSL 사용 가능 브로커와 SSL 사용 가능 클라이언트 사이에 암호화된 연결을 설정함으로써 연결 수준에서의 보안을 제공합니다.
브로커 등록 정보를 설정하여 사용되는 SSL 키 저장소의 보안 등록 정보와 암호 파일의 이름 및 위치를 지정할 수 있습니다.
모니터링 서비스
브로커는 응용 프로그램 및 브로커 성능을 모니터링하고 진단할 구성 요소를 포함합니다. 여기에는 다음 항목이 포함됩니다.
그림 3-4는 일반 체계를 나타냅니다.
그림 3-4 모니터링 서비스 지원
메트릭 생성자
메트릭 생성자는 브로커 내부 및 외부로의 메시지 흐름, 브로커 메모리의 메시지 수 및 이 메시지가 사용하는 메모리, 열려 있는 연결 수, 사용 중인 스레드 수 등과 같은 브로커 활동 정보를 제공합니다.
브로커 등록 정보를 설정하여 메트릭 데이터 생성을 설정 또는 해제하고 메트릭 보고서 생성 빈도를 지정할 수 있습니다.
로거
Message Queue 로거는 브로커 코드 및 메트릭 생성자가 생성한 정보를 가져와서 오류 발생 시 표준 출력(콘솔), 로그 파일, Solaris� 플랫폼인 경우 syslog 데몬 프로세스에 대한 해당 정보를 기록합니다.
브로커 등록 정보를 설정하여 로거에서 수집된 정보의 유형과 각 출력 채널에 기록된 유형을 지정할 수 있습니다. 로그 파일의 경우 로그 파일을 닫고 출력을 새 파일로 롤오버하는 지점을 지정할 수 있습니다. 로그 파일이 지정된 크기나 표시 시간에 도달하면 이 파일을 저장하고 새 로그 파일을 작성합니다.
로거를 구성하는 방법 및 로거를 사용하여 성능 정보를 얻는 방법에 대한 자세한 내용은 Message Queue 관리 설명서를 참조하십시오.
메트릭 메시지 생성자(엔터프라이즈판)
그림 3-4에 나타난 메트릭 메시지 생성자는 메트릭 생성자로부터 일정 간격으로 정보를 받아서 메시지에 기록한 다음 메시지에 포함된 메트릭 정보 유형에 따라 여러 메트릭 주제 대상 중 하나로 보냅니다.
이러한 메트릭 주제 대상에 가입한 Message Queue 클라이언트는 메시지를 사용하고 메시지에 포함된 메트릭 정보를 처리할 수 있습니다. 이렇게 하면 개발자는 사용자 정의 모니터링 도구를 작성하여 메시징 응용 프로그램을 지원할 수 있습니다. 각 메트릭 메시지 유형에서 보고하는 메트릭 수량에 대한 자세한 내용은 Java 클라이언트용 Message Queue 개발 안내서를 참조하십시오. 메트릭 메시지 생성을 구성하는 방법에 대한 자세한 내용은 Message Queue 관리 설명서를 참조하십시오.
관리 도구 및 작업이 절에서는 Message Queue 서비스를 구성하는 데 사용하는 도구 및 개발이나 프로덕션 환경에 대한 지원을 완성하는 데에 필요한 작업에 대해 설명합니다.
관리 도구
그림 3-5는 클라이언트 연결을 제외한 메시지 서비스의 구성을 나타내며 브로커 구성 요소 및 이러한 구성 요소를 관리하는 데 사용하는 도구를 중점적으로 보여줍니다.
그림 3-5 관리 도구
다음 명령줄 도구를 사용하여 Message Queue 서비스를 구성 및 관리할 수 있습니다.
- imqbrokerd 유틸리티를 사용하여 브로커를 시작할 수 있습니다. imqbrokerd 명령에 옵션을 사용하여 브로커와 클러스터의 연결 여부 및 추가 시작 구성 정보를 지정할 수 있습니다.
- 브로커를 시작한 후 imqcmd 유틸리티를 사용하여 물리적 대상을 작성, 업데이트 및 삭제하고, 브로커와 해당 연결 서비스를 제어하고, 브로커의 자원을 관리합니다.
- imqobjmgr 유틸리티를 사용하여 JNDI 객체 저장소의 관리 대상 객체를 추가, 나열, 업데이트 및 삭제합니다.
- imqusermgr 유틸리티를 사용하여 사용자 인증 및 권한 부여를 위해 파일 기반 사용자 저장소를 채웁니다.
- imqdbmgr 유틸리티를 사용하여 영구 저장소에 사용하는 JDBC 호환 데이터베이스를 작성하고 관리합니다. (내장 파일 저장소는 외부 관리가 필요하지 않습니다.)
- imqkeytool 유틸리티를 사용하여 SSL 인증에 사용하는 자체 서명된 인증서를 생성합니다.
- imqsvcadmin 유틸리티를 사용하여 브로커를 Windows 서비스로서 설치, 쿼리 및 제거합니다.
GUI 기반 관리 콘솔은 imqcmd와 imqobjmgr 유틸리티의 일부 기능을 결합합니다. 이러한 결합 기능을 사용하여 다음을 수행할 수 있습니다.
개발 환경 지원
클라이언트 구성 요소를 개발하는 경우 관리 작업을 최소화하는 것이 가장 좋습니다. 이러한 관리 작업을 최소화할 수 있도록 설계된 Message Queue 제품은 별도의 조정 없이 사용할 수 있으므로 무리 없이 브로커를 시작할 수 있습니다. 개발에 중점을 둔 경우에는 다음과 같은 방법을 사용합니다.
- 데이터 저장소(기본 제공 파일 기반 지속성), 사용자 저장소(파일 기반 사용자 저장소) 및 액세스 제어 등록 정보 파일의 기본 구현을 사용합니다. 이러한 기본 구현은 개발 테스트에 적합합니다. 기본 사용자 저장소는 설치 후 즉시 브로커를 사용할 수 있게하는 허용하는 기본 항목으로 작성됩니다. 기본 사용자 이름(guest) 및 비밀번호(guest)를 사용하여 클라이언트를 인증할 수 있습니다.
- 해당 용도로 디렉토리를 작성하여 단순 파일 시스템 객체 저장소를 사용하고, 그곳에 관리 대상 객체를 합니다. 저장소 작성을 선호하지 않는 경우에는 관리 대상 객체를 직접 코드로 인스턴스화할 수도 있습니다.
- 브로커에 물리적 대상을 명시적으로 작성하지 않고 자동으로 작성된 물리적 대상을 사용합니다. 자세한 내용은 해당 개발 안내서를 참조하십시오.
프로덕션 환경 지원
프로덕션 환경에서 메시지 서비스 관리는 응용 프로그램 성능과 확장, 가용성 및 보안에 대한 엔터프라이즈 요구 사항 충족에 중요한 역할을 수행합니다. 이러한 환경에서 관리자가 수행할 더 많은 작업이 있습니다. 이러한 작업은 대략 설정 및 유지 관리 작업으로 나뉩니다.
설정 작업
일반적으로 다음 설정 작업을 수행해야 합니다.
유지 관리 작업
브로커 자원을 모니터 및 제어하고 응용 프로그램 성능을 조정하려면 응용 프로그램을 배포한 후 다음을 수행해야 합니다.
Message Queue 서비스 확장Message Queue 서비스는 브로커를 연결하고 브로커에서 상태 정보를 공유하여 수평으로 확장될 수 있습니다. 이렇게 하면 모든 단일 브로커에서 원격 대상에 액세스하여 더 많은 클라이언트에게 서비스를 제공할 수 있습니다. 자세한 내용은 4장, "브로커 클러스터"를 참조하십시오.