Sun Java System Message Queue 3.7 UR1 기술 개요

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 서비스를 제어합니다. 이러한 등록 정보는 특정 등록 정보의 영향을 받는 서비스 또는 브로커 구성 요소에 따라 여러 범주로 나뉩니다. 브로커 서비스에는 다음이 포함됩니다.

다음 절에서는 이러한 각 서비스에 대해 설명하고 필요 사항에 맞게 서비스를 사용자 정의하는 데 사용하는 등록 정보를 요약합니다.

브로커 등록 정보가 여러 구성 파일에 정의되며, 브로커 시작 시 사용한 명령줄에서 정의될 수도 있습니다. Sun Java System Message Queue 3.7 UR1 관리 설명서의 4 장, Configuring a Broker에서는 이 구성 파일에 대해 소개하며, 어떤 파일의 등록 정보 값이 다른 파일에 설정된 값을 대체하기 위해 사용되는 우선 순위도 설명합니다. 시작 명령으로 설정한 등록 정보는 다른 모든 설정에 우선합니다.

연결 서비스

연결 관련 등록 정보를 사용하여 브로커와 해당 브로커의 클라이언트 간의 물리적 연결을 구성하고 관리할 수 있습니다. Message Queue 클라이언트에서 사용할 수 있는 연결 서비스의 이름, 유형, 기본 프로토콜 등에 대해서는 브로커에 연결을 참조하십시오. 연결 서비스는 다중 스레드되며, 브로커의 포트 매퍼가 동적으로 할당하거나 관리자가 정적으로 할당할 수 있는 전용 포트를 통해 사용할 수 있습니다. 기본적으로 브로커를 시작하면 jmsadmin 서비스가 시작되고 실행됩니다.

모든 연결에는 양측이 있기 때문에 연결 구성은 양측에서 이루어지며 양측에서 함께 조정되어야 합니다.

클라이언트는 방화벽을 통과하여 Message Queue 서비스에 연결할 수 있습니다. 이렇게 하려면 방화벽 관리자에게 특정 포트를 열어 놓도록 요청한 다음 해당 (정적) 포트에 연결하거나 부록 B, Message Queue 기능에 요약된 것처럼 HTTP 또는 HTTPS 서비스를 사용하면 됩니다.

각 연결 서비스는 특정 인증 및 권한 부여 기능도 지원합니다. 자세한 내용은 보안 서비스를 참조하십시오.

포트 매퍼

연결 서비스는 브로커의 주 포트인 7676에 있는 일반 포트 매퍼를 통해 동적으로 포트를 할당합니다. Message Queue 클라이언트 런타임이 브로커와의 연결을 설정할 때 먼저 포트 매퍼에 접속하여 선택된 연결 서비스의 포트 번호를 요청합니다.

jms, ssljms, adminssladmin 연결 서비스를 구성할 때 정적 포트 번호를 할당하여 포트 매퍼를 대체할 수 있습니다. 하지만 정적 포트는 대개 방화벽을 통한 연결 등 특수 상황에서만 사용되므로 일반적으로 권장되지 않습니다.

스레드 풀 관리

각 연결 서비스는 다중 스레드 방식으로서, 다중 연결을 지원합니다. 이러한 연결에 필요한 스레드는 풀에 있는 브로커에서 유지 관리합니다. 할당 방법은 최소 및 최대 스레드 값에 대해 지정한 값 및 선택한 스레딩 모델에 따라 다릅니다.

브로커 등록 정보를 설정하여 스레드의 최소 및 최대 개수를 지정할 수 있습니다. 연결 시 스레드가 필요하면 해당 연결을 지원하는 서비스의 스레드 풀에 스레드가 추가됩니다. 최소 개수는 할당 가능한 스레드 수를 지정합니다. 사용 가능한 스레드 수가 이 최소 임계값을 초과하는 경우 시스템은 최소 임계값에 다시 도달할 때까지 스레드를 종료시켜 여유 스레드를 확보하는 방법으로 메모리 자원을 절약합니다. 로드량이 많은 경우 풀의 최대 수에 도달할 때까지 스레드 수가 증가할 수 있습니다. 이러한 경우 스레드를 사용할 수 있을 때까지 새 연결이 거부됩니다.

