

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon MSK バージョンのサポート
<a name="version-support"></a>

このトピックでは、[Amazon MSK バージョンのサポートポリシー](#version-support-policy) と [Apache Kafka バージョンのアップグレード](version-upgrades.md) の手順について説明します。Kafka バージョンをアップグレードする場合は、「[バージョンアップグレードのベストプラクティス](version-upgrades-best-practices.md)」で説明されているベストプラクティスに従ってください。

**Topics**
+ [

## Amazon MSK バージョンのサポートポリシー
](#version-support-policy)
+ [

# Apache Kafka バージョンのアップグレード
](version-upgrades.md)
+ [

# バージョンアップグレードのベストプラクティス
](version-upgrades-best-practices.md)

## Amazon MSK バージョンのサポートポリシー
<a name="version-support-policy"></a>

このセクションでは、Amazon MSK でサポートされている Kafka バージョンのサポートポリシーについて説明します。
+ すべての Kafka バージョンは、サポート終了日までサポートされます。サポート終了日の詳細については、「[サポート対象の Apache Kafka バージョン](supported-kafka-versions.md)」を参照してください。サポート終了日までに、MSK クラスターを推奨される Kafka バージョン以降のバージョンにアップグレードしてください。Apache Kafka バージョンのアップグレードの詳細については、「[Apache Kafka バージョンのアップグレード](version-upgrades.md)」を参照してください。サポート終了日を過ぎた Kafka バージョンを使用するクラスターは、推奨される Kafka バージョンに自動的にアップグレードされます。自動アップグレードは、サポート終了日以降にいつでも実行される可能性があります。アップグレード前に通知は届きません。
+ MSK では、新しく作成された、サポート終了日が公開されている Kafka バージョンを使用するクラスターのサポートを段階的に廃止します。

# Apache Kafka バージョンのアップグレード
<a name="version-upgrades"></a>

既存の MSK クラスターを新しいバージョンの Apache Kafka にアップグレードできます。クラスターの Kafka バージョンをアップグレードする前に、クライアント側のソフトウェアのバージョンが新しい Kafka バージョンの機能をサポートしていることを確認してください。

アップグレード中にクラスターの高可用性にする方法については、「[高可用性クラスターの構築](bestpractices.md#ensure-high-availability)」を参照してください。

**を使用して Apache Kafka バージョンをアップグレードする AWS マネジメントコンソール**

1. [https://console.aws.amazon.com/msk/](https://console.aws.amazon.com/msk/) で Amazon MSK コンソールを開きます。

1. ナビゲーションバーで、クラスターを作成したリージョンを選択します。

1. アップグレードする MSK クラスターを選択します。

1. **Properties** タブで **[Apache Kafka バージョン]** セクションで **Upgrade** を選択します。

1. **Apache Kafka バージョン** セクションで、次の操作を行います。

   1. *Apache Kafka バージョンの選択*ドロップダウンリストで、アップグレードするターゲットバージョンを選択します。例えば、[**3.9.x**] を選択します。

   1. (オプション) **バージョンの互換性を表示**を選択して、クラスターの現在のバージョンと利用可能なアップグレードバージョンとの互換性を検証します。次に、**選択**を選択して続行します。
**注記**  
Amazon MSK は、ほとんどの Apache Kafka バージョンへのインプレースアップグレードをサポートしています。ただし、ZooKeeper ベースの Kafka バージョンから KRaft ベースのバージョンにアップグレードする場合は、新しいクラスターを作成する必要があります。次に、データを新しいクラスターにコピーし、クライアントを新しいクラスターに切り替えます。

   1. (オプション) **クラスター設定の更新**チェックボックスを選択して、新しいバージョンと互換性のある設定更新を適用します。これにより、新しいバージョンの機能と改善が可能になります。

      既存のカスタム設定を維持する必要がある場合は、このステップをスキップできます。
**注記**  
サーバー側のアップグレードでは、クライアントアプリケーションは自動的に更新されません。
クラスターの安定性を維持するために、バージョンダウングレードはサポートされていません。

   1. **アップグレード** を選択して、プロセスを開始します。

**を使用して Apache Kafka バージョンをアップグレードする AWS CLI**

1. *ClusterArn*をクラスターの作成時に取得したAmazon リソースネーム (ARN) に置き換えて、次のコマンドを実行します。クラスターの ARN がない場合は、すべてのクラスターを一覧表示することで見つけられます。詳細については、「[Amazon MSK クラスターを一覧表示する](msk-list-clusters.md)」を参照してください。

   ```
   aws kafka get-compatible-kafka-versions --cluster-arn ClusterArn
   ```

   このコマンドの出力には、クラスターをアップグレードできる Apache Kafka バージョンのリストが含まれています。次の例のようになります。

   ```
   {
       "CompatibleKafkaVersions": [
           {
               "SourceVersion": "2.2.1",
               "TargetVersions": [
                   "2.3.1",
                   "2.4.1",
                   "2.4.1.1",
                   "2.5.1"
               ]
           }
       ]
   }
   ```

1. *ClusterArn*をクラスターの作成時に取得したAmazon リソースネーム (ARN) に置き換えて、次のコマンドを実行します。クラスターの ARN がない場合は、すべてのクラスターを一覧表示することで見つけられます。詳細については、「[Amazon MSK クラスターを一覧表示する](msk-list-clusters.md)」を参照してください。

   *Current-Cluster-Version* を、クラスターの現在のバージョンに置き換えます。*TargetVersion* では、前のコマンド出力から任意のターゲットバージョンを指定できます。
**重要**  
クラスターのバージョンは単純な整数ではありません。クラスターの最新バージョンを検索するには、[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-kafka-version --cluster-arn ClusterArn --current-version Current-Cluster-Version --target-kafka-version TargetVersion
   ```

   前のコマンドの出力は以下の 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-kafka-version` オペレーションの結果を取得するには、*ClusterOperationArn*を `update-cluster-kafka-version` コマンドの出力で取得した ARN に置き換えて、次のコマンドを実行します。

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

   この `describe-cluster-operation` コマンドの出力は、次の JSON の例のようになります。

   ```
   {
       "ClusterOperationInfo": {
           "ClientRequestId": "62cd41d2-1206-4ebf-85a8-dbb2ba0fe259",
           "ClusterArn": "arn:aws:kafka:us-east-1:012345678012:cluster/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2",
           "CreationTime": "2021-03-11T20:34:59.648000+00:00",
           "OperationArn": "arn:aws:kafka:us-east-1:012345678012:cluster-operation/exampleClusterName/abcdefab-1234-abcd-5678-cdef0123ab01-2/0123abcd-abcd-4f7f-1234-9876543210ef",
           "OperationState": "UPDATE_IN_PROGRESS",
           "OperationSteps": [
               {
                   "StepInfo": {
                       "StepStatus": "IN_PROGRESS"
                   },
                   "StepName": "INITIALIZE_UPDATE"
               },
               {
                   "StepInfo": {
                       "StepStatus": "PENDING"
                   },
                   "StepName": "UPDATE_APACHE_KAFKA_BINARIES"
               },
               {
                   "StepInfo": {
                       "StepStatus": "PENDING"
                   },
                   "StepName": "FINALIZE_UPDATE"
               }
           ],
           "OperationType": "UPDATE_CLUSTER_KAFKA_VERSION",
           "SourceClusterInfo": {
               "KafkaVersion": "2.4.1"
           },
           "TargetClusterInfo": {
               "KafkaVersion": "2.6.1"
           }
       }
   }
   ```

   `OperationState` の値が `UPDATE_IN_PROGRESS` の場合は、しばらく待ってから再度 `describe-cluster-operation` コマンドを実行します。オペレーションが完了すると、`OperationState` の値は `UPDATE_COMPLETE` になります。Amazon MSK がオペレーションを完了するのに必要な時間はさまざまであるため、オペレーションが完了するまで繰り返しチェックする必要がある場合があります。

**API を使用して Apache Kafka バージョンを更アップグレードする**

1. [GetCompatibleKafkaVersions](https://docs.aws.amazon.com//msk/1.0/apireference/compatible-kafka-versions.html#GetCompatibleKafkaVersions) オペレーションを呼び出して、クラスターをアップグレードできる Apache Kafka バージョンのリストを取得します。

1. [UpdateClusterKafkaVersion](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn-version.html#UpdateClusterKafkaVersion) オペレーションを呼び出して、クラスターを互換性のある Apache Kafka バージョンのいずれかにアップグレードします。

# バージョンアップグレードのベストプラクティス
<a name="version-upgrades-best-practices"></a>

Kafka バージョンアップグレードプロセスの一環として実行されるローリング更新中にクライアントの継続性を確保するために、クライアントと Apache Kafka トピックの設定について次のように確認します。
+ トピックのレプリケーション係数 (RF) の最小値は、2 つの AZ クラスターの場合は `2` に、3 つの AZ クラスターの場合は `3` に設定します。RF 値が `2` の場合、パッチ適用中にオフラインパーティションが発生する可能性があります。
+ 最小同期レプリカ (minISR) を、レプリケーション係数 (RF) `miniISR = (RF) - 1` より 1 小さい最大値に設定します。これにより、パーティションレプリカセットが 1 つのレプリカがオフラインまたは過小レプリケーションされることを許容できます。
+ 複数のブローカー接続文字列を使用するようにクライアントを設定します。クライアントの接続文字列に複数のブローカーが含まれていると、クライアント I/O をサポートする特定のブローカーにパッチが適用され始めた場合にフェイルオーバーができるようになります。複数のブローカーを含む接続文字列を取得する方法については、「[Amazon MSK クラスターのブートストラップブローカーを取得する](https://docs.aws.amazon.com//msk/latest/developerguide/msk-get-bootstrap-brokers.html)」を参照してください。
+ 新しいバージョンで使用できる機能を活用するために、接続クライアントを推奨バージョン以降にアップグレードすることをお勧めします。クライアントのアップグレードは、MSK クラスターの Kafka バージョンのサポート終了 (EOL) 日に左右されないため、EOL 日までに完了する必要はありません。Apache Kafka は、[双方向のクライアント互換性ポリシー](https://kafka.apache.org/protocol#protocol_compatibility)を提供しているため、古いクライアントが新しいクラスターで動作することも、その逆も可能になります。
+ バージョン 3.x.x を使用する Kafka クライアントには、デフォルトの `acks=all` と `enable.idempotence=true` が付属している可能性があります。`acks=all` は、以前のデフォルトの `acks=1` とは異なり、すべての同期レプリカが生成要求を承認することを保証することで追加の耐久性を提供します。同様に、`enable.idempotence` のデフォルトは以前は `false` でした。`enable.idempotence=true` をデフォルトに変更すると、重複したメッセージが発生する可能性が低くなります。これらの変更はベストプラクティス設定と見なされ、通常のパフォーマンスパラメータの範囲内でわずかな追加遅延が発生する可能性があります。
+ 新しい MSK クラスターを作成するときは、推奨される Kafka バージョンを使用します。推奨される Kafka バージョンを使用すると、最新の Kafka 機能と MSK 機能を活用できます。