Sun Java System Message Queue 3.7 UR1 관리 설명서

9장 브로커 클러스터 작업

Message QueueTM Enterprise Edition은 메시지 전달 서비스를 클라이언트에 제공하기 위해 함께 작업하는 브로커 그룹인 브로커 클러스터의사용을 지원합니다. 클러스터를 사용하여 메시지 서비스는 다중 브로커 간에 클라이언트 연결을 분배하는 방식으로 메시지 트래픽의 볼륨에 대한 작업 크기를 조절할 수 있습니다. 클러스터 및 클러스터 작업 방법에 대한 자세한 내용은 Message Queue 기술 개요를 참조하십시오.

이 장에서는 브로커 클러스터를 관리하고 브로커를 브로커 클러스터에 연결하는 방법 및 브로커 클러스터 구성 방법을 설명합니다. 이 장은 다음 내용으로 구성되어 있습니다.

클러스터 구성 등록 정보

각 클러스터 구성원 브로커에 대한 클러스터 구성 등록 정보를 지정하여 클러스터를 정의합니다. 이러한 등록 정보는 클러스터의 각 브로커에 대해 개별적으로 설정할 수도 있지만 모든 브로커가 참조하는 중앙 클러스터 구성 파일에 모으는 것이 일반적으로 더 편리합니다. 이렇게 하면 설정이 달라지지 않으므로 클러스터의 모든 브로커가 동일하고 일관된 구성 정보를 공유하게 됩니다.

클러스터 구성 등록 정보는 표 14–9에서 자세히 설명합니다. 여기에는 다음 항목이 포함됩니다.

hostnameport 등록 정보는 각 개별 브로커에 대해 독립적으로 설정할 수 있지만 brokerlist, masterbroker, urltransport는 클러스터 내의 모든 브로커에 대해 동일한 값을 가져야 합니다.

다음 절에서는 클러스터 구성 파일을 사용하여 브로커의 클러스터 구성 등록 정보를 설정하는 방법(클러스터의 각 브로커에 대해 개별 설정 또는 중앙 설정)에 대해 설명합니다.

개별 브로커에 대한 클러스터 등록 정보 설정

인스턴스 구성 파일(또는 브로커를 시작할 때 명령줄에서) 브로커 클러스터 구성 등록 정보를 설정할 수 있습니다. 예를 들어, host19876 포트, host25000 포트 및 ctrlhost의 기본 포트(7676)에서 여러 브로커로 구성된 클러스터를 만들려면 세 브로커 모두의 인스턴스 구성 파일에 다음 등록 정보를 포함시켜야 합니다.

imq.cluster.brokerlist=host1:9876,host2:5000,ctrlhost

이 방법을 사용하면 클러스터 구성을 변경해야 하는 경우 클러스터 내 모든 브로커의 인스턴스 구성 파일을 업데이트해야 합니다.

클러스터 구성 파일 사용

일관성과 간편한 유지 관리를 위해서는 클러스터 구성 등록 정보를 브로커별로 개별 설정하는 대신 모든 공유 클러스터 구성 등록 정보를 단일 클러스터 구성 파일에 모으는 것이 좋습니다. 이 방법에서 각 브로커의 인스턴스 구성 파일은 클러스터 구성 파일의 위치를 가리키도록 imq.cluster.url 등록 정보를 설정해야 합니다. 예를 들면, 다음과 같습니다.

imq.cluster.url=file:/home/cluster.properties

그런 다음 클러스터 구성 파일은 클러스터 내의 모든 브로커에 대해 연결할 브로커 목록(imq.cluster.brokerlist), cluster 연결 서비스에 사용할 전송 프로토콜(imq.cluster.transport ) 및 마스터 브로커의 주소(imq.cluster.masterbroker)와 같은 공유 구성 등록 정보를 정의합니다. 다음 코드는 마스터 브로커 역할을 하는 ctrlhost에서 실행되는 브로커와 함께 이전 예에서와 같은 클러스터를 정의합니다.

imq.cluster.brokerlist=host1:9876,host2:5000,ctrlhost
imq.cluster.masterbroker=ctrlhost

클러스터 관리

이 절에서는 브로커 집합을 연결하여 클러스터를 형성하고 기존 클러스터에 새 브로커를 추가하고 클러스터에서 브로커를 제거하는 방법에 대해 설명합니다.

브로커 연결

일반적으로 명령줄에서 (-cluster 옵션 사용) 또는 클러스터 구성 파일에서 imq.cluster.brokerlist 등록 정보를 설정하는 두 가지 방법으로 클러스터에 브로커를 연결할 수 있습니다. 사용하는 방법에 관계없이 시작한 각 브로커는 5분마다 다른 브로커에 연결하려고 시도합니다. 이 때 마스터 브로커(구성되어 있는 경우)가 시작되면 연결에 성공한 것입니다. 클러스터의 브로커가 마스터 브로커보다 먼저 시작된 경우 일시 중지된 상태를 유지하여 클라이언트 연결을 거부합니다. 일시 중지된 브로커는 마스터 브로커가 시작되면 자동으로 다시 작동합니다.