선택한 스레딩 모델에서는 스레드가 단일 연결 전용인지 또는 여러 연결에서 공유할 것인지를 지정합니다.

대상 및 라우팅 서비스

클라이언트가 브로커에 연결된 후에는 메시지 라우팅 및 전달을 계속할 수 있습니다. 이 단계에서 브로커는 여러 종류의 물리적 대상을 작성 및 관리하여 메시지의 원활한 흐름을 보장하고 자원을 효율적으로 관리합니다. 브로커에서 라우팅 및 대상과 관련된 브로커 등록 정보를 사용하여 사용자의 응용 프로그램 요구 사항에 적합한 방식으로 이러한 작업을 관리합니다.

브로커의 물리적 대상은 메시지가 메시지 소비자에게 전달되기 전에 저장되는 메모리상의 위치입니다. 물리적 대상에는 다음 네 가지 종류가 있습니다.

대상 관리

대상을 관리할 때 imqcmd 유틸리티를 사용합니다. 대상 관리는 다음 여러 작업을 포함합니다.

관리 작업은 관리 작성, 자동 작성, 임시 또는 사용 불능 메시지 대기열과 같이 관리되는 대상의 종류에 따라 달라집니다. 예를 들어 임시 대상은 명시적으로 삭제될 필요가 없습니다. 자동 작성된 등록 정보는 해당 브로커의 모든 자동 작성 대상에 적용되는 브로커 구성 등록 정보를 사용하여 구성됩니다.

물리적 대상 구성

최적의 성능을 얻기 위해 물리적 대상을 작성하거나 업데이트할 때 등록 정보를 설정할 수 있습니다. 설정할 수 있는 등록 정보는 다음을 포함합니다.

대기열 대상의 경우 최대 백업 소비자 수를 구성할 수도 있으며, 로컬 대기열로 전달이 권장되는지 여부를 지정(클러스터된 브로커의 경우)할 수 있습니다.

사용 불능 메시지 대기열의 제한 및 동작을 구성할 수도 있습니다. 그러나 이러한 대기열의 기본 등록 정보는 표준 대기열의 등록 정보와 다릅니다.

메모리 관리

대상은 처리하는 메시지의 수 및 크기, 등록하는 소비자의 수 및 지속성에 따라 많은 양의 자원을 소비할 수 있으므로 메시지 서비스의 성능 및 안정성을 보장하도록 면밀하게 관리해야 합니다.

등록 정보를 설정하여 브로커가 받는 메시지로 넘치는 것을 방지하고 브로커의 메모리 부족을 방지할 수 있습니다. 자원이 부족하게 될 때 브로커는 세 가지 수준의 메모리 보호, 즉 대상 제한, 시스템 전체 제한 및 시스템 메모리 임계값을 사용하여 메시지 서비스를 계속 작동시킵니다. 원칙적으로, 대상 제한 및 시스템 전체 제한이 적절히 설정되면 중요 시스템 메모리 임계값을 초과하지 않습니다.

대상 메시지 제한

대상 속성을 사용하여 각 대상의 메모리 및 메시지 흐름을 관리할 수 있습니다. 예를 들어 대상에 허용되는 최대 제작자 수, 최대 메시지 수(또는 크기) 및 단일 메시지의 최대 크기를 지정할 수 있습니다.

또한 이러한 제한에 도달하면 제작자 속도 줄이기, 가장 오래된 메시지 삭제, 가장 낮은 우선 순위의 메시지 삭제 또는 최신 메시지 거부와 같이 브로커의 응답 방법을 지정할 수도 있습니다.

