| --- |
| id: admin-api-clusters |
| title: Managing Clusters |
| sidebar_label: "Clusters" |
| --- |
| |
| ````mdx-code-block |
| import Tabs from '@theme/Tabs'; |
| import TabItem from '@theme/TabItem'; |
| ```` |
| |
| :::tip |
| |
| This page only shows **some frequently used operations**. For the latest and complete information, see the **reference docs** below. |
| |
| ::: |
| |
| Category|Method|If you want to manage clusters... |
| |---|---|--- |
| [Pulsar CLI](reference-cli-tools.md) |[pulsar-admin](/reference/#/@pulsar:version_reference@/pulsar-admin/), which lists all commands, flags, descriptions, and more.| See the `clusters` command |
| [Pulsar admin APIs](admin-api-overview.md)| {@inject: rest:REST API:/}, which lists all parameters, responses, samples, and more.|See the `/admin/v2/clusters` endpoint |
| [Pulsar admin APIs](admin-api-overview.md)|[Java admin API](@pulsar:javadoc:admin@/), which lists all classes, methods, descriptions, and more.|See the `clusters` method of the `PulsarAdmin` object |
| |
| You can perform the following operations on [clusters](reference-terminology.md#cluster). |
| |
| ## Provision cluster |
| |
| You can provision new clusters using the admin interface. |
| |
| :::note |
| |
| - This operation requires superuser privileges. |
| |
| - When provisioning a new cluster, you need to [initialize cluster metadata](deploy-bare-metal.md#initialize-cluster-metadata). Cluster metadata can be initialized through the pulsar-admin CLI **only**. It cannot be performed via Pulsar admin APIs (REST API and Java admin API). |
| |
| ::: |
| |
| ````mdx-code-block |
| <Tabs groupId="api-choice" |
| defaultValue="pulsar-admin" |
| values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}> |
| <TabItem value="pulsar-admin"> |
| |
| You can provision a new cluster using the [`create`](/reference/#/@pulsar:version_reference@/pulsar-admin/clusters?id=create) subcommand. Here's an example: |
| |
| ```shell |
| pulsar-admin clusters create cluster-1 \ |
| --url http://my-cluster.org.com:8080 \ |
| --broker-url pulsar://my-cluster.org.com:6650 |
| ``` |
| |
| </TabItem> |
| <TabItem value="REST API"> |
| |
| {@inject: endpoint|PUT|/admin/v2/clusters/:cluster|operation/createCluster?version=@pulsar:version_number@} |
| |
| </TabItem> |
| <TabItem value="Java"> |
| |
| ```java |
| ClusterData clusterData = new ClusterData( |
| serviceUrl, |
| serviceUrlTls, |
| brokerServiceUrl, |
| brokerServiceUrlTls |
| ); |
| admin.clusters().createCluster(clusterName, clusterData); |
| ``` |
| |
| </TabItem> |
| |
| </Tabs> |
| ```` |
| |
| ## Get cluster configuration |
| |
| You can fetch the [configuration](reference-configuration.md) for an existing cluster at any time. |
| |
| ````mdx-code-block |
| <Tabs groupId="api-choice" |
| defaultValue="pulsar-admin" |
| values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}> |
| <TabItem value="pulsar-admin"> |
| |
| Use the [`get`](/reference/#/@pulsar:version_reference@/pulsar-admin/clusters?id=get) subcommand and specify the name of the cluster. Here's an example: |
| |
| ```shell |
| pulsar-admin clusters get cluster-1 |
| ``` |
| Output: |
| |
| ```json |
| { |
| "serviceUrl": "http://my-cluster.org.com:8080/", |
| "serviceUrlTls": null, |
| "brokerServiceUrl": "pulsar://my-cluster.org.com:6650/", |
| "brokerServiceUrlTls": null |
| "peerClusterNames": null |
| } |
| ``` |
| |
| </TabItem> |
| <TabItem value="REST API"> |
| |
| {@inject: endpoint|GET|/admin/v2/clusters/:cluster|operation/getCluster?version=@pulsar:version_number@} |
| |
| </TabItem> |
| <TabItem value="Java"> |
| |
| ```java |
| admin.clusters().getCluster(clusterName); |
| ``` |
| |
| </TabItem> |
| |
| </Tabs> |
| ```` |
| |
| ## Update cluster |
| |
| ### Update cluster configuration |
| |
| You can update the configuration for an existing cluster at any time. |
| |
| ````mdx-code-block |
| <Tabs groupId="api-choice" |
| defaultValue="pulsar-admin" |
| values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}> |
| <TabItem value="pulsar-admin"> |
| |
| Use the [`update`](/reference/#/@pulsar:version_reference@/pulsar-admin/clusters?id=update) subcommand and specify new configuration values using flags. |
| |
| ```shell |
| pulsar-admin clusters update cluster-1 \ |
| --url http://my-cluster.org.com:4081 \ |
| --broker-url pulsar://my-cluster.org.com:3350 |
| ``` |
| |
| </TabItem> |
| <TabItem value="REST API"> |
| |
| {@inject: endpoint|POST|/admin/v2/clusters/:cluster|operation/updateCluster?version=@pulsar:version_number@} |
| |
| </TabItem> |
| <TabItem value="Java"> |
| |
| ```java |
| ClusterData clusterData = new ClusterData( |
| serviceUrl, |
| serviceUrlTls, |
| brokerServiceUrl, |
| brokerServiceUrlTls |
| ); |
| admin.clusters().updateCluster(clusterName, clusterData); |
| ``` |
| |
| </TabItem> |
| |
| </Tabs> |
| ```` |
| |
| ### Update peer-cluster data |
| |
| Peer clusters can be configured for a given cluster in a Pulsar [instance](reference-terminology.md#instance). |
| |
| ````mdx-code-block |
| <Tabs groupId="api-choice" |
| defaultValue="pulsar-admin" |
| values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}> |
| <TabItem value="pulsar-admin"> |
| |
| Use the [`update-peer-clusters`](/reference/#/@pulsar:version_reference@/pulsar-admin/clusters?id=update) subcommand and specify the list of peer-cluster names. |
| |
| ```shell |
| pulsar-admin update-peer-clusters cluster-1 --peer-clusters cluster-2 |
| ``` |
| |
| </TabItem> |
| <TabItem value="REST API"> |
| |
| {@inject: endpoint|POST|/admin/v2/clusters/:cluster/peers|operation/setPeerClusterNames?version=@pulsar:version_number@} |
| |
| </TabItem> |
| <TabItem value="Java"> |
| |
| ```java |
| admin.clusters().updatePeerClusterNames(clusterName, peerClusterList); |
| ``` |
| |
| </TabItem> |
| |
| </Tabs> |
| ```` |
| |
| ## List cluster |
| |
| You can fetch a list of all clusters in a Pulsar [instance](reference-terminology.md#instance). |
| |
| ````mdx-code-block |
| <Tabs groupId="api-choice" |
| defaultValue="pulsar-admin" |
| values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}> |
| <TabItem value="pulsar-admin"> |
| |
| Use the [`list`](/reference/#/@pulsar:version_reference@/pulsar-admin/clusters?id=list) subcommand. |
| |
| ```shell |
| pulsar-admin clusters list |
| ``` |
| |
| Output: |
| |
| ``` |
| cluster-1 |
| cluster-2 |
| ``` |
| </TabItem> |
| <TabItem value="REST API"> |
| |
| {@inject: endpoint|GET|/admin/v2/clusters|operation/getClusters?version=@pulsar:version_number@} |
| |
| </TabItem> |
| <TabItem value="Java"> |
| |
| ```java |
| admin.clusters().getClusters(); |
| ``` |
| |
| </TabItem> |
| |
| </Tabs> |
| ```` |
| ## Delete cluster |
| |
| Clusters can be deleted from a Pulsar [instance](reference-terminology.md#instance). |
| |
| ````mdx-code-block |
| <Tabs groupId="api-choice" |
| defaultValue="pulsar-admin" |
| values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}> |
| <TabItem value="pulsar-admin"> |
| |
| Use the [`delete`](/reference/#/@pulsar:version_reference@/pulsar-admin/clusters?id=delete) subcommand and specify the name of the cluster. |
| |
| ``` |
| pulsar-admin clusters delete cluster-1 |
| ``` |
| |
| </TabItem> |
| <TabItem value="REST API"> |
| |
| {@inject: endpoint|DELETE|/admin/v2/clusters/:cluster|operation/deleteCluster?version=@pulsar:version_number@} |
| |
| </TabItem> |
| <TabItem value="Java"> |
| |
| ```java |
| admin.clusters().deleteCluster(clusterName); |
| ``` |
| |
| </TabItem> |
| |
| </Tabs> |
| ```` |