명령줄에서 브로커 클러스터를 구성하려면 -cluster 옵션을 imqbrokerd 명령에 사용하여 클러스터 내의 전체 브로커 목록을 지정합니다. 예를 들어, 다음 명령은 새 브로커를 시작하여 host1의 기본 포트(7676), host25000 포트 및 기본 호스트(localhost)의 9876 포트에서 실행하는 브로커에 연결합니다.

imqbrokerd -cluster host1,host2:5000,:9876

대체 방법으로 imq.cluster.brokerlist 등록 정보를 사용하여 연결할 브로커 목록을 지정하는 클러스터 구성 파일을 만들 수 있습니다. 이 방법은 작업 시스템에 더 적합한 방법입니다. 그런 다음 클러스터의 각 브로커에서 이 클러스터 구성 파일을 가리키도록 자체 imq.cluster.url 등록 정보를 설정해야 합니다.

사용하는 방법에 관계없이 네트워크 루프백 IP 주소(127.0.0.1)로 확인되는 주소가 클러스터의 브로커에 지정되지 않아야 합니다. 이 주소로 구성된 브로커는 클러스터의 다른 브로커에 연결할 수 없습니다.


주 –

일부 Linux 설치 프로그램은 localhost 항목을 네트워크 루프백 주소로 자동으로 설정합니다. 그러한 시스템에서 사용자는 클러스터의 모든 브로커 주소가 제대로 지정될 수 있도록 시스템 IP 주소를 수정해야 합니다.

클러스터에 참여하는 모든 Linux 시스템의 경우 클러스터 설정 과정의 일부로 /etc/hosts 파일을 확인합니다. 시스템에서 정적 IP 주소를 사용하는 경우 /etc/hosts 파일을 편집하여 올바른 localhost 주소를 지정합니다. 주소가 DNS(Domain Name Service)에 등록되면 /etc/nsswitch.conf 파일을 편집하여 로컬 hosts 파일을 참조하기 전에 DNS 조회를 수행하도록 항목의 순서를 변경합니다. /etc/nsswitch.conf의 행은 다음과 같아야 합니다.

hosts:dns files

클러스터 내의 브로커 간에 암호화된 보안 메시지를 전달하려면 SSL 기반 전송 프로토콜을 사용하도록 cluster 연결 서비스를 구성합니다. 메시지 암호화에 설명된 것처럼 클러스터 내의 각 브로커에 대해 SSL 기반 연결 서비스를 설정합니다. 그런 다음 클러스터 구성 파일에서 또는 브로커별로 개별적으로 각 브로커의 imq.cluster.transport 등록 정보를 ssl로 설정합니다.

클러스터에 브로커 추가

클러스터에 새 브로커를 추가하는 절차는 클러스터가 클러스터 구성 파일을 사용하는지 여부에 따라 달라집니다.

Procedure클러스터 구성 파일을 사용하여 클러스터에 새 브로커를 추가하는 방법

  1. 클러스터 구성 파일의 imq.cluster.brokerlist 등록 정보에 새 브로커를 추가합니다.

  2. 클러스터의 브로커에 대해 다음 명령을 실행합니다.


    imqcmd reload cls

    이 명령은 각 브로커가 클러스터 구성을 다시 로드하게 하여 클러스터에 있는 브로커의 모든 영구 정보를 최신 상태로 유지합니다. 클러스터의 모든 브로커에 대해 이 명령을 실행할 필요는 없습니다. 한 브로커에 대해 명령을 실행하면 모든 브로커에서 클러스터 구성이 다시 로드됩니다.

  3. (선택 사항) 클러스터 구성 파일을 가리키도록 브로커의 config.properties 파일에서 imq.cluster.url 등록 정보 값을 설정합니다.

  4. 새 브로커를 시작합니다.

    클러스터에 브로커 추가를 수행하지 않은 경우 imqbrokerd 명령줄에서 -D 옵션을 사용하여 imq.cluster.url 값을 설정합니다.

클러스터 구성 파일을 사용하지 않고 클러스터에 새 브로커를 추가하는 방법

config.properties 파일을 편집하거나 imqbrokerd 명령줄에서 -D 옵션을 사용하여 다음 등록 정보 값을 설정합니다.

클러스터에서 브로커 제거

클러스터에서 브로커를 제거하는 데 사용하는 방법은 처음에 클러스터를 만들 때 명령줄을 사용했는지 중앙 클러스터 구성 파일을 사용했는지에 따라 달라집니다.

명령줄을 사용하여 브로커 제거

명령줄에서 imqbrokerd 명령을 사용하여 클러스터에 브로커를 연결한 경우 명령줄에서 새 클러스터 구성원 집합을 지정하여 각 브로커를 중지한 다음 다시 시작해야 합니다. 절차는 다음과 같습니다.

