Pulsar 集群由 Pulsar broker(一个或多个)、 BookKeeper 服务器,即 bookie(一个或多个),及具有配置和协调管理功能的 ZooKeeper 集群(一个)组成。

管理集群的方式有以下几种:

集群资源

准备新集群

可以通过 admin 接口提供新集群。

注意:超级用户才有权限进行此操作

pulsar-admin

可以使用 create 子命令设置新的集群。如下所示:

  1. $ pulsar-admin clusters create cluster-1 \
  2. --url http://my-cluster.org.com:8080 \
  3. --broker-url pulsar://my-cluster.org.com:6650

REST API

PUT /admin/v2/clusters/:cluster

Java

  1. ClusterData clusterData = new ClusterData(
  2. serviceUrl,
  3. serviceUrlTls,
  4. brokerServiceUrl,
  5. brokerServiceUrlTls
  6. );
  7. admin.clusters().createCluster(clusterName, clusterData);

初始化集群元数据

在准备新集群时,需要初始化集群的元数据。 初始化集群元数据需要指定以下内容:

  • 集群名称
  • 集群与本地 ZooKeeper 连接的字符串
  • The configuration store connection string for the entire instance
  • 集群 web 服务的 URL
  • Broker 服务的 URL,用于启动集群中 broker 之间的交互

必须在启动集群中的 broker 初始化集群元数据。

不能通过 REST API 或者 Java admin API 初始化集群元数据。

与 Pulsar 的其他管理功能不同的是,不能通过 admin REST API 或 admin Java 客户端初始化集群元数据。 但是可以使用 pulsar CLI 执行 initialize-cluster-metadata命令。

集群元数据初始化命令示例如下:

  1. bin/pulsar initialize-cluster-metadata \
  2. --cluster us-west \
  3. --zookeeper zk1.us-west.example.com:2181 \
  4. --configuration-store zk1.us-west.example.com:2184 \
  5. --web-service-url http://pulsar.us-west.example.com:8080/ \
  6. --web-service-url-tls https://pulsar.us-west.example.com:8443/ \
  7. --broker-service-url pulsar://pulsar.us-west.example.com:6650/ \
  8. --broker-service-url-tls pulsar+ssl://pulsar.us-west.example.com:6651/

在实例中使用 TLS 认证 时,只需使用 --*-tls 参数。

获取配置

可以随时获取现有集群的配置

pulsar-admin

使用 get 子命令并指定集群的名称。如下所示:

  1. $ pulsar-admin clusters get cluster-1
  2. {
  3. "serviceUrl": "http://my-cluster.org.com:8080/",
  4. "serviceUrlTls": null,
  5. "brokerServiceUrl": "pulsar://my-cluster.org.com:6650/",
  6. "brokerServiceUrlTls": null
  7. "peerClusterNames": null
  8. }

REST API

GET /admin/v2/clusters/:cluster

Java

  1. admin.clusters().getCluster(clusterName);

更新

可以随时更新现有集群的配置。

pulsar-admin

使用 update 子命令并使用参数指定新配置值。

  1. $ pulsar-admin clusters update cluster-1 \
  2. --url http://my-cluster.org.com:4081 \
  3. --broker-url pulsar://my-cluster.org.com:3350

REST

POST /admin/v2/clusters/:cluster

Java

  1. ClusterData clusterData = new ClusterData(
  2. serviceUrl,
  3. serviceUrlTls,
  4. brokerServiceUrl,
  5. brokerServiceUrlTls
  6. );
  7. admin.clusters().updateCluster(clusterName, clusterData);

删除

可以从 Pulsar 实例中删除集群。

pulsar-admin

使用 delete 子命令并指定集群名称。

  1. $ pulsar-admin clusters delete cluster-1

REST API

DELETE /admin/v2/clusters/:cluster

Java

  1. admin.clusters().deleteCluster(clusterName);

获取资源列表

可以获取 Pulsar 实例中的所有集群。

pulsar-admin

使用 list 子命令。

  1. $ pulsar-admin clusters list
  2. cluster-1
  3. cluster-2

REST API

GET /admin/v2/clusters

Java
  1. admin.clusters().getClusters();

更新 peer-cluster 数据

在 Pulsar 实例中,可以为给定集群配置 peer-cluster。

pulsar-admin

使用 update-peer-clusters 子命令并指定 peer-cluster 名称。

  1. $ pulsar-admin update-peer-clusters cluster-1 --peer-clusters cluster-2

REST API

POST /admin/v2/clusters/:cluster/peers

Java

  1. admin.clusters().updatePeerClusterNames(clusterName, peerClusterList);