

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 更新 Amazon MSK 叢集的組態
<a name="msk-update-cluster-config"></a>

若要更新叢集的配置，請確定叢集處於 `ACTIVE` 狀態。您還必須確保 MSK 叢集上每個代理程式的分區數量低於 [正確調整叢集大小：每個標準代理程式的分割區數量](bestpractices.md#partitions-per-broker) 中所述的限制。您無法更新超過這些限制之叢集的組態。

如需 MSK 組態的資訊，包括如何建立自訂組態、您可以更新哪些屬性，以及更新現有叢集的組態時會發生什麼情況，請參閱 [Amazon MSK 佈建組態](msk-configuration.md)。

**Topics**
+ [組態更新期間的中介裝置可用性](#update-config-cluster-availability)
+ [使用 更新叢集的組態 AWS CLI](#update-config-cli)
+ [使用 API 更新 Amazon MSK 叢集的組態](#update-config-api)

## 組態更新期間的中介裝置可用性
<a name="update-config-cluster-availability"></a>

Amazon MSK 在大多數叢集組態更新期間維持高可用性。Amazon MSK 會執行滾動更新，一次更新一個代理程式。在此過程中，叢集仍然可用，但個別代理程式會在其組態更新時重新啟動。不過，某些組態變更可能需要同時更新所有代理程式，這可能會導致整個叢集短暫中斷。如需更新期間代理程式可用性影響的詳細資訊，請參閱 [Amazon MSK 佈建組態](msk-configuration.md)。

在更新生產叢集之前，建議您在非生產環境中測試組態變更，並在維護時段期間排程更新。

如果您在升級 MSK 叢集時遇到任何問題，請參閱[升級 Amazon MSK 叢集時如何排除問題？](https://repost.aws/knowledge-center/msk-upgrade-cluster-issues)

## 使用 更新叢集的組態 AWS CLI
<a name="update-config-cli"></a>

1. 複製以下 JSON 並將其儲存到檔案。將檔案命名為 `configuration-info.json`。使用您要用來更新叢集的組態 Amazon Resource Name (ARN) 來取代 {{ConfigurationArn}}。ARN 字串必須在下列 JSON 的引號中。

   使用您要使用的組態修訂版本取代 {{Configuration-Revision}}。組態修訂版是從 `1` 開始的整數 (整數)。這個整數不能在以下 JSON 的引號中。

   ```
   {
        "Arn": {{ConfigurationArn}},
        "Revision": {{Configuration-Revision}}
   }
   ```

    

1. 執行下列指令，使用您在建立叢集時獲得的 ARN 取代 {{ClusterArn}}。若您沒有叢集的 ARN，可透過列出所有叢集來找到該 ARN。如需詳細資訊，請參閱[列出 Amazon MSK 叢集](msk-list-clusters.md)。

   將 {{Path-to-Config-Info-File}} 取代為組態資訊檔案的路徑。如果您為在上一個步驟中建立的檔案 `configuration-info.json` 命名，並將其儲存在目前的目錄中，則 {{Path-to-Config-Info-File}} 會是 `configuration-info.json`。

   將叢集目前版本取代為 {{Current-Cluster-Version}}。
**重要**  
叢集版本不是簡單的整數。若要尋找叢集的目前版本，請使用 [DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster) 操作或 [describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster.html) AWS CLI 命令。範例版本為`KTVPDKIKX0DER`。

   ```
   aws kafka update-cluster-configuration --cluster-arn {{ClusterArn}} --configuration-info file://{{Path-to-Config-Info-File}} --current-version {{Current-Cluster-Version}}
   ```

   以下是如何使用此命令的範例：

   ```
   aws kafka update-cluster-configuration --cluster-arn "arn:aws:kafka:us-east-1:0123456789012:cluster/exampleName/abcd1234-0123-abcd-5678-1234abcd-1" --configuration-info file://c:\users\tester\msk\configuration-info.json --current-version "K1X5R6FKA87"
   ```

   此 `update-cluster-configuration` 命令的輸出如以下 JSON 範例所示。

   ```
   {
       "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2",
       "ClusterOperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef"
   }
   ```

1. 如要取得 `update-cluster-configuration` 操作的結果，請執行下列命令，使用您在 `update-cluster-configuration` 命令輸出中取得的 ARN 取代 {{ClusterOperationArn}}。

   ```
   aws kafka describe-cluster-operation --cluster-operation-arn {{ClusterOperationArn}}
   ```

   此 `describe-cluster-operation` 命令的輸出如以下 JSON 範例所示。

   ```
   {
       "ClusterOperationInfo": {
           "ClientRequestId": "982168a3-939f-11e9-8a62-538df00285db",
           "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2",
           "CreationTime": "2019-06-20T21:08:57.735Z",
           "OperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef",
           "OperationState": "UPDATE_COMPLETE",
           "OperationType": "UPDATE_CLUSTER_CONFIGURATION",
           "SourceClusterInfo": {},
           "TargetClusterInfo": {
               "ConfigurationInfo": {
                   "Arn": "arn:aws:kafka:us-east-1:123456789012:configuration/ExampleConfigurationName/abcdabcd-abcd-1234-abcd-abcd123e8e8e-1",
                   "Revision": 1
               }
           }
       }
   }
   ```

   在此輸出中，`OperationType` 是 `UPDATE_CLUSTER_CONFIGURATION`。如果 `OperationState` 具有值 `UPDATE_IN_PROGRESS`，請稍候一段時間，然後再次執行 `describe-cluster-operation` 命令。

## 使用 API 更新 Amazon MSK 叢集的組態
<a name="update-config-api"></a>

若要使用 API 更新 Amazon MSK 叢集的組態，請參閱 [UpdateClusterConfiguration](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn-configuration.html#UpdateClusterConfiguration)。