Procedure명령줄을 사용하여 클러스터에서 브로커를 제거하는 방법

  1. imqcmd 명령을 사용하여 클러스터에서 각 브로커를 중지합니다.

  2. imqbrokerd 명령의 -cluster 옵션을 사용하여 남아 있는 브로커만 지정하여 클러스터에서 해당 브로커를 다시 시작합니다.

    예를 들어, 처음에 다음 명령을 사용하여 A, B, C 브로커 각각을 시작하여 세 개의 브로커로 구성된 클러스터를 만들었다고 가정합니다.


    imqbrokerd -cluster A,B,
    C
    

    클러스터에서 A 브로커를 제거하려면 다음 명령을 사용하여 BC 브로커를 다시 시작합니다.


    imqbrokerd -cluster B,C
    

클러스터 구성 파일을 사용하여 브로커 제거

처음에 중앙 클러스터 구성 파일의 imq.cluster.brokerlist 등록 정보를 사용하여 구성원 브로커를 지정해 클러스터를 만든 경우 브로커 중 하나를 제거하기 위해 브로커를 중지할 필요가 없습니다. 대신 구성 파일을 편집하여 제거할 브로커를 제외시키고 나머지 클러스터 구성원이 클러스터 구성을 다시 로드하게 한 다음 제외된 브로커가 해당 클러스터 구성 파일을 더 이상 가리키지 않도록 다시 구성하기만 하면 됩니다. 절차는 다음과 같습니다.

Procedure클러스터 구성 파일을 사용하여 클러스터에서 브로커를 제거하는 방법

  1. 클러스터 구성 파일을 편집하여 imq.cluster.brokerlist 등록 정보에 지정된 목록에서 제외된 브로커를 제거합니다.

  2. 클러스터에 남아 있는 각 브로커에 대해 다음 명령을 실행합니다.


    imqcmd reload cls

    이렇게 하면 브로커가 클러스터 구성을 다시 로드합니다.

  3. 클러스터에서 제거할 브로커를 중지합니다.

  4. 해당 브로커의 config.properties 파일을 편집하여 imq.cluster.url 등록 정보에 대한 값을 제거하거나 다른 값을 지정합니다.

마스터 브로커

각 클러스터는 클러스터의 지속성 상태에 대한 모든 변경을 추적하기 위해 구성 변경 기록을 관리하는 마스터 브로커 하나를 선택적으로 가질 수 있습니다. 마스터 브로커는 클러스터 구성 파일이나 개별 브로커의 인스턴스 구성 파일에 있는 imq.cluster.masterbroker 구성 등록 정보에서 식별됩니다.

구성 변경 기록에는 영구 가입, 관리자가 만든 물리적 대상 등과 같이 클러스터에 연결된 지속성 항목에 대한 변경 관련 정보가 포함되어 있습니다. 클러스터의 모든 브로커는 시작할 때 마스터 브로커를 참조하여 이러한 지속성 항목에 대한 정보를 업데이트합니다. 마스터 브로커에 오류가 발생하면 이러한 동기화가 불가능해집니다. 자세한 내용은 마스터 브로커를 사용할 수 없는 경우를 참조하십시오.

구성 변경 기록 관리

구성 변경 기록에는 중요한 정보가 포함되어 있으므로 오류가 발생할 경우 복원할 수 있도록 정기적으로 백업해야 합니다. 백업으로부터 복원하더라도 백업을 수행한 이후에 발생된 클러스터 지속성 상태의 변경 사항은 손실되지만 백업을 자주 수행하면 이러한 잠재적 정보 손실을 최소화할 수 있습니다. 백업 및 복원 작업을 수행하면 시간이 지나면 상당히 커질 수 있는, 구성 변경 레코드에 포함된 변경 기록을 압축하고 최적화할 수 있는 이점도 있습니다.

구성 변경 기록을 백업하는 방법

imqbrokerd 명령의 -backup 옵션을 사용하여 백업 파일의 이름을 지정합니다. 예:

imqbrokerd -backup mybackuplog

Procedure구성 변경 기록을 복원하는 방법

  1. 클러스터에 있는 모든 브로커를 종료합니다.

  2. 다음 명령을 사용하여 백업 파일로부터 마스터 브로커의 구성 변경 기록을 복원합니다.


    imqbrokerd -restore mybackuplog
  3. 마스터 브로커에 새 이름이나 포트 번호를 할당하는 경우 클러스터 구성 파일에서 imq.cluster.brokerlistimq.cluster.masterbroker 등록 정보를 각각 업데이트합니다.

  4. 클러스터에 있는 모든 브로커를 다시 시작합니다.

마스터 브로커를 사용할 수 없는 경우

클러스터의 모든 브로커는 마스터 브로커가 있어야 지속성 작업을 수행할 수 있기 때문에 마스터 브로커를 사용할 수 없을 때 클러스터의 브로커에 대해 다음 imqcmd 하위 명령을 수행하면 오류가 반환됩니다.

자동 생성된 물리적 대상과 임시 대상에는 영향을 주지 않습니다.

마스터 브로커가 없는 경우 클라이언트 응용 프로그램이 영구 가입자를 만들거나 영구 가입을 취소하려고 시도하면 오류가 발생합니다. 하지만 클라이언트는 기존 영구 가입을 지정하여 상호 작용할 수 있습니다.