

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Suporte à versão do Amazon MSK
<a name="version-support"></a>

Este tópico descreve a [Política de suporte à versão do Amazon MSK](#version-support-policy) e o procedimento para [Atualizar a versão do Apache Kafka](version-upgrades.md). Se você estiver atualizando sua versão do Kafka, siga as práticas recomendadas descritas em [Práticas recomendadas para upgrades de versão](version-upgrades-best-practices.md).

**Topics**
+ [Política de suporte à versão do Amazon MSK](#version-support-policy)
+ [Atualizar a versão do Apache Kafka](version-upgrades.md)
+ [Práticas recomendadas para upgrades de versão](version-upgrades-best-practices.md)

## Política de suporte à versão do Amazon MSK
<a name="version-support-policy"></a>

Esta seção descreve a política de suporte para as versões do Kafka compatíveis com o Amazon MSK.
+ Todas as versões do Kafka são compatíveis até atingirem a data do fim do suporte. Para obter detalhes sobre as datas de fim do suporte, consulte [Versões compatíveis do Apache Kafka](supported-kafka-versions.md). Atualize o cluster do MSK para a versão recomendada do Kafka ou superior antes da data do fim do suporte. Para obter detalhes sobre como atualizar sua versão do Apache Kafka, consulte [Atualizar a versão do Apache Kafka](version-upgrades.md). Um cluster usando uma versão do Kafka após a data do fim do suporte é atualizado automaticamente para a versão recomendada do Kafka. As atualizações automáticas podem ocorrer a qualquer momento após a data de fim do suporte. Você não receberá nenhuma notificação antes da atualização.
+ O MSK descontinuará gradualmente o suporte para clusters recém-criados que usam versões do Kafka com datas de fim de suporte publicadas.

# Atualizar a versão do Apache Kafka
<a name="version-upgrades"></a>

É possível atualizar um cluster do MSK existente para uma versão mais recente do Apache Kafka. Antes de atualizar a versão do Kafka do seu cluster, verifique se a versão do software no lado do cliente é compatível com os recursos da nova versão do Kafka.

Para obter informações sobre como tornar um cluster altamente disponível durante uma atualização, consulte [Criar clusters altamente disponíveis](bestpractices.md#ensure-high-availability).

**Atualize a versão do Apache Kafka usando o Console de gerenciamento da AWS**

1. Abra o console do Amazon MSK em [https://console.aws.amazon.com/msk/](https://console.aws.amazon.com/msk/).

1. Na barra de navegação, escolha a região na qual você criou seu cluster do MSK.

1. Selecione o cluster do MSK que deseja atualizar.

1. Na guia **Propriedades**, escolha **Atualizar** na seção **Versão do Apache Kafka**.

1. Na seção **Versão do Apache Kafka**, faça o seguinte:

   1. Na lista suspensa *Escolher versão do Apache Kafka*, escolha a versão de destino que você deseja atualizar. Para este exemplo, selecione **3.9.x**.

   1. (Opcional) Escolha **Exibir compatibilidade de versão** para verificar a compatibilidade entre a versão atual do cluster e as versões de atualização disponíveis. Em seguida, selecione **Escolher** para continuar.
**nota**  
O Amazon MSK oferece suporte a atualizações no local para a maioria das versões do Apache Kafka. No entanto, ao fazer o upgrade de uma versão ZooKeeper baseada no Kafka para uma versão KRaft baseada, você deve criar um novo cluster. Em seguida, copie seus dados para o novo cluster e troque os clientes para o novo cluster.

   1. (Opcional) Marque a caixa de seleção **Atualizar configuração do cluster** para aplicar as atualizações de configuração compatíveis com a nova versão. Isso habilita os recursos e as melhorias da nova versão.

      É possível ignorar esta etapa se for necessário manter suas configurações personalizadas existentes.
**nota**  
As atualizações do lado do servidor não atualizam automaticamente as aplicações de clientes.
Para manter a estabilidade do cluster, não há suporte a downgrades de versão.

   1. Escolha **Atualizar** para iniciar o processo.

**Atualize a versão do Apache Kafka usando o AWS CLI**

1. Execute o comando a seguir, substituindo *ClusterArn* pelo nome do recurso da Amazon (ARN) que você obteve quando criou o cluster. Se você não tiver o ARN do cluster, poderá encontrá-lo listando todos os clusters. Para obter mais informações, consulte [Listar clusters do Amazon MSK](msk-list-clusters.md).

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

   A saída desse comando inclui uma lista das versões do Apache Kafka para as quais você pode atualizar o cluster. Ela se parece com o exemplo a seguir.

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

1. Execute o comando a seguir, substituindo *ClusterArn* pelo nome do recurso da Amazon (ARN) que você obteve quando criou o cluster. Se você não tiver o ARN do cluster, poderá encontrá-lo listando todos os clusters. Para obter mais informações, consulte [Listar clusters do Amazon MSK](msk-list-clusters.md).

   Substitua *Current-Cluster-Version* pela versão atual do cluster. Pois *TargetVersion* você pode especificar qualquer uma das versões de destino a partir da saída do comando anterior.
**Importante**  
As versões de cluster não são inteiros simples. Para encontrar a versão atual do cluster, use a [DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)operação ou o comando [AWS CLI describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster.html). Uma versão de exemplo é `KTVPDKIKX0DER`.

   ```
   aws kafka update-cluster-kafka-version --cluster-arn ClusterArn --current-version Current-Cluster-Version --target-kafka-version TargetVersion
   ```

   A saída do comando anterior é semelhante ao JSON a seguir.

   ```
   {
       
       "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. Para obter o resultado da `update-cluster-kafka-version` operação, execute o comando a seguir, *ClusterOperationArn* substituindo-o pelo ARN obtido na saída do `update-cluster-kafka-version` comando.

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

   A saída desse comando `describe-cluster-operation` é semelhante ao seguinte JSON de exemplo.

   ```
   {
       "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"
           }
       }
   }
   ```

   Se `OperationState` tiver o valor `UPDATE_IN_PROGRESS`, aguarde um pouco e execute o comando `describe-cluster-operation` novamente. Quando a operação for concluída, o valor de `OperationState` será transformado em `UPDATE_COMPLETE`. Como o tempo necessário para que o Amazon MSK conclua a operação varia, talvez seja necessário verificar repetidamente até que a operação seja concluída. 

**Atualizar a versão do Apache Kafka usando a API**

1. Invoque a [GetCompatibleKafkaVersions](https://docs.aws.amazon.com//msk/1.0/apireference/compatible-kafka-versions.html#GetCompatibleKafkaVersions)operação para obter uma lista das versões do Apache Kafka para as quais você pode atualizar o cluster.

1. Invoque a [UpdateClusterKafkaVersion](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn-version.html#UpdateClusterKafkaVersion)operação para atualizar o cluster para uma das versões compatíveis do Apache Kafka.

# Práticas recomendadas para upgrades de versão
<a name="version-upgrades-best-practices"></a>

Para garantir a continuidade do cliente durante a atualização contínua que é realizada como parte do processo de atualização da versão do Kafka, revise a configuração dos clientes e os tópicos do Apache Kafka da seguinte forma:
+ Defina o fator de replicação (RF) do tópico para um valor mínimo de `2` para clusters de duas AZs e um valor mínimo de `3` para clusters de três AZs. Um valor de RF de `2` pode levar a partições offline durante a aplicação de patches.
+ Defina o mínimo de réplicas sincronizadas (minISR) com um valor máximo de 1 a menos do que seu Fator de Replicação (RF), que é `miniISR = (RF) - 1`. Isso garante que o conjunto de réplicas de partições possa tolerar que uma réplica fique offline ou seja sub-replicada.
+ Configure os clientes para usar várias strings de conexão de agentes. Ter vários corretores na cadeia de conexão de um cliente permite o failover se um corretor específico que dá suporte ao cliente I/O começar a ser corrigido. Para obter informações sobre como obter uma string de conexão com vários agentes, consulte [Obter os agentes de bootstrap para um cluster do Amazon MSK](https://docs.aws.amazon.com//msk/latest/developerguide/msk-get-bootstrap-brokers.html).
+ Recomendamos que você atualize os clientes de conexão para a versão recomendada ou superior para se beneficiar dos recursos disponíveis na nova versão. As atualizações do cliente não estão sujeitas às datas de fim da vida útil (EOL) da versão Kafka do cluster do MSK e não precisam ser concluídas até a data de EOL. O Apache Kafka fornece uma [política bidirecional de compatibilidade de clientes](https://kafka.apache.org/protocol#protocol_compatibility) que permite que clientes mais antigos trabalhem com clusters mais novos, e vice-versa.
+ Os clientes Kafka que usam as versões 3.x.x provavelmente virão com os seguintes padrões: `acks=all` e `enable.idempotence=true`. `acks=all` é diferente do padrão anterior de `acks=1` e fornece durabilidade extra ao garantir que todas as réplicas sincronizadas reconheçam a solicitação de produção. Da mesma forma, o padrão para `enable.idempotence` era anteriormente `false`. A alteração para `enable.idempotence=true` como o padrão reduz a probabilidade de mensagens duplicadas. Essas alterações são consideradas configurações de práticas recomendadas e podem introduzir uma pequena quantidade de latência adicional que está dentro dos parâmetros normais de performance.
+ Use a versão recomendada do Kafka ao criar clusters do MSK. Usar a versão recomendada do Kafka permite que você se beneficie dos recursos mais recentes do Kafka e do MSK.