14.2. 브로커 클러스터 생성
클러스터에 참여해야 하는 각 브로커에 클러스터 연결을 구성하여 브로커 클러스터를 생성합니다. 클러스터 연결은 브로커가 다른 브로커에 연결하는 방법을 정의합니다.
정적 검색 또는 동적 검색을 사용하는 브로커 클러스터를 생성할 수 있습니다(UDP 멀티 캐스트 또는 iPXE).
사전 요구 사항
브로커 클러스터의 크기를 결정해야 합니다.
자세한 내용은 14.1.7절. “클러스터 크기 조정 고려 사항”의 내용을 참조하십시오.
14.2.1. 정적 검색을 사용하여 브로커 클러스터 생성
브로커의 정적 목록을 지정하여 브로커 클러스터를 생성할 수 있습니다. 네트워크에서 UDP 멀티 캐스트 또는 iPXE를 사용할 수 없는 경우 이 정적 검색 방법을 사용합니다.
절차
-
<
;broker_instance_dir> /etc/broker.xml
구성 파일을 엽니다. <
;core>
; 요소 내에 다음 커넥터를 추가합니다.- 다른 브로커가이 하나에 연결하는 방법을 정의하는 커넥터
- 이 브로커가 클러스터의 다른 브로커에 연결하는 방법을 정의하는 하나 이상의 커넥터
<configuration> <core> ... <connectors> <connector name="netty-connector">tcp://localhost:61617</connector> 1 <connector name="broker2">tcp://localhost:61618</connector> 2 <connector name="broker3">tcp://localhost:61619</connector> </connectors> ... </core> </configuration>
커넥터에 대한 자세한 내용은 2.3절. “커넥터 정보” 을 참조하십시오.
클러스터 연결을 추가하고 정적 검색을 사용하도록 구성합니다.
기본적으로 클러스터 연결은 대칭 토폴로지의 모든 주소에 대한 메시지를 로드 밸런싱합니다.
<configuration> <core> ... <cluster-connections> <cluster-connection name="my-cluster"> <connector-ref>netty-connector</connector-ref> <static-connectors> <connector-ref>broker2-connector</connector-ref> <connector-ref>broker3-connector</connector-ref> </static-connectors> </cluster-connection> </cluster-connections> ... </core> </configuration>
cluster-connection
-
name
특성을 사용하여 클러스터 연결의 이름을 지정합니다. connector-ref
- 다른 브로커가 이 하나에 연결하는 방법을 정의하는 커넥터입니다.
static-connectors
- 이 브로커가 클러스터의 다른 브로커에 초기 연결을 수행하는 데 사용할 수 있는 하나 이상의 커넥터입니다. 이 초기 연결을 수행한 후 브로커는 클러스터의 다른 브로커를 검색합니다. 클러스터가 정적 검색을 사용하는 경우에만 이 속성을 구성해야 합니다.
클러스터 연결에 대한 추가 속성을 구성합니다.
이러한 추가 클러스터 연결 속성에는 가장 일반적인 사용 사례에 적합한 기본값이 있습니다. 따라서 기본 동작을 원하지 않는 경우에만 이러한 속성을 구성해야 합니다. 자세한 내용은 부록 C. 클러스터 연결 구성 CloudEvent의 내용을 참조하십시오.
클러스터 사용자 및 암호를 생성합니다.
AMQ Broker에는 기본 클러스터 인증 정보가 제공되지만 권한이 없는 원격 클라이언트가 이러한 기본 인증 정보를 사용하여 브로커에 연결하지 못하도록 변경해야 합니다.
중요클러스터 암호는 클러스터의 모든 브로커에서 동일해야 합니다.
<configuration> <core> ... <cluster-user>cluster_user</cluster-user> <cluster-password>cluster_user_password</cluster-password> ... </core> </configuration>
추가 브로커마다 이 절차를 반복합니다.
추가 브로커마다 클러스터 구성을 복사할 수 있습니다. 그러나 다른 AMQ Broker 데이터 파일(예: bindings, journal, large messages 디렉터리)은 복사하지 마십시오. 이러한 파일은 클러스터의 노드 중에서 고유해야 합니다. 클러스터가 올바르게 형성되지 않습니다.
추가 리소스
-
정적 검색을 사용하는 브로커 클러스터의 예는
clustered-static-discovery
AMQ Broker 예제 프로그램을 참조하십시오.
14.2.2. UDP 기반 동적 검색을 사용하여 브로커 클러스터 생성
브로커가 UDP 멀티 캐스트를 통해 동적으로 서로 검색하는 브로커 클러스터를 생성할 수 있습니다.
절차
-
<
;broker_instance_dir> /etc/broker.xml
구성 파일을 엽니다. <
core>
; 요소 내에서 커넥터를 추가합니다.이 커넥터는 다른 브로커가 이 하나에 연결하는 데 사용할 수 있는 연결 정보를 정의합니다. 이 정보는 검색 중에 클러스터의 다른 브로커로 전송됩니다.
<configuration> <core> ... <connectors> <connector name="netty-connector">tcp://localhost:61617</connector> </connectors> ... </core> </configuration>
UDP 브로드캐스트 그룹을 추가합니다.
브로드캐스트 그룹을 사용하면 브로커가 클러스터 연결에 대한 정보를 클러스터의 다른 브로커에 푸시할 수 있습니다. 이 브로드캐스트 그룹은 UDP를 사용하여 연결 설정을 브로드캐스트합니다.
<configuration> <core> ... <broadcast-groups> <broadcast-group name="my-broadcast-group"> <local-bind-address>172.16.9.3</local-bind-address> <local-bind-port>-1</local-bind-port> <group-address>231.7.7.7</group-address> <group-port>9876</group-port> <broadcast-period>2000</broadcast-period> <connector-ref>netty-connector</connector-ref> </broadcast-group> </broadcast-groups> ... </core> </configuration>
달리 명시되지 않는 한 다음 매개 변수는 필요합니다.
broadcast-group
-
name
속성을 사용하여 브로드캐스트 그룹의 고유 이름을 지정합니다. local-bind-address
- UDP 소켓이 바인딩되는 주소입니다. 브로커에 네트워크 인터페이스가 여러 개인 경우 브로드캐스트에 사용할 네트워크 인터페이스를 지정해야 합니다. 이 속성을 지정하지 않으면 소켓은 운영 체제에서 선택한 IP 주소에 바인딩됩니다. UDP별 속성입니다.
local-bind-port
-
데이터그램 소켓이 바인딩된 포트입니다. 대부분의 경우 익명 포트를 지정하는
-1
의 기본값을 사용합니다. 이 매개변수는local-bind-address
와 관련하여 사용됩니다. UDP별 속성입니다. group-address
-
데이터를 전송할 멀티캐스트 주소입니다.
224.0.0.0
-239.255.255.255
범위에 있는 클래스 D IP 주소입니다. 주소224.0.0.0
은 예약되어 있으며 사용할 수 없습니다. UDP별 속성입니다. group-port
- 브로드캐스트에 사용되는 UDP 포트 번호입니다. UDP별 속성입니다.
broadcast-period
(선택 사항)- 연속 브로드캐스트 사이의 간격(밀리초)입니다. 기본값은 2000밀리초입니다.
connector-ref
- 브로드캐스트해야 하는 이전에 구성된 클러스터 커넥터입니다.
UDP 검색 그룹을 추가합니다.
검색 그룹은 이 브로커가 다른 브로커로부터 커넥터 정보를 수신하는 방법을 정의합니다. 브로커는 커넥터 목록(각 브로커당 하나의 항목)을 유지 관리합니다. 브로커에서 브로드캐스트를 수신하면 해당 항목을 업데이트합니다. 일정 기간 동안 브로커로부터 브로드캐스트를 수신하지 못하면 해당 항목이 제거됩니다.
이 검색 그룹은 UDP를 사용하여 클러스터에서 브로커를 검색합니다.
<configuration> <core> ... <discovery-groups> <discovery-group name="my-discovery-group"> <local-bind-address>172.16.9.7</local-bind-address> <group-address>231.7.7.7</group-address> <group-port>9876</group-port> <refresh-timeout>10000</refresh-timeout> </discovery-group> <discovery-groups> ... </core> </configuration>
달리 명시되지 않는 한 다음 매개 변수는 필요합니다.
discovery-group
-
name
속성을 사용하여 검색 그룹의 고유 이름을 지정합니다. local-bind-address
(선택 사항)- 브로커가 실행 중인 시스템에서 여러 네트워크 인터페이스를 사용하는 경우 검색 그룹에서 수신 대기해야 하는 네트워크 인터페이스를 지정할 수 있습니다. UDP별 속성입니다.
group-address
-
수신 대기할 그룹의 멀티 캐스트 주소입니다. 수신 대기하려는 브로드캐스트 그룹의
group-address
와 일치해야 합니다. UDP별 속성입니다. group-port
-
멀티 캐스트 그룹의 UDP 포트 번호입니다. 수신 대기하려는 브로드캐스트 그룹의
group-port
와 일치해야 합니다. UDP별 속성입니다. refresh-timeout
(선택 사항)검색 그룹에서 해당 브로커의 커넥터 쌍 항목을 제거하기 전에 특정 브로커에서 마지막 브로드캐스트를 수신한 후 대기하는 시간(밀리초)입니다. 기본값은 10000밀리초(10초)입니다.
이 값을 브로드캐스트 그룹의
broadcast-period
보다 훨씬 더 높은 값으로 설정합니다. 그렇지 않으면 브로커가 여전히 브로드캐스트 상태 있음에도 불구하고 목록에서 정기적으로 사라질 수 있습니다 (시간에 약간의 차이로 인해).
클러스터 연결을 생성하고 동적 검색을 사용하도록 구성합니다.
기본적으로 클러스터 연결은 대칭 토폴로지의 모든 주소에 대한 메시지를 로드 밸런싱합니다.
<configuration> <core> ... <cluster-connections> <cluster-connection name="my-cluster"> <connector-ref>netty-connector</connector-ref> <discovery-group-ref discovery-group-name="my-discovery-group"/> </cluster-connection> </cluster-connections> ... </core> </configuration>
cluster-connection
-
name
특성을 사용하여 클러스터 연결의 이름을 지정합니다. connector-ref
- 다른 브로커가 이 하나에 연결하는 방법을 정의하는 커넥터입니다.
discovery-group-ref
- 이 브로커가 클러스터의 다른 멤버를 찾는 데 사용해야 하는 검색 그룹입니다. 클러스터가 동적 검색을 사용하는 경우에만 이 속성을 구성해야 합니다.
클러스터 연결에 대한 추가 속성을 구성합니다.
이러한 추가 클러스터 연결 속성에는 가장 일반적인 사용 사례에 적합한 기본값이 있습니다. 따라서 기본 동작을 원하지 않는 경우에만 이러한 속성을 구성해야 합니다. 자세한 내용은 부록 C. 클러스터 연결 구성 CloudEvent의 내용을 참조하십시오.
클러스터 사용자 및 암호를 생성합니다.
AMQ Broker에는 기본 클러스터 인증 정보가 제공되지만 권한이 없는 원격 클라이언트가 이러한 기본 인증 정보를 사용하여 브로커에 연결하지 못하도록 변경해야 합니다.
중요클러스터 암호는 클러스터의 모든 브로커에서 동일해야 합니다.
<configuration> <core> ... <cluster-user>cluster_user</cluster-user> <cluster-password>cluster_user_password</cluster-password> ... </core> </configuration>
추가 브로커마다 이 절차를 반복합니다.
추가 브로커마다 클러스터 구성을 복사할 수 있습니다. 그러나 다른 AMQ Broker 데이터 파일(예: bindings, journal, large messages 디렉터리)은 복사하지 마십시오. 이러한 파일은 클러스터의 노드 중에서 고유해야 합니다. 클러스터가 올바르게 형성되지 않습니다.
추가 리소스
-
UDP와 함께 동적 검색을 사용하는 브로커 클러스터 구성의 예는
클러스터형 대기열
AMQ Broker 예제 프로그램을 참조하십시오.
14.2.3. CloudEvent 기반 동적 검색을 사용하여 브로커 클러스터 생성
이미 사용자 환경에서 CloudEvent를 사용 중인 경우 이를 사용하여 브로커가 서로 동적으로 검색하는 브로커 클러스터를 생성할 수 있습니다.
사전 요구 사항
CloudEvent를 설치하고 구성해야 합니다.
CloudEvent 구성 파일의 예는
clustered-jgroups
AMQ Broker 예제 프로그램을 참조하십시오.
절차
-
<
;broker_instance_dir> /etc/broker.xml
구성 파일을 엽니다. <
core>
; 요소 내에서 커넥터를 추가합니다.이 커넥터는 다른 브로커가 이 하나에 연결하는 데 사용할 수 있는 연결 정보를 정의합니다. 이 정보는 검색 중에 클러스터의 다른 브로커로 전송됩니다.
<configuration> <core> ... <connectors> <connector name="netty-connector">tcp://localhost:61617</connector> </connectors> ... </core> </configuration>
<
;core&
gt; 요소 내에서 CloudEvent 브로드캐스트 그룹을 추가합니다.브로드캐스트 그룹을 사용하면 브로커가 클러스터 연결에 대한 정보를 클러스터의 다른 브로커에 푸시할 수 있습니다. 이 브로드캐스트 그룹은LoadBalancer를 사용하여 연결 설정을 브로드캐스트합니다.
<configuration> <core> ... <broadcast-groups> <broadcast-group name="my-broadcast-group"> <jgroups-file>test-jgroups-file_ping.xml</jgroups-file> <jgroups-channel>activemq_broadcast_channel</jgroups-channel> <broadcast-period>2000</broadcast-period> <connector-ref>netty-connector</connector-ref> </broadcast-group> </broadcast-groups> ... </core> </configuration>
달리 명시되지 않는 한 다음 매개 변수는 필요합니다.
broadcast-group
-
name
속성을 사용하여 브로드캐스트 그룹의 고유 이름을 지정합니다. jgroups-file
- CloudEvent 채널을 초기화하는 CloudEvent 구성 파일의 이름입니다. 브로커가 로드할 수 있도록 파일이 Java 리소스 경로에 있어야 합니다.
jgroups-channel
- 브로드캐스트를 위해 연결할 CloudEvent 채널의 이름입니다.
broadcast-period
(선택 사항)- 연속 브로드캐스트 사이의 간격(밀리초)입니다. 기본값은 2000밀리초입니다.
connector-ref
- 브로드캐스트해야 하는 이전에 구성된 클러스터 커넥터입니다.
CloudEvent 검색 그룹을 추가합니다.
검색 그룹은 커넥터 정보를 수신하는 방법을 정의합니다. 브로커는 커넥터 목록(각 브로커당 하나의 항목)을 유지 관리합니다. 브로커에서 브로드캐스트를 수신하면 해당 항목을 업데이트합니다. 일정 기간 동안 브로커로부터 브로드캐스트를 수신하지 못하면 해당 항목이 제거됩니다.
이 검색 그룹은 10.0.0.1을 사용하여 클러스터의 브로커를 검색합니다.
<configuration> <core> ... <discovery-groups> <discovery-group name="my-discovery-group"> <jgroups-file>test-jgroups-file_ping.xml</jgroups-file> <jgroups-channel>activemq_broadcast_channel</jgroups-channel> <refresh-timeout>10000</refresh-timeout> </discovery-group> <discovery-groups> ... </core> </configuration>
달리 명시되지 않는 한 다음 매개 변수는 필요합니다.
discovery-group
-
name
속성을 사용하여 검색 그룹의 고유 이름을 지정합니다. jgroups-file
- CloudEvent 채널을 초기화하는 CloudEvent 구성 파일의 이름입니다. 브로커가 로드할 수 있도록 파일이 Java 리소스 경로에 있어야 합니다.
jgroups-channel
- 브로드캐스트 수신을 위해 연결할 CloudEvent 채널의 이름입니다.
refresh-timeout
(선택 사항)검색 그룹에서 해당 브로커의 커넥터 쌍 항목을 제거하기 전에 특정 브로커에서 마지막 브로드캐스트를 수신한 후 대기하는 시간(밀리초)입니다. 기본값은 10000밀리초(10초)입니다.
이 값을 브로드캐스트 그룹의
broadcast-period
보다 훨씬 더 높은 값으로 설정합니다. 그렇지 않으면 브로커가 여전히 브로드캐스트 상태 있음에도 불구하고 목록에서 정기적으로 사라질 수 있습니다 (시간에 약간의 차이로 인해).
클러스터 연결을 생성하고 동적 검색을 사용하도록 구성합니다.
기본적으로 클러스터 연결은 대칭 토폴로지의 모든 주소에 대한 메시지를 로드 밸런싱합니다.
<configuration> <core> ... <cluster-connections> <cluster-connection name="my-cluster"> <connector-ref>netty-connector</connector-ref> <discovery-group-ref discovery-group-name="my-discovery-group"/> </cluster-connection> </cluster-connections> ... </core> </configuration>
cluster-connection
-
name
특성을 사용하여 클러스터 연결의 이름을 지정합니다. connector-ref
- 다른 브로커가 이 하나에 연결하는 방법을 정의하는 커넥터입니다.
discovery-group-ref
- 이 브로커가 클러스터의 다른 멤버를 찾는 데 사용해야 하는 검색 그룹입니다. 클러스터가 동적 검색을 사용하는 경우에만 이 속성을 구성해야 합니다.
클러스터 연결에 대한 추가 속성을 구성합니다.
이러한 추가 클러스터 연결 속성에는 가장 일반적인 사용 사례에 적합한 기본값이 있습니다. 따라서 기본 동작을 원하지 않는 경우에만 이러한 속성을 구성해야 합니다. 자세한 내용은 부록 C. 클러스터 연결 구성 CloudEvent의 내용을 참조하십시오.
클러스터 사용자 및 암호를 생성합니다.
AMQ Broker에는 기본 클러스터 인증 정보가 제공되지만 권한이 없는 원격 클라이언트가 이러한 기본 인증 정보를 사용하여 브로커에 연결하지 못하도록 변경해야 합니다.
중요클러스터 암호는 클러스터의 모든 브로커에서 동일해야 합니다.
<configuration> <core> ... <cluster-user>cluster_user</cluster-user> <cluster-password>cluster_user_password</cluster-password> ... </core> </configuration>
추가 브로커마다 이 절차를 반복합니다.
추가 브로커마다 클러스터 구성을 복사할 수 있습니다. 그러나 다른 AMQ Broker 데이터 파일(예: bindings, journal, large messages 디렉터리)은 복사하지 마십시오. 이러한 파일은 클러스터의 노드 중에서 고유해야 합니다. 클러스터가 올바르게 형성되지 않습니다.
추가 리소스
-
CloudEvent와 함께 동적 검색을 사용하는 브로커 클러스터의 예는
clustered-jgroups
AMQ Broker 예제 프로그램을 참조하십시오.