Sun Java System Message Queue 4.1 릴리스 노트

4.1 릴리스의 새로운 기능

Message Queue 4.1에는 고가용성(데이터 및 서비스 가용성) 브로커 클러스터, JAAS 지원 및 기타 여러 가지 사소한 기능이 도입되었습니다. 이 절에서는 이러한 기능과 추가 참조 정보에 대해 설명합니다.

고가용성

Message Queue 4.1에 서비스 가용성 및 데이터 가용성을 제공하는 고가용성 클러스터가 도입되었습니다. 클라이언트와 고가용성 브로커의 연결이 끊어지면 클라이언트가 클러스터 내의 다른 브로커와 자동으로 다시 연결됩니다. 새로 연결될 브로커는 실패한 브로커의 영구 데이터 및 상태를 인계 받으며 실패한 브로커의 클라이언트에 서비스를 중단 없이 계속 제공합니다. 보안 연결을 통해 고가용성 브로커를 실행할 수 있습니다.

고가용성 브로커에는 고가용성 데이터베이스(HADB) 사용이 필수입니다. 이러한 유형의 데이터베이스가 없거나 데이터 가용성이 중요하지 않은 경우에는 자동 다시 연결과 서비스 가용성을 제공하는 기존 클러스터를 계속 사용할 수 있습니다.

고가용성 브로커를 구성하는 방법은 간단합니다. 클러스터의 각 브로커에 다음과 같은 종류의 브로커 등록 정보를 지정합니다.

이 기능을 사용하려면 다음 작업을 수행해야 합니다.

  1. 고가용성 데이터베이스를 설치합니다.

  2. JDBC 드라이버의 .jar 파일을 설치합니다.

  3. 고가용성 영구 저장소에 데이터베이스 스키마를 만듭니다.

  4. 클러스터의 각 브로커에 고가용성과 관련된 등록 정보를 설정합니다.

  5. 클러스터의 각 브로커를 시작합니다.

고가용성에 대한 개념 설명과 일반 클러스터와의 비교에 대해서는 Sun Java System Message Queue 4.1 Technical Overview의 4 장, Broker Clusters를 참조하십시오. 고가용성에 대한 절차 및 참조 정보에 대해서는 Sun Java System Message Queue 4.1 Administration Guide의 8 장, Broker ClustersSun Java System Message Queue 4.1 Administration GuideCluster Configuration Properties를 참조하십시오.

Message Queue 버전 4.0에서 HADB 데이터베이스를 사용하고 있는 경우 고가용성 클러스터를 사용하려면 dbmgr 유틸리티를 사용하여 공유 HADB 저장소로 업그레이드할 수 있습니다. 자세한 내용은 브로커 클러스터를 참조하십시오.

JAAS 지원

Message Queue는 기본으로 제공된 파일 기반 및 LDAP 기반 인증 메커니즘 이외에도 다양한 서비스를 브로커로 플러그인하여 Message Queue 클라이언트를 인증할 수 있도록 해주는 JAAS(Java Authentication and Authorization Service)도 지원합니다. 이 절에서는 브로커를 통해 JAAS 호환 인증 서비스에 사용할 수 있는 정보와 브로커를 구성하여 이러한 서비스를 사용하는 방법에 대해 설명합니다.

JAAS API에 대한 설명은 이 문서에서 다루지 않습니다. 자세한 내용을 보려면 다음 소스를 참조하십시오.

JAAS API는 J2SE에서 코어 API이므로 이는 Message Queue 런타임 환경을 구성하는 일부분입니다. JAAS는 응용 프로그램과 인증 메커니즘 간의 추상화 계층을 정의하며 원하는 메커니즘을 응용 프로그램 코드 변경 없이 플러그인할 수 있도록 해줍니다. Message Queue 서비스의 경우 추상화 계층은 브로커(응용 프로그램)와 인증 공급자 사이에 놓입니다. 몇 가지 브로커 등록 정보를 설정하여 JAAS 호환 인증 서비스를 플러그인할 수 있으며 브로커 코드의 중단 또는 변경 없이 이 서비스를 업그레이드할 수 있습니다.

