Quando um service EAS escala para dezenas ou centenas de réplicas, uma atualização contínua completa apresenta riscos significativos de implantação, pois não oferece controle de lotes nem mecanismo de pausa. O recurso de plano de atualização resolve essa questão ao oferecer suporte a dois modos: lote manual (Partition) e lote automático (Batch Update). Assim, você controla o ritmo de implantações em grande escala e reverte rapidamente caso surjam problemas.
Conceitos principais
-
Múltiplos modos de atualização: Há suporte a dois modos — lote manual (Partition) e lote automático (Batch Update).
Característica
Manual Batching (Partition)
Auto-Batching(Batch Update)
Controle
Totalmente manual; você avança cada lote
O sistema avança os lotes automaticamente após a configuração
Sobrecarga operacional
Maior
Menor
Flexibilidade
Máxima
Moderada
Mais indicado para
Canary releases de services online críticos
Atualizações rotineiras de services em grande escala
Controle total durante toda a atualização: Pause, reverta ou altere a estratégia de lotes a qualquer momento. Exclua o plano para retornar à estratégia padrão de substituição completa.
Visibilidade do status em tempo real: A seção Update Plan na aba Auto Scaling da página de detalhes do service exibe status em tempo real, progresso, contagem regressiva do lote e outras informações essenciais.
Início rápido
O exemplo a seguir demonstra como criar um plano de atualização e concluir uma atualização de service usando lote manual em um service com 10 réplicas.
Pré-requisitos: ative o recurso de plano de atualização
Ative o recurso de plano de atualização apenas durante a criação de um novo service. Não é possível ativá-lo atualizando um service existente.
Ao criar um service, adicione "eas.aliyun.com/enable-rollout": "true" ao campo features da configuração JSON. Sem essa definição, o recurso de plano de atualização fica indisponível. Exemplo:
{
"metadata": {
"instance": 10
},
"features": {
"eas.aliyun.com/enable-rollout": "true"
}
}
Etapa 1: Crie um plano de atualização
Clique no service desejado para abrir a página de detalhes do service EAS.
Clique na aba Auto Scaling e, na seção Update Plan, clique em Create Update Plan.
No painel que desliza pela direita, selecione Manual Batching e defina Update Instance Count como
2/10.Clique em OK.
Após a criação do plano de atualização, a seção Update Plan exibe o status como Pending. (Currently pending: The configuration is saved and will be executed as scheduled after you submit the change in 'Update Service'.)
Etapa 2: Acione a atualização
Clique em Update na página de detalhes do service e envie a nova configuração do service.
O sistema inicia a atualização conforme o plano: atualiza primeiro 2 réplicas, depois pausa e aguarda. A seção Update plan mostra o progresso atual (2/10).
Etapa 3: Verifique e avance para o próximo lote
Verifique suas métricas de negócio (latência, taxa de erro, etc.). Se não houver problemas, modifique o plano e defina a contagem alvo de réplicas como 10. O sistema atualiza as 8 réplicas restantes até concluir a atualização.
Se houver problemas, modifique o plano de atualização e defina a contagem alvo de réplicas como 0. Todas as réplicas atualizadas retornam à versão anterior via rollback.
Referência de status
O plano de atualização utiliza um modelo de status de dois níveis: o nível superior é a fase e o segundo nível é o estágio (existente apenas quando a fase é Active).
Not configured: Nenhum plano de atualização existe. Atualizar o service aciona uma substituição completa.
Pending: Um plano foi criado e aguarda uma atualização do service para ser ativado.
-
Active: A atualização foi acionada e o sistema está substituindo réplicas em lotes. Existem três estágios dentro de Active:
Current batch executing: O lote está em andamento; a contagem atualizada aproxima-se do alvo.
Current batch paused: Um usuário pausou a execução; o progresso está congelado.
Current batch completed: O alvo do lote foi atingido. O sistema aguarda seu avanço manual (lote manual) ou o fim da contagem regressiva (lote automático).
-
Completed: A rodada atual de atualizações terminou.
Atualizar o service novamente reativa o plano e altera o status para Active.
Modificar o plano altera o status para Pending e aguarda a próxima atualização do service.
A tabela a seguir mostra quais operações estão disponíveis em cada status:
Operação | Not configured | Pending | Active | Completed | ||
Current batch executing | Current batch paused | Current batch completed | ||||
Criar plano | ✓ | |||||
Modificar plano | ✓ | ✓ | ✓ | ✓ | ✓ | |
Excluir plano | ✓ | ✓ | ✓ | ✓ | ✓ | |
Pausar | ✓ | |||||
Retomar | ✓ | |||||
Atualizar service | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Notas de uso
Modificação de um plano Active: Novos parâmetros entram em vigor imediatamente. Se o plano estiver pausado, a modificação o retoma automaticamente.
Modificação de um plano Completed: A configuração é salva, mas não aciona uma atualização automaticamente. Atualize o service novamente para aplicar o novo plano.
Exclusão de um plano Active: As réplicas restantes continuam a atualização usando a estratégia de substituição completa. Nenhum rollback ocorre.
Dimensionamento com um plano de atualização existente: Os parâmetros do plano permanecem inalterados e aplicam-se com base na contagem real de réplicas no momento da execução.
Definição da contagem do primeiro lote como 0 no lote manual: Este é um valor válido. A atualização do service é acionada imediatamente, mas pausa no ponto inicial e aguarda seu avanço manual.
Definição do tamanho do lote ≥ contagem total de réplicas no lote automático: Todas as réplicas são atualizadas em um único lote, o que equivale a uma substituição completa.
Configuração JSON
Configure o plano de atualização definindo parâmetros no campo metadata.rolling_strategy da configuração JSON do service.
Estrutura completa da configuração
{
"metadata": {
"rolling_strategy": {
"max_surge": "25%",
"max_unavailable": "20%",
"partition": 5,
"paused": false,
"batch_update": {
"interval": "5m",
"batch_size": 2
}
}
}
}
Referência de campos
|
Campo |
Tipo |
Descrição |
Padrão |
|
|
Número ou porcentagem |
Máximo de réplicas extras permitidas durante uma atualização |
0 |
|
|
Número ou porcentagem |
Número máximo de réplicas que podem ficar indisponíveis durante uma atualização |
20% |
|
|
Número ou porcentagem |
Lote manual: número de réplicas a serem atualizadas no lote atual |
— |
|
|
Booleano |
Indica se a atualização deve ser pausada. Aplica-se a ambos os modos. |
false |
|
|
String de duração (por exemplo, |
Lote automático: tempo de espera entre a conclusão de um lote e o início do próximo |
— |
|
|
Número ou porcentagem |
Lote automático: número de réplicas a serem atualizadas por lote |
Igual a |
Exemplos de configuração
Lote manual: canary release
{
"metadata": {
"instance": 10,
"rolling_strategy": {
"partition": 2,
"max_unavailable": 1
}
}
}
Total de 10 réplicas. As primeiras 2 são atualizadas; as 8 restantes permanecem na versão antiga até que você avance o plano.
Lote automático: service em grande escala
{
"metadata": {
"instance": 100,
"rolling_strategy": {
"batch_update": {
"interval": "10m",
"batch_size": 5
}
}
}
}
Total de 100 réplicas. O sistema atualiza automaticamente 5 réplicas a cada 10 minutos.
Pausa de emergência
{
"metadata": {
"rolling_strategy": {
"paused": true
}
}
}
Rollback rápido
{
"metadata": {
"rolling_strategy": {
"partition": 0
}
}
}
Defina partition como 0 para reverter todas as réplicas atualizadas à versão anterior via rollback. Isso funciona tanto para o modo de lote manual quanto para o de lote automático.
Perguntas frequentes
P: Como faço um rollback rápido?
Se você descobrir um problema durante uma atualização (por exemplo, ao atualizar da V2 para a V3), use a seguinte abordagem para obter o rollback mais rápido:
Mude o plano de atualização para lote manual e defina a contagem alvo de réplicas como 0. Todas as réplicas atualizadas retornam à versão anterior (V2) via rollback.
Atualize a configuração do service (para a V4 ou qualquer versão estável).
Modifique o plano de atualização conforme necessário para continuar a implantação.
Se a atualização já tiver sido concluída e todas as réplicas estiverem executando a nova versão (V3), não será mais possível fazer rollback através do plano de atualização. Acesse a lista de versões do service e selecione uma versão específica para a qual deseja reverter.
P: Os parâmetros de lote manual e lote automático podem ser definidos simultaneamente?
Não. O parâmetro partition (lote manual) tem precedência. Quando partition está definido, o sistema ignora todos os parâmetros de lote automático.
P: Como pauso uma atualização em andamento?
Defina paused: true. Isso funciona tanto para lote manual quanto para lote automático.
P: O que acontece se eu não definir um tamanho de lote para o lote automático?
O sistema usa o valor de max_unavailable como tamanho do lote.
P: O que acontece se eu não definir um intervalo de lote para o lote automático?
O tamanho do lote ainda se aplica, mas o sistema não avança para o próximo lote automaticamente. Isso equivale ao lote manual e exige que você avance cada lote manualmente.