브로커 관리

브로커 관리 (Managing Brokers)

브로커를 관리하는 가장 흔한 작업들을 정리했어요. 활성 브로커 목록 조회, 브로커가 소유한 네임스페이스 조회, 브로커 설정 업데이트, 리더 브로커 정보 확인 같은 일들을 pulsar-admin CLI, REST API, Java admin API로 각각 어떻게 하는지 보여드릴게요.

출처: 문서

본문

tip

이 페이지는 자주 사용하는 일부 작업만 보여줘요. 최신·전체 정보는 아래 참고 문서를 확인하세요.

Category Method If you want to manage brokers...
Pulsar CLI pulsar-admin, which lists all commands, flags, descriptions, and more. See the broker command
Pulsar admin APIs REST API, which lists all parameters, responses, samples, and more. See the /admin/v2/brokers endpoint
Pulsar admin APIs Java admin API, which lists all classes, methods, descriptions, and more. See the brokers method of the PulsarAdmin object

활성 브로커 목록 (List active broker)

클러스터 이름으로 트래픽을 서빙하는 모든 활성 브로커를 가져와요.

pulsar-admin

pulsar-admin brokers list use

예시 출력:

localhost:8080

REST API: GET /admin/v2/brokers/{cluster}

Java

admin.brokers().getActiveBrokers(clusterName)

브로커가 소유한 네임스페이스 목록 (List namespace owned by broker)

주어진 브로커가 소유하고 서빙하는 모든 네임스페이스를 나열할 수 있어요.

pulsar-admin

pulsar-admin brokers namespaces use \
    --url localhost:8080

예시 출력:

public/default/0x00000000_0x40000000    [broker_assignment=shared is_controlled=false is_active=true]
public/default/0xc0000000_0xffffffff    [broker_assignment=shared is_controlled=false is_active=true]
public/functions/0x40000000_0x80000000    [broker_assignment=shared is_controlled=false is_active=true]
public/functions/0x00000000_0x40000000    [broker_assignment=shared is_controlled=false is_active=true]
pulsar/standalone/localhost:8080/0x00000000_0xffffffff    [broker_assignment=shared is_controlled=false is_active=true]
pulsar/localhost:8080/0x00000000_0xffffffff    [broker_assignment=shared is_controlled=false is_active=true]
public/functions/0x80000000_0xc0000000    [broker_assignment=shared is_controlled=false is_active=true]
public/default/0x80000000_0xc0000000    [broker_assignment=shared is_controlled=false is_active=true]

REST API: GET /admin/v2/brokers/{clusterName}/{brokerId}/ownedNamespaces

Java

admin.brokers().getOwnedNamespaces(cluster,brokerUrl);

브로커 설정 업데이트 (Update broker conf)

브로커 구성을 업데이트하는 방법은 두 가지예요.

  • 브로커를 시작할 때 구성을 제공하는 방법
  • 브로커 실행 중에 구성을 동적으로 업데이트하는 방법

Pulsar의 모든 브로커 구성은 ZooKeeper에 저장되기 때문에, 브로커가 실행 중일 때도 구성 값을 동적으로 업데이트할 수 있어요. 브로커 구성을 동적으로 업데이트하면 ZooKeeper가 브로커에 변경을 알려주고, 브로커가 기존 구성 값을 덮어써요.

업데이트 가능한 브로커 설정 목록 (List updatable broker conf)

업데이트 가능한 모든 구성 파라미터 목록을 가져와요.

pulsar-admin

pulsar-admin brokers list-dynamic-config

예시 출력:

forceDeleteNamespaceAllowed
loadBalancerMemoryResourceWeight
allowAutoTopicCreation
brokerDeleteInactivePartitionedTopicMetadataEnabled
managedLedgerInactiveLedgerRolloverTimeSeconds
loadBalancerNamespaceBundleMaxMsgRate
resourceUsageTransportPublishIntervalInSecs
# omit...

REST API: GET /admin/v2/brokers/configuration

Java

admin.brokers().getDynamicConfigurationNames();

브로커 설정 동적 업데이트 (Update broker conf dynamically)

pulsar-admin

update-dynamic-config 하위 명령은 기존 구성을 업데이트해요. configvalue 플래그로 각각 파라미터 이름과 새 값을 전달받아요. 다음은 brokerShutdownTimeoutMs 파라미터의 예시예요.

pulsar-admin brokers update-dynamic-config --config brokerShutdownTimeoutMs --value 100

REST API: POST /admin/v2/brokers/configuration/{configName}/{configValue}

Java

admin.brokers().updateDynamicConfiguration(configName, configValue);

업데이트된 브로커 설정 목록 (List updated broker conf)

동적으로 업데이트된 모든 파라미터 목록을 가져와요.

pulsar-admin

pulsar-admin brokers get-all-dynamic-config

예시 출력:

brokerShutdownTimeoutMs    100

REST API: GET /admin/v2/brokers/configuration/values

Java

admin.brokers().getAllDynamicConfigurations();

리더 브로커 정보 가져오기 (Get info of leader broker)

리더 브로커의 정보를 가져와요. 예를 들어 서비스 URL 같은 것이죠.

pulsar-admin

pulsar-admin brokers leader-broker

예시 출력:

{
  "serviceUrl" : "http://localhost:8080"
}

REST API: GET /admin/v2/brokers/leaderBroker

Java

admin.brokers().getLeaderBroker()

위 코드의 자세한 내용은 여기를 참고해요.

더 알아보기 (Learn more)

  • 브로커 관련 전체 명령은 pulsar-admin의 broker 명령 참고서를 확인해요.
  • REST API 엔드포인트 상세는 /admin/v2/brokers 문서를 참고해요.
  • Java admin API의 brokers 메서드는 PulsarAdmin 객체 문서에서 볼 수 있어요.