JAAS 기반 인증을 사용하고 있는 경우 JMX 클라이언트를 사용하여 브로커를 관리할 수 있지만 이 경우 브로커를 시작하기 전에 JAAS 지원을 수동으로 설정(JAAS 관련 브로커 등록 정보 설정)해야 합니다. JMX API를 사용하여 해당 등록 정보를 변경할 수 없습니다.

JAAS 요소

그림 1–1에서는 JAAS의 기본 요소를 보여 줍니다. JAAS의 기본 요소(JAAS 클라이언트, JAAS 호환 인증 서비스 및 JAAS 구성 파일)를 나타냅니다.

그림 1–1 JAAS 요소

이 그림은 JAAS 호환 인증에 필요한 요소를 나타냅니다. 그림에 삽입된 텍스트는 해당 내용을 설명합니다.

다음 절에서는 Message Queue 서비스에서 이 요소를 사용해 JAAS 호환 인증을 제공하는 방법에 대해 설명합니다.

JAAS 및 Message Queue

다음 그림은 Message Queue 브로커가 JAAS를 사용하는 방법을 나타냅니다. 이 그림은 이전 그림의 JAAS 모델에 비해 좀 더 복잡한 구현을 나타냅니다.

그림 1–2 Message Queue가 JAAS를 사용하는 방법

이 그림은 Message Queue에서 JAAS 호환 인증을 사용하는 방법을 나타냅니다. 그림에 삽입된 텍스트는 해당 내용을 설명합니다.

이전 그림의 단순한 경우에서 보았듯이 인증 서비스 계층은 브로커와 구분되어 있습니다. 인증 서비스는 하나 이상의 로그인 모듈(LoginModule) 및 추가 인증 모듈(필요 시)로 구성됩니다. 로그인 모듈은 브로커와 동일한 Java 가상 머신에서 실행됩니다. Message Queue 브로커는 로그인 모듈에 LogInContext로 표현되며 브로커 런타임 코드의 일부인 CallBackHandler를 통해 로그인 모듈과 통신합니다.

또한 인증 서비스는 로그인 모듈에 대한 항목이 포함된 JAAS 구성 파일을 제공합니다. 구성 파일은 모듈의 사용 순서와 일부 사용 조건을 지정합니다. 브로커가 시작되면 JAAS는 Java 시스템 등록 정보 java.security.auth.login.config 또는 Java 보안 등록 정보 파일로 구성 파일을 찾습니다. 그런 다음 JAAS 구성 파일에서 브로커 등록 정보 imq.user_repository.jaas.name 값에 따른 항목을 선택합니다. 이 항목에는 인증에 사용할 로그인 모듈이 지정되어 있습니다. 그림에서와 같이 브로커는 로그인 모듈을 두 개 이상 사용할 수 있습니다. 구성 파일, 로그인 모듈 및 브로커 간의 관계는 그림 1–3에서 볼 수 있습니다.

브로커에서 JAAS 플러그인 인증 서비스를 사용하면 이 내용이 Message Queue 클라이언트에도 완전히 공개됩니다. 클라이언트는 사용자 이름과 비밀번호를 전달하여 이전과 같이 브로커에 계속 연결됩니다. 한편 브로커는 콜백 처리기를 사용하여 이 정보를 인증 서비스에 전달하며 서비스는 이 정보를 사용하여 사용자를 인증하고 결과를 반환합니다. 인증에 성공하면 브로커에서 연결을 부여하며, 인증에 실패하면 클라이언트 런타임에서 클라이언트가 처리해야 할 JMS 보안 예외를 반환합니다.

Message Queue 클라이언트가 인증된 후 추가 권한 부여가 필요할 경우에는 브로커에서 액세스 제어 파일을 참조하여 인증된 클라이언트가 대상 액세스, 메시지 사용, 대기열 찾아보기 등의 작업을 수행할 수 있는 권한이 부여되어 있는지 여부를 결정합니다(브로커가 정상일 경우).

JAAS 호환 인증 설정

