Anteriormente, o Amazon Managed Service for Apache Flink (Amazon MSF) era conhecido como Amazon Kinesis Data Analytics for Apache Flink.
Habilite reversões de sistema para seu aplicativo Managed Service for Apache Flink
Com a capacidade de reversão do sistema, você pode obter maior disponibilidade do seu aplicativo Apache Flink em execução no Amazon Managed Service for Apache Flink. A opção por essa configuração permite que o serviço reverta automaticamente o aplicativo para a versão em execução anterior quando uma ação, como UpdateApplication ou autoscaling, causa falha no código ou na configuração.
nota
Para usar o recurso de reversão do sistema, você precisa aderir à atualização do aplicativo. Os aplicativos existentes não usarão automaticamente a reversão do sistema por padrão.
Como funciona
Quando você inicia a operação de um aplicativo, como uma atualização ou escalamento, o Amazon Managed Service for Apache Flink primeiro tenta executá-la. Se ele detectar problemas que impeçam a operação de ser bem-sucedida, como falhas de código ou permissões insuficientes, o serviço iniciará automaticamente uma operação RollbackApplication.
A reversão tenta restaurar o aplicativo para a versão anterior que estava sendo executada com êxito, junto com o estado do aplicativo associado. Se a reversão for feita com êxito, o aplicativo continuará processando dados com o mínimo de tempo de inatividade, usando a versão anterior. Se a reversão automática também falhar, o Amazon Managed Service for Apache Flink fará a transição do aplicativo para o status READY, para que você possa corrigir o erro e repetir a operação.
Você deve aderir ao uso de reversões automáticas do sistema. Você pode habilitar isso usando o console ou a API para todas as operações em seu aplicativo a partir de agora.
O exemplo de solicitação a seguir para a ação UpdateApplication habilita reversões de sistema para um aplicativo:
{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationSystemRollbackConfigurationUpdate": { "RollbackEnabledUpdate": "true" } } }
Analise cenários comuns para reversão automática do sistema
Os cenários a seguir ilustram onde as reversões automáticas do sistema são benéficas:
Atualizações do aplicativo: se você atualizar seu aplicativo com um novo código que contém falhas ao inicializar a tarefa do Flink por meio do método principal, a reversão automática permite que a versão anterior funcional seja restaurada. Outros cenários de atualização em que as reversões do sistema são úteis incluem:
-
Se seu aplicativo for atualizado para ser executado com um paralelismo maior que maxParallelism.
-
Se seu aplicativo for atualizado para ser executado com sub-redes incorretas para um aplicativo na VPC, isso resultará em uma falha durante o startup da tarefa do Flink.
-
Atualizações da versão do Flink: quando você atualiza para uma nova versão do Apache Flink e o aplicativo atualizado encontra um problema de compatibilidade de snapshots, a reversão do sistema permite que você reverta automaticamente para a versão anterior do Flink.
AutoScaling: quando o aplicativo aumenta a escala verticalmente, mas enfrenta problemas de restauração a partir de um ponto de salvamento, devido à incompatibilidade do operador entre o snapshot e o gráfico de tarefas do Flink.
Use APIs de operação para reversões do sistema
Para oferecer melhor visibilidade, o Amazon Managed Service for Apache Flink tem duas APIs relacionadas às operações do aplicativo que podem ajudá-lo a rastrear falhas e reversões do sistema relacionadas.
ListApplicationOperations
Essa API lista todas as operações realizadas no aplicativo, incluindo UpdateApplication, Maintenance, RollbackApplication e outras em ordem cronológica inversa. O exemplo a seguir solicita que a ação ListApplicationOperations liste as primeiras 10 operações do aplicativo:
{ "ApplicationName": "MyApplication", "Limit": 10 }
O seguinte exemplo de solicitação de ListApplicationOperations ajuda a filtrar a lista para atualizações anteriores no aplicativo:
{ "ApplicationName": "MyApplication", "operation": "UpdateApplication" }
DescribeApplicationOperation
Essa API fornece informações detalhadas sobre uma operação específica listada por ListApplicationOperations, incluindo o motivo da falha, se aplicável. O exemplo de solicitação a seguir para a ação DescribeApplicationOperation lista detalhes de uma operação específica do aplicativo:
{ "ApplicationName": "MyApplication", "OperationId": "xyzoperation" }
Para obter informações sobre a solução de problemas, consulte Práticas recomendadas de reversão do sistema.