시스템 전체 메시지 제한

등록 정보를 사용하여 브로커의 모든 대상에 적용할 제한을 설정할 수 있습니다. 전체 메시지 수 및 모든 메시지에 소비되는 메모리를 지정할 수 있습니다. 시스템 전체 메시지 제한 중 하나에 도달하면 브로커는 새 메시지를 거부합니다.

시스템 메모리 임계값

마지막으로 등록 정보를 사용하여 메모리 과부하 방지를 위한 브로커 조치의 수위를 높이는 임계값을 설정할 수 있습니다. 취할 수 있는 조치는 다음과 같이 메모리 자원 상태에 따라 달라집니다. 초록(사용 가능한 메모리 충분), 노랑(브로커 메모리 감소 중), 주황(브로커 메모리 부족), 빨강(브로커가 사용할 수 있는 메모리 없음). 브로커의 메모리 상태가 초록에서 빨강으로 진행될수록 브로커는 점차 높은 수준의 조취를 취합니다.

지속성 서비스

오류 발생 시 브로커를 복구하려면 메시지 전달 작업 상태를 다시 작성해야 합니다. 이렇게 하려면 데이터 저장소에 상태 정보를 저장해야 합니다. 브로커는 다시 시작할 때 저장된 데이터를 사용하여 대상 및 영구 가입을 다시 작성하고, 지속성 메시지를 복구하며, 열린 트랜잭션을 롤백하고, 전달되지 않은 메시지의 라우팅 테이블을 다시 작성합니다. 그런 다음 메시지 전달을 다시 시작합니다.

Message Queue 서비스는 파일 기반 및 JDBC 호환 지속성 모듈(그림 3–2 참조)을 지원하며 기본적으로 파일 기반 지속성을 사용합니다.

그림 3–2 지속성 지원

브로커가 메시지의 지속적인 처리를 위해 플랫 파일 저장소나 JDBC 호환 데이터 저장소를 사용함을 보여주는 다이어그램

파일 기반 지속성

파일 기반 지속성은 개별 파일을 사용하여 영구 데이터를 저장하는 메커니즘입니다. 파일 기반 지속성을 사용하면 브로커 등록 정보를 설정하여 다음을 수행할 수 있습니다.

일반적으로 파일 기반 지속성은 JDBC 기반 지속성보다 빠르지만, JDBC 호환 저장소가 제공하는 중복 및 관리 제어 기능을 선호하는 사용자도 있습니다.

JDBC 기반 지속성

JDBC 기반 지속성에서는 Java Database Connectivity(JDBCTM) 인터페이스를 사용하여 브로커를 JDBC 호환 데이터 저장소에 연결합니다. 브로커가 JDBC 드라이버를 통해 데이터 저장소에 액세스하게 하려면 다음을 수행해야 합니다.

이러한 작업을 완료하는 모든 절차와 관련 구성 등록 정보에 대한 자세한 내용은 Sun Java System Message Queue 3.7 UR1 관리 설명서의 4 장, Configuring a Broker을 참조하십시오.

보안 서비스

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 로거는 브로커 코드 및 메트릭 생성자가 생성한 정보를 가져온 다음, 오류 발생 시 표준 출력(콘솔), 로그 파일 및 syslog 데몬 프로세스(SolarisTM의 경우)에 정보를 기록합니다.

로거에서 수집된 정보의 유형과 각 출력 채널에 기록된 유형을 지정하도록 브로커 등록 정보를 설정할 수 있습니다. 로그 파일의 경우 로그 파일을 닫고 출력을 새 파일로 롤오버하는 지점을 지정할 수도 있습니다. 로그 파일이 지정된 크기나 표시 시간에 도달하면 이 파일을 저장하고 새 로그 파일을 작성합니다.

로거를 구성하는 방법 및 로거를 사용하여 성능 정보를 얻는 방법에 대한 자세한 내용은 Sun Java System Message Queue 3.7 UR1 관리 설명서Configuring and Using Broker Logging을 참조하십시오.