JAAS 호환 인증 설정에는 이 유형의 인증을 선택하고 구성 파일의 위치를 지정하며 사용할 로그인 모듈에 대한 항목을 지정할 수 있는 브로커 및 시스템 등록 정보의 설정이 포함됩니다.

이 절에서는 JAAS 클라이언트, 로그인 모듈 및 JAAS 구성 파일 간의 관계와 JAAS 호환 인증 설정에 필요한 프로세스에 대해 설명합니다. 다음 그림은 구성 파일, 로그인 모듈 및 브로커 간의 관계를 나타냅니다.

그림 1–3 JAAS 지원 설정

이 그림은 JAAS 관련 파일 간의 관계를 나타냅니다. 그림에 삽입된 텍스트는 해당 내용을 설명합니다.

그림에서와 같이 JAAS 구성 파일 MyJAASCFile.config에는 시작점에서 그룹화된 여러 로그인 모듈에 대한 참조 항목이 포함됩니다. 브로커에서는 Java 시스템 등록 정보 java.security.auth.login.config 또는 Java 보안 등록 정보 파일을 참조하여 구성 파일을 찾습니다. 사용할 로그인 모듈은 구성 파일에 원하는 항목을 지정할 수 있는 브로커 등록 정보 imq.user_repository.jaas.name을 참조하여 결정합니다. 이 모듈에 대한 클래스는 lib/ext 디렉토리에 있습니다.

Message Queue에 JAAS 지원을 설정하려면 다음 단계를 완료해야 합니다. (개발 환경에서는 개발자가 다음의 모든 단계를 수행할 수 있습니다. 프로덕션 환경에서는 관리자가 이 작업의 일부를 인계 받습니다.)

  1. 인증 서비스를 구현하는 로그인 모듈 클래스를 하나 이상 만듭니다. 브로커에서 지원하는 JAAS 콜백 유형은 다음과 같습니다.

    javax.security.auth.callback.LanguageCallback

    브로커에서 이 콜백을 사용하여 브로커가 실행될 로켈을 인증 서비스에 전달합니다. 이 값은 현지화에 사용할 수 있습니다.

    javax.security.auth.callback.NameCallback

    브로커에서 이 콜백을 사용하여 연결 요청 시 Message Queue 클라이언트가 지정한 사용자 이름을 인증 서비스에 전달합니다.

    javax.security.auth.callback.TextInputCallback

    TextInputCallback.getPrompt()imq.authentication.type일 때 브로커에서 이 콜백을 사용하여 imq.authentication.type 값을 인증 서비스에 지정합니다. 이때 이 필드에 지정할 수 있는 유일한 값은 basic입니다. 이는 Base 64 비밀번호 인코딩을 나타냅니다.

    javax.security.auth.callback.PasswordCallback

    브로커에서 이 콜백을 사용하여 연결 요청 시 Message Queue 클라이언트가 지정한 비밀번호를 인증 서비스에 전달합니다.

    javax.security.auth.callback.TextOutputCallback

    브로커에서 이 콜백을 사용하여 텍스트 출력을 브로커 로그 파일에 기록함으로써 인증 서비스에 로깅 서비스를 제공합니다. 콜백의 MessageType ERROR, INFORMATION, WARNING은 각각 브로커 로그 수준 ERROR, INFOWARNING에 매핑됩니다.

  2. 로그인 모듈 클래스를 참조하는 항목을 사용하여 JAAS 구성 파일을 만들고 이 파일의 위치를 Message Queue 관리자에 지정합니다. (이 파일은 원격으로 찾을 수 있으며 해당 위치를 URL로 지정할 수 있습니다.)

  3. 로그인 구현 클래스를 참조하는 항목 이름을 JAAS 구성 파일에 기록합니다.

  4. 로그인 모듈을 구현하는 클래스를 jar 파일로 아카이브하고 이 jar 파일을 Message Queue lib/ext 디렉토리에 둡니다.

  5. JAAS 지원과 관련된 브로커 등록 정보를 구성합니다. 이에 대해서는 표 1–2에서 설명합니다.

  6. 다음 시스템 등록 정보를 설정하여 JAAS 구성 파일의 위치를 지정합니다.

    java.security.auth.login.config= JAAS_Config_File_Location

    예를 들어, 브로커를 시작할 때 다음과 같이 구성 파일을 지정할 수 있습니다.

    imqbrokerd -Djava.security.auth.login.config=JAAS_Config_File_Location

    다른 방법을 사용하여 JAAS 구성 파일의 위치를 지정할 수도 있습니다. 추가 정보는 다음 사이트를 참조하십시오.

    http://java.sun.com/j2se/1.5.0/docs/guide/security/jaas/tutorials/LoginConfigFile.html

