Managing Clusters
Pulsar 集群包括了一个或多个的 Pulsar broker、BookKeeper 服务器(即 bookie),以及一个提供配置和协调管理功能的 ZooKeeper 集群。
管理集群的方式有以下几种:
- pulsar-admin 工具的 clusters 命令
- Admin REST API 的
/admin/v2/clusters
端点 - Java API 中 PulsarAdmin 对象的
clusters
方法
集群资源
准备新集群
可以通过 admin 接口提供新集群。
注意:超级用户才有权限进行此操作
pulsar-admin
REST API
JAVA
You can provision a new cluster using the create subcommand. 下面是一个示例:
$ pulsar-admin clusters create cluster-1 \ --url http://my-cluster.org.com:8080 \ --broker-url pulsar://my-cluster.org.com:6650
PUT /admin/v2/clusters/:cluster
ClusterData clusterData = new ClusterData( serviceUrl, serviceUrlTls, brokerServiceUrl, brokerServiceUrlTls);admin.clusters().createCluster(clusterName, clusterData);
初始化集群元数据
在准备新集群时,需要初始化集群的元数据。 初始化集群元数据需要指定以下内容:
- 集群名称
- 集群与本地 ZooKeeper 连接的字符串
- 整个集群实例的配置存储连接字符串。
- 集群 web 服务的 URL
- Broker 服务的 URL,用于启动集群中 broker 之间的交互
You must initialize cluster metadata before starting up any brokers that will belong to the cluster.
不能通过 REST API 或者 Java admin API 初始化集群元数据。
与 Pulsar 的其他管理功能不同的是,不能通过 admin REST API 或 admin Java 客户端初始化集群元数据。 但是可以使用 pulsar CLI 执行 initialize-cluster-metadata命令。
集群元数据初始化命令示例如下:
bin/pulsar initialize-cluster-metadata \
--cluster us-west \
--zookeeper zk1.us-west.example.com:2181 \
--configuration-store zk1.us-west.example.com:2184 \
--web-service-url http://pulsar.us-west.example.com:8080/ \
--web-service-url-tls https://pulsar.us-west.example.com:8443/ \
--broker-service-url pulsar://pulsar.us-west.example.com:6650/ \
--broker-service-url-tls pulsar+ssl://pulsar.us-west.example.com:6651/
在实例中使用 TLS 认证 时,只需使用 --*-tls
参数。
获取配置
你可以随时获取现有集群的配置。
pulsar-admin
REST API
JAVA
Use the get subcommand and specify the name of the cluster. 下面是一个示例:
$ pulsar-admin clusters get cluster-1{ "serviceUrl": "http://my-cluster.org.com:8080/", "serviceUrlTls": null, "brokerServiceUrl": "pulsar://my-cluster.org.com:6650/", "brokerServiceUrlTls": null "peerClusterNames": null}
GET /admin/v2/clusters/:cluster
admin.clusters().getCluster(clusterName);
更新
你可以随时更新现有集群的配置。
pulsar-admin
REST API
JAVA
使用 update 子命令并使用参数指定新配置值。
$ pulsar-admin clusters update cluster-1 \ --url http://my-cluster.org.com:4081 \ --broker-url pulsar://my-cluster.org.com:3350
POST /admin/v2/clusters/:cluster
ClusterData clusterData = new ClusterData( serviceUrl, serviceUrlTls, brokerServiceUrl, brokerServiceUrlTls);admin.clusters().updateCluster(clusterName, clusterData);
删除
可以从 Pulsar 实例中删除集群。
pulsar-admin
REST API
JAVA
使用 delete 子命令并指定集群名称。
$ pulsar-admin clusters delete cluster-1
DELETE /admin/v2/clusters/:cluster
admin.clusters().deleteCluster(clusterName);
获取资源列表
可以获取 Pulsar 实例中的所有集群。
pulsar-admin
REST API
JAVA
使用 list 子命令。
$ pulsar-admin clusters listcluster-1cluster-2
admin.clusters().getClusters();
更新对等集群(peer-cluster)数据
在 Pulsar 实例中,可以为给定集群配置 peer-cluster。
pulsar-admin
REST API
JAVA
使用update-peer-clusters子命令并指定对等集群的名称。
$ pulsar-admin update-peer-clusters cluster-1 --peer-clusters cluster-2
POST /admin/v2/clusters/:cluster/peers
admin.clusters().updatePeerClusterNames(clusterName, peerClusterList);