您可以編輯 Managed Service for Apache Kafka 叢集,更新叢集大小 (vCPU 數量和記憶體)、已連線的子網路清單、自動重新平衡設定和 mTLS 設定等屬性。
如要編輯叢集,可以使用 Google Cloud 控制台、Google Cloud CLI、用戶端程式庫或 Managed Kafka API。您無法使用開放原始碼 Apache Kafka API 更新叢集。
更新特定屬性 (例如 vCPU 數量和記憶體) 時,服務可能需要重新啟動叢集。叢集會一次重新啟動一個代理程式。在此期間,對個別代理商的要求可能會失敗,但這些失敗是暫時性的。常用的用戶端程式庫會自動處理這些錯誤。
必要角色和權限
如要取得更新叢集所需的權限,請要求管理員授予您專案的代管 Kafka 叢集編輯者 (roles/managedkafka.clusterEditor) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備更新叢集所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要更新叢集,您必須具備下列權限:
-
編輯叢集:
managedkafka.clusters.update
調整叢集大小
更新叢集的 vCPU 數量或記憶體時,請遵守下列規則:
叢集的整體 vCPU 與記憶體比例必須介於 1:1 和 1:8 之間。
如果縮減規模,每個現有代理程式必須至少有 1 個 vCPU 和 1 GiB 的記憶體。代理程式數量不會減少。
如果擴充規模,且變更會導致新增中介服務,與更新前的平均值相比,每個中介服務的平均 vCPU 和記憶體不得減少超過 10%。
舉例來說,如果您嘗試將叢集從 45 個 vCPU (3 個代理程式) 擴充至 48 個 vCPU (4 個代理程式),作業就會失敗。這是因為每個代理程式的平均 vCPU 數量從 15 個減少至 12 個,減少幅度為 20%,超過 10% 的限制。
詳情請參閱「更新叢集大小」。
編輯叢集
如要編輯叢集,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在叢集清單中,按一下要編輯屬性的叢集。
系統隨即會顯示叢集詳細資料頁面。
在叢集詳細資料頁面中,按一下「編輯」。
視需要編輯屬性。您可以在控制台編輯叢集的下列屬性:
- 記憶體
- vCPU
- 子網路
- 重新平衡設定
- mTLS 設定
- 標籤
按一下 [儲存]。
gcloud
-
在 Google Cloud 控制台中啟用 Cloud Shell。
Google Cloud 主控台底部會開啟一個 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已針對您目前的專案設定好相關值。工作階段可能要幾秒鐘的時間才能初始化。
執行
gcloud managed-kafka clusters update指令:gcloud managed-kafka clusters update CLUSTER_ID \ --location=LOCATION \ --cpu=CPU \ --memory=MEMORY \ --subnets=SUBNETS \ --auto-rebalance \ --labels=LABELS更改下列內容:
- CLUSTER_ID:叢集的 ID 或名稱。您無法更新這個值。
- LOCATION:叢集位置。您無法更新這個值。
- CPU:叢集的虛擬 CPU 數量。
- MEMORY:叢集的記憶體量。 請使用「MB」、「MiB」、「GB」、「GiB」、「TB」或「TiB」單位。例如「10GiB」。
- SUBNETS:要連線的子網路清單。 如有多個子網路值,請使用半形逗號分隔。
auto-rebalance:在叢集中的 CPU 數量變更時,啟用代理程式間的主題分區自動重新平衡功能。這項功能預設為啟用。- LABELS:要與叢集建立關聯的標籤。
如果在指令中使用 --async 旗標,系統會傳送更新要求並立即傳回回應,不會等待作業完成。使用 --async 標記時,叢集更新會在背景執行,您可繼續進行其他工作。如果您未使用 --async 旗標,系統會等待作業完成,然後再傳回回應。您必須等到叢集完全更新,才能繼續執行其他工作。
REST
使用任何要求資料之前,請先修改下列項目的值:
-
PROJECT_ID:您的 Google Cloud 專案 ID -
LOCATION:叢集位置 -
CLUSTER_ID:叢集 ID -
UPDATE_MASK:要更新的欄位,以半形逗號分隔的完整名稱清單表示。示例:capacityConfig.vcpuCount,capacityConfig.memoryBytes -
CPU_COUNT:叢集的 vCPU 數量 -
MEMORY:叢集的記憶體量,以位元組為單位 -
SUBNET_ID:要連線的子網路子網路 ID
HTTP 方法和網址:
PATCH https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID?updateMask=UPDATE_MASK
JSON 要求主體:
{
"capacityConfig": {
"vcpuCount": CPU_COUNT,
"memoryBytes": MEMORY
},
"gcpConfig": {
"accessConfig": {
"networkConfigs": [
{
"subnet": "projects/PROJECT_ID/regions/LOCATION/subnetworks/SUBNET_ID"
}
]
}
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"name": "projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID/topics/TOPIC_ID",
"partitionCount": PARTITION_COUNT,
"replicationFactor": REPLICATION_FACTOR
}
在要求主體中,只加入要更新的欄位,如 UPDATE_MASK 查詢參數所指定。如要新增子網路,請在 networkConfigs 中附加新項目。
Go
在試用這個範例之前,請先按照「 安裝用戶端程式庫」中的 Go 設定說明操作。詳情請參閱 Managed Service for Apache Kafka Go API 參考文件。
如要向 Managed Service for Apache Kafka 進行驗證,請設定應用程式預設憑證(ADC)。 詳情請參閱「為本機開發環境設定 ADC」。
Java
在試用這個範例之前,請先按照「 安裝用戶端程式庫」中的 Java 設定操作說明進行操作。詳情請參閱 Managed Service for Apache Kafka Java API 參考文件。
如要向 Managed Service for Apache Kafka 進行驗證,請設定應用程式預設憑證。詳情請參閱「 為本機開發環境設定 ADC」。
Python
在試用這個範例之前,請先按照「 安裝用戶端程式庫」中的 Python 設定說明操作。詳情請參閱 Managed Service for Apache Kafka Python API 參考文件。
如要向 Managed Service for Apache Kafka 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定 ADC」。
限制
建立 Managed Service for Apache Kafka 叢集後,您就無法更新下列屬性:
- 叢集名稱
- 叢集位置
- 加密類型
雖然無法變更加密類型,但可以輪替加密金鑰。