다음 표는 JAAS 지원 설정에 필요한 브로커 등록 정보에 대해 설명합니다.

표 1–2 JAAS 지원을 위한 브로커 등록 정보

등록 정보 

설명 

imq.authentication.type

Base 64 비밀번호 인코딩을 지정하려면 basic으로 설정합니다. 이는 JAAS 인증에 지정할 수 있는 유일한 값입니다.

imq.authentication.basic.user_repository

JAAS 인증을 지정하려면 jaas로 설정합니다.

imq.accesscontrol.type

file로 설정합니다.

imq.user_repository.jaas.name

JAAS 구성 파일에서 인증 메커니즘으로 사용할 로그인 모듈이 참조된 항목 중 원하는 항목 이름으로 설정합니다. 이 이름은 단계 3에서 기록한 이름입니다.

imq.user_repository.jaas.userPrincipalClass

Message Queue 액세스 제어에서 사용하는 이 등록 정보는 Message Queue 액세스 제어 파일에서 사용자 엔티티를 나타내는 Principal 이름을 추출하기 위해 브로커가 사용하는 로그인 모듈에 java.security.Principal 구현 클래스를 지정합니다. 이 등록 정보를 지정하지 않으면 연결 요청 시 Message Queue 클라이언트로부터 전달된 사용자 이름이 대신 사용됩니다.

imq.user_repository.jaas.groupPrincipalClass

Message Queue 액세스 제어에서 사용하는 이 등록 정보는 Message Queue 액세스 제어 파일에서 그룹 엔티티를 나타내는 Principal 이름을 추출하기 위해 브로커가 사용하는 로그인 모듈에 java.security.Principal 구현 클래스를 지정합니다. 이 등록 정보를 지정하지 않으면 Message Queue 액세스 제어 파일의 그룹 규칙(있는 경우)이 무시됩니다.

영구 저장소 형식 변경 사항

Message Queue 버전 4.1에서는 고가용성을 지원할 수 있도록 JDBC 저장소를 변경합니다. 이러한 이유로 JDBC 저장소 버전이 410으로 업그레이드됩니다. JDBC 저장소 버전 350, 370 및 400이 410 버전 형식으로 자동으로 마이그레이션됩니다.

파일 기반의 영구 저장소 버전은 변경되지 않고 370으로 유지됩니다.

브로커 구성

imqenv.conf 파일에 IMQ_DEFAULT_EXT_JARS 등록 정보가 추가되었습니다. 이 등록 정보를 설정하여 브로커가 시작될 때 CLASSPATH에 포함될 수 있도록 외부 .jar 파일의 경로 이름을 지정할 수 있습니다. 이 등록 정보를 사용하여 외부 .jar 파일의 위치를 지정하면 이 파일을 더 이상 lib/ext 디렉토리에 복사할 필요가 없습니다. 외부 jar 파일은 JDBC 드라이버 또는 JAAS 로그인 모듈과 관련된 것일 수 있습니다. 다음 예제 명령은 JDBC 드라이버의 위치를 지정합니다.

IMQ_DEFAULT_EXT_JARS=/opt/SUNWhadb4/lib/hadbjdbc4.jar:/opt/SUNWjavadb/derby.jar

JES Monitoring Framework 지원

Message Queue는 공통 그래픽 인터페이스를 사용하여 Java Enterprise System 구성 요소를 모니터링할 수 있도록 해주는 Sun Java Enterprise System(JES) Monitoring Framework를 지원합니다. 이 인터페이스는 Sun Java System Monitoring Console이라고 하는 웹 기반의 콘솔로 구현됩니다. Message Queue를 다른 JES 구성 요소와 함께 실행 중인 경우에는 단일 인터페이스를 사용하여 이러한 모든 구성 요소를 관리하는 것이 편리할 수 있습니다.

