View a markdown version of this page

Reverter para a versão anterior da KCL - Amazon DynamoDB

Reverter para a versão anterior da KCL

Este tópico explica como reverter o aplicativo de consumidor de KCL 3.5.x+ para KCL 1.x. O processo de reversão depende da fase de migração em que o aplicativo está atualmente.

Reverter da Fase 1 para a KCL 1.x

Se o aplicativo estiver na Fase 1 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1), você poderá reverter para a KCL 1.x reimplantando seu código anterior. A Fase 1 é compatível com versões anteriores da KCL 1.x e não cria nenhuma entrada específica de migração na tabela de concessão. Nenhuma ferramenta de migração é necessária. Para reverter da Fase 1, reimplante o código com sua versão da KCL 1.x para todos os operadores.

Importante

A Fase 2 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X) é uma alteração significativa para a reversão. Depois que o aplicativo entra na Fase 2, as entradas sem concessão (WORKER_METRIC_STATS e Migration3.0) são gravadas na tabela de concessão e não são compatíveis com versões anteriores da KCL 1.x. Isso impede permanentemente uma reversão direta para a KCL 1.x. É recomendável manter o aplicativo na Fase 1 por um período prolongado para validar a estabilidade antes de prosseguir para a Fase 2.

Reverter da Fase 2 para a Fase 1

Se o aplicativo estiver na Fase 2 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X), você deverá usar a Ferramenta de Migração da KCL no site do GitHub para reverter para a Fase 1 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1). Este é um processo em duas etapas:

  1. Execute a Ferramenta de Migração da KCL no site do GitHub.

  2. Reimplante o código com a configuração da Fase 1 (opcional).

Importante

Você não pode reverter dois níveis (da Fase 2 para a Fase 1 e depois para a KCL 1.x). A Ferramenta de Migração da KCL lida apenas com a reversão da Fase 2 para a Fase 1. A ferramenta não exclui entradas que não sejam de concessão da tabela de concessão. Essas entradas não são compatíveis com versões anteriores da KCL 1.x, e é por isso que uma reversão de dois níveis da Fase 2 diretamente para a KCL 1.x não é possível.

Etapa 1: executar a Ferramenta de Migração da KCL

Quando precisar reverter da Fase 2 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X) para a Fase 1 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1), execute a Ferramenta de Migração da KCL. A ferramenta realiza as seguintes tarefas:

  • Ela remove o Índice Secundário Global (LeaseOwnerToLeaseKeyIndex) na tabela de concessão no DynamoDB. Esse índice é criado pela KCL 3.5.x+, mas não é necessário quando você reverte para a Fase 1.

  • Ela faz com que todos os operadores funcionem em um modo compatível com a KCL 1.x e comecem a usar o algoritmo de balanceamento de carga usado nas versões anteriores da KCL. Se você tiver problemas com o novo algoritmo de balanceamento de carga na KCL 3.5.x+, isso mitigará o problema imediatamente.

Importante

A entrada de estado do coordenador (Migration3.0) na tabela de concessão não deve ser excluída durante o processo de migração, reversão e avanço.

nota

Todos os operadores no aplicativo de consumidor devem usar o mesmo algoritmo de balanceamento de carga em um determinado momento. A Ferramenta de Migração da KCL garante que todos os operadores no aplicativo de consumidor da KCL 3.5.x+ mudem para o modo compatível com a KCL 1.x para que todos os operadores executem o mesmo algoritmo de balanceamento de carga durante a reversão da implantação para a Fase 1.

Você pode baixar a Ferramenta de Migração da KCL no diretório de scripts do repositório da KCL no GitHub. Execute o script em qualquer um dos operadores ou em qualquer host que tenha as permissões necessárias para gravar e atualizar a tabela de concessão. As permissões do IAM apropriadas devem estar configuradas para aplicações de consumidor da KCL. É necessário executar o script uma única vez para cada aplicação da KCL. Execute a Ferramenta de Migração da KCL com o seguinte comando:

python3 ./KclMigrationTool.py --region region --mode rollback [--application_name applicationName] [--lease_table_name leaseTableName]

Parâmetros

--region

Substitua region pela Região da AWS.

--application_name

Esse parâmetro será obrigatório se você estiver usando o nome padrão para a tabela de concessão. Se você tiver especificado um nome personalizado para a tabela de concessão, poderá omitir esse parâmetro. Substitua applicationName pelo nome da aplicação da KCL. A ferramenta usa esse nome para obter o nome de tabela padrão se um nome personalizado não for fornecido.

--lease_table_name

Esse parâmetro é necessário quando você define um nome personalizado para a tabela de concessões na configuração da KCL. Se você estiver usando o nome padrão da tabela, poderá omitir esse parâmetro. Substitua leaseTableName pelo nome da tabela personalizada que você especificou para a tabela de concessões.

Etapa 2: reimplantar o código com a configuração da Fase 1 (opcional)

Depois de executar a Ferramenta de Migração da KCL para uma reversão da Fase 2 para a Fase 1, você verá uma destas mensagens:

Mensagem 1

“Rollback completed. O aplicativo estava executando a funcionalidade da Fase 2 (compatível com 2x). Volte para a Fase 1 implantando o aplicativo KCL 3.5.x com a configuração da Fase 1."

Ação necessária: os operadores estavam sendo executados no modo compatível com KCL 1.x (a Fase 2 ainda não havia feito a transição automática para o balanceamento de carga 3.x completo). Reimplante o aplicativo KCL 3.5.x+ com a configuração da Fase 1 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1) para os operadores.

Mensagem 2

“Rollback completed. O aplicativo da KCL estava executando a funcionalidade da Fase 2 (3x) e foi revertido para o modo Fase 2 (compatível com 2x). Se você não observar a mitigação após um curto período, volte para a Fase 1 implantando o aplicativo KCL 3.5.x com a configuração da Fase 1."

Ação necessária: os operadores fizeram a transição automática para o balanceamento de carga completo da KCL 3.x e a Ferramenta de Migração da KCL os reverteu para o modo compatível com a KCL 1.x. Se o problema for resolvido, você não precisa reimplantar. Se o problema persistir, reimplante o aplicativo KCL 3.5.x+ com a configuração da Fase 1 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1) para os operadores.