

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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 Management Console**

1. [https://console.aws.amazon.com/msk/](https://console.aws.amazon.com/msk/)에서 Amazon MSK 콘솔을 엽니다.

1. 탐색 모음에서 MSK 클러스터를 생성한 리전을 선택합니다.

1. 업그레이드하려는 MSK 클러스터를 선택합니다.

1. **속성** 탭의 **Apache Kafka 버전** 섹션에서 **업그레이드**를 선택합니다.

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. 클러스터를 업그레이드할 수 있는 Apache Kafka 버전 목록을 가져오려면 [GetCompatibleKafkaVersions](https://docs.aws.amazon.com//msk/1.0/apireference/compatible-kafka-versions.html#GetCompatibleKafkaVersions) 작업을 호출합니다.

1. 호환되는 Apache Kafka 버전 중 하나에 클러스터를 업그레이드하려면 [UpdateClusterKafkaVersion](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn-version.html#UpdateClusterKafkaVersion) 작업을 호출합니다.

# 버전 업그레이드의 모범 사례
<a name="version-upgrades-best-practices"></a>

Kafka 버전 업그레이드 프로세스의 일부로 수행되는 롤링 업데이트 중에 클라이언트 연속성을 보장하려면 다음과 같은 클라이언트 및 Apache Kafka 주제의 구성을 검토합니다.
+ 주제 복제 계수(RF)를 2개의 AZ 클러스터의 경우 `2`의 최소값으로 설정하고 3개의 AZ 클러스터의 경우 `3`의 최소값으로 설정합니다. `2`의 RF 값은 패치 적용 중에 오프라인 파티션으로 이어질 수 있습니다.
+ 최소 동기화 내 복제본(minISR)을 `miniISR = (RF) - 1`인 Replication Factor(RF)보다 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 기능을 활용할 수 있습니다.