16.2.2. UDP 기반 동적 검색으로 브로커 클러스터 생성

브로커가 UDP 멀티 캐스트를 통해 동적으로 서로를 검색하는 브로커 클러스터를 생성할 수 있습니다.

절차

  1. < broker-instance-dir> /etc/broker.xml 구성 파일을 엽니다.
  2. < core> 요소 내에서 커넥터를 추가합니다.

    이 커넥터는 다른 브로커가 이 커넥터에 연결하는 데 사용할 수 있는 연결 정보를 정의합니다. 이 정보는 검색 중에 클러스터의 다른 브로커로 전송됩니다.

    <configuration>
        <core>
            ...
            <connectors>
                <connector name="netty-connector">tcp://localhost:61617</connector>
            </connectors>
            ...
        </core>
    </configuration>
  3. 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.255 범위의 D IP 주소입니다.255 범위에 포함됩니다. 224.0.0.0 주소는 예약되어 있으며 사용할 수 없습니다. UDP 관련 특성입니다.
    group-port
    브로드캐스트에 사용되는 UDP 포트 번호입니다. UDP 관련 특성입니다.
    broadcast-period (선택 사항)
    연속 브로드캐스트 사이의 간격(밀리초)입니다. 기본값은 2000밀리초입니다.
    connector-ref
    이전에 구성된 클러스터 커넥터를 브로드캐스트해야 합니다.
  4. 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 보다 훨씬 높은 값으로 설정합니다. 그렇지 않으면 브로커는 여전히 브로드캐스트되어 있더라도 목록에서 주기적으로 사라질 수 있습니다 (시간에 약간의 차이로 인해).

  5. 클러스터 연결을 생성하고 동적 검색을 사용하도록 구성합니다.

    기본적으로 클러스터 연결은 대칭 토폴로지의 모든 주소에 대한 메시지의 부하를 분산합니다.

    <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
    이 브로커가 클러스터의 다른 구성원을 찾는 데 사용해야 하는 검색 그룹입니다. 클러스터가 동적 검색을 사용하는 경우에만 이 속성을 구성해야 합니다.
  6. 클러스터 연결에 대한 추가 속성을 구성합니다.

    이러한 추가 클러스터 연결 속성에는 대부분의 일반적인 사용 사례에 적합한 기본값이 있습니다. 따라서 기본 동작을 원하지 않는 경우에만 이러한 속성을 구성해야 합니다.Therefore, you only need to configure these properties if you do not want the default behavior. 자세한 내용은 부록 C. 클러스터 연결 구성 요소의 내용을 참조하십시오.

  7. 클러스터 사용자 및 암호를 만듭니다.

    AMQ Broker는 기본 클러스터 인증 정보와 함께 제공되지만 권한이 없는 원격 클라이언트가 브로커에 연결하는 데 이러한 기본 인증 정보를 사용하지 않도록 변경해야 합니다.

    중요

    클러스터 암호는 클러스터의 모든 브로커에서 동일해야 합니다.

    <configuration>
        <core>
            ...
            <cluster-user>cluster_user</cluster-user>
            <cluster-password>cluster_user_password</cluster-password>
            ...
        </core>
    </configuration>
  8. 추가 브로커에 대해 이 절차를 반복합니다.

    클러스터 구성을 각 추가 브로커에 복사할 수 있습니다. 그러나 다른 AMQ Broker 데이터 파일(예: 바인딩, 저널 및 대용량 메시지 디렉터리)은 복사하지 마십시오. 이러한 파일은 클러스터의 노드 간에 고유해야 하며 클러스터가 제대로 형성되지 않습니다.

추가 리소스