메트릭 메시지 제작자

그림 3–4에 나타난 메트릭 메시지 제작자는 일정 간격으로 메트릭 생성자로부터 정보를 받아서 메시지에 기록한 다음, 메시지에 포함된 메트릭 정보 유형에 따라 여러 메트릭 주제 대상 중 하나로 보냅니다.

이러한 메트릭 주제 대상에 가입한 Message Queue 클라이언트는 메시지를 소비하고 메시지에 포함된 메트릭 데이터를 처리할 수 있습니다. 이렇게 하면 개발자는 사용자 정의 모니터링 도구를 작성하여 메시징 응용 프로그램을 지원할 수 있습니다. 각 메트릭 메시지 유형에서 보고하는 메트릭 수량에 대한 자세한 내용은 Sun Java System Message Queue 3.7 UR1 관리 설명서의 18 장, Metrics Reference를 참조하십시오. 메트릭 메시지 생성을 구성하는 방법에 대한 자세한 내용은 Sun Java System Message Queue 3.7 UR1 Developer’s Guide for Java Clients의 4 장, Using the Metrics Monitoring APISun Java System Message Queue 3.7 UR1 관리 설명서Writing an Application to Monitor Brokers을 참조하십시오.

관리 도구 및 작업

이 절에서는 Message Queue 서비스를 구성하는 데 사용하는 도구 및 개발이나 프로덕션 환경에 대한 지원을 완료하는 데 필요한 작업에 대해 설명합니다.

관리 도구

그림 3–5에서는 클라이언트 연결을 제외한 메시지 서비스를 보여 주며, 브로커 구성 요소와 이 구성 요소를 관리하는 데 사용되는 도구에 중점을 두었습니다.

그림 3–5 관리 도구

관리자가 어떤 Message Queue 서비스 구성 요소를 제어할 때 사용할 도구를 보여 주는 그림입니다. 그림은 텍스트에 설명되어 있습니다.

다음 명령줄 도구를 사용하여 Message Queue 서비스를 구성하고 관리할 수 있습니다.

GUI 기반 관리 콘솔은 imqcmdimqobjmgr 유틸리티의 일부 기능을 결합한 것입니다. 이러한 결합 기능을 사용하여 다음을 수행할 수 있습니다.

개발 환경 지원

클라이언트 구성 요소를 개발할 때 관리 작업을 최소화시키는 것이 가장 좋습니다. 이러한 관리 작업을 최소화할 수 있도록 설계된 Message Queue 제품은 별도의 조정 없이 사용할 수 있으므로 무리 없이 브로커를 시작할 수 있습니다. 개발에 중점을 둔 경우에는 다음과 같은 방법을 사용합니다.

프로덕션 환경 지원

프로덕션 환경에서 메시지 서비스 관리는 응용 프로그램 성능 그리고 엔터프라이즈 확장, 가용성 및 보안 요구 사항 해결 측면에서 중요한 역할을 합니다. 이러한 환경에서는 관리자가 더 많은 작업을 수행해야 합니다. 이러한 작업은 대략 설정 및 유지 관리 작업으로 나뉩니다.

설정 작업

일반적으로 다음 설정 작업을 수행해야 합니다.

유지 관리 작업

브로커 자원을 모니터링 및 제어하고 응용 프로그램 성능을 조정하려면 응용 프로그램을 배포한 후 다음을 수행해야 합니다.

메시징 작업 확장

Message Queue 서비스는 브로커를 연결하고 브로커의 상태 정보 공유를 허용함으로써 수평으로 확장될 수 있습니다. 이렇게 하면 어떤 단일 브로커가 원격 대상에 액세스하여 더 많은 클라이언트를 서비스할 수 있습니다. 자세한 내용은 4 장, 브로커 클러스터을 참조하십시오.