JES Monitoring Framework는 모든 JES 구성 요소 제품에서 사용할 공통 모니터링 모델(CMM)을 정의합니다. 이 모델을 사용하면 모든 JES 구성 요소의 중앙 집중식 동일 보기가 가능해집니다. Message Queue는 JES Monitoring Framework에 다음 객체를 제공합니다.

각 객체는 JES Monitoring Console을 사용하여 속성을 모니터링할 수 있는 CMM 객체에 매핑됩니다. 런타임 시 관리자는 콘솔을 사용하여 성능 통계를 보고, 자동으로 모니터링할 수 있는 규칙을 만들고, 경보를 확인할 수 있습니다. CMM 객체에 Message Queue 객체를 매핑하는 방법에 대한 자세한 내용은 Sun Java Enterprise System Monitoring Guide를 참조하십시오.

JES 모니터링을 활성화하려면 다음 작업을 수행해야 합니다.

  1. Sun Java Enterprise System Installation Guide의 지침에 따라 해당 배포(Message Queue 및 기타 구성 요소)에 모든 구성 요소를 설치 및 구성합니다.

  2. Sun Java Enterprise System Monitoring Guide의 설명에 따라 모니터링되는 모든 구성 요소에 대해 모니터링 프레임워크를 활성화하고 구성합니다.

  3. Sun Java Enterprise System Monitoring Guide의 설명에 따라 별도의 호스트에 모니터링 콘솔을 설치하고 마스터 에이전트를 시작한 다음 웹 서버를 시작합니다.

모든 메트릭 수집 작업은 브로커의 기존 모니터링 데이터 인프라로부터 데이터를 가져오는 모니터링 프레임워크에서 수행하기 때문에 JES Monitoring Framework를 사용해도 브로커 성능에 영향을 주지 않습니다.

트랜잭션 관리

이전에는 PREPARED 상태의 트랜잭션만 관리 목적으로 롤백할 수 있었습니다. 즉, 분산 트랜잭션의 일부인 세션이 정상적으로 종료되지 않은 경우 트랜잭션이 브로커 관리자에 의해 정리되지 않은 상태로 유지되었습니다. Message Queue 4.1에서는 imqcmd 유틸리티를 사용하여 STARTED, FAILED, INCOMPLETE, COMPLETEPREPARED와 같은 상태의 트랜잭션을 정리(롤백)할 수 있습니다.

특정 트랜잭션을 롤백할 수 있는지 여부(특히 트랜잭션이 PREPARED 상태가 아닐 경우)를 결정할 수 있도록 imqcmd 유틸리티가 imqcmd query txn 출력의 일부로 추가 데이터를 제공합니다. 이 유틸리티는 트랜잭션을 시작한 연결의 연결 아이디를 제공하며 트랜잭션이 만들어진 시간을 지정합니다. 관리자는 이 정보를 사용하여 트랜잭션을 롤백해야 하는지 여부를 결정할 수 있습니다. 일반적으로 관리자는 트랜잭션을 조기에 롤백해서는 안 됩니다.

C 클라이언트 연결을 위한 고정 포트

C 클라이언트는 MQ_SERVICE_PORT_PROPERTY 연결 등록 정보를 사용하여 연결할 고정 포트를 지정할 수 있습니다. 이는 포트를 동적으로 할당하는 브로커의 포트 매퍼 서비스를 우회해야 하거나 방화벽을 통과하려고 시도할 경우에 유용할 수 있습니다.

이 포트를 지정할 경우 브로커측에 JMS 서비스 포트도 구성해야 함에 유의하십시오. 예를 들어, 클라이언트를 ssljms를 통해 포트 1756에 연결할 경우 다음 작업을 수행합니다.


주 –

MQ_SERVICE_PORT_PROPERTY 연결 등록 정보는 Message Queue 버전 3.7 Update 2에서 도입되었습니다.