브로커 관리
브로커 관리 (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 하위 명령은 기존 구성을 업데이트해요. config와 value 플래그로 각각 파라미터 이름과 새 값을 전달받아요. 다음은 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객체 문서에서 볼 수 있어요.