Quando um EAS service escala para dezenas ou centenas de réplicas, uma atualização contínua completa apresenta um risco de implantação significativo, pois não oferece controle de lote ou mecanismo de pausa. O recurso de plano de atualização resolve isso ao oferecer suporte a dois modos de atualização — loteamento manual (Partition) e loteamento automático (Batch Update) —, permitindo que você controle o ritmo de implantações em grande escala e faça um rollback rápido caso surjam problemas.
Principais conceitos
-
Múltiplos modos de atualização: O sistema oferece suporte a dois modos — loteamento manual (Partition) e loteamento 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
Lançamentos canário de services online críticos
Atualizações de rotina para services em grande escala
Controle total durante toda a atualização: Pause, faça rollback ou altere a estratégia de loteamento a qualquer momento durante a atualização. Exclua o plano para reverter para a 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 mostra o status em tempo real, o progresso, a contagem regressiva do lote e outras informações importantes.
Início rápido
O exemplo a seguir demonstra a criação de um plano de atualização e a conclusão de uma atualização de service usando loteamento manual em um service com 10 réplicas.
Pré-requisitos: ative o recurso de plano de atualização
O recurso de plano de atualização só pode ser ativado ao criar 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 de destino para abrir a página de detalhes do EAS service.
Clique na aba Auto Scalingg e, na seção Update Plan, clique em Create Update Plan.
No painel que desliza da 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 mostra 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 de acordo com o plano: atualiza 2 réplicas primeiro, 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 as métricas do seu negócio (latência, taxa de erro, etc.). Se nenhum problema for encontrado, modifique o plano e defina a contagem de réplicas de destino como 10. O sistema atualiza as 8 réplicas restantes até que a atualização seja concluída.
Se problemas forem encontrados, modifique o plano de atualização e defina a contagem de réplicas de destino como 0. Todas as réplicas atualizadas sofrerão rollback para a versão anterior.
Referência de status
O plano de atualização usa um modelo de status de dois níveis: o nível superior é a fase (phase), e o segundo nível é o estágio (stage), que existe apenas quando a fase é Active.
Not configured: Não existe nenhum plano de atualização. Atualizar o service aciona uma substituição completa.
Pending: Um plano foi criado e está aguardando uma atualização do service para ativá-lo.
-
Active: A atualização foi acionada e o sistema está substituindo as réplicas em lotes. Existem três estágios dentro de Active:
Current batch executing: O lote está em andamento; a contagem atualizada está se aproximando do alvo.
Current batch paused: Um usuário pausou a execução; o progresso está congelado.
Current batch completed: O alvo do lote foi alcançado. O sistema aguarda você avançar manualmente (loteamento manual) ou a contagem regressiva expirar (loteamento automático).
-
Completed: A rodada atual de atualizações foi concluída.
Atualizar o service novamente reaciona 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 | ||||
Crie um plano | ✓ | |||||
Modifique o plano | ✓ | ✓ | ✓ | ✓ | ✓ | |
Exclua o plano | ✓ | ✓ | ✓ | ✓ | ✓ | |
Pause | ✓ | |||||
Retome | ✓ | |||||
Atualize o service | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Notas de uso
Modificar um plano Active: Os novos parâmetros entram em vigor imediatamente. Se o plano estiver pausado no momento, a modificação o retoma automaticamente.
Modificar um plano Completed: O sistema salva a configuração, mas não aciona uma atualização automaticamente. Atualize o service novamente para aplicar o novo plano.
Excluir um plano Active: As réplicas restantes continuam a atualização usando a estratégia de substituição completa. Nenhum rollback ocorre.
Dimensionar enquanto existe um plano de atualização: Os parâmetros do plano permanecem inalterados e são aplicados com base na contagem real de réplicas no momento da execução.
Definir a contagem do primeiro lote como 0 no loteamento manual: Este é um valor válido. A atualização do service é acionada imediatamente, mas pausa no ponto inicial, aguardando você avançar manualmente.
Definir o tamanho do lote ≥ contagem total de réplicas no loteamento 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 de 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 |
Loteamento manual: número de réplicas a serem atualizadas no lote atual |
— |
|
|
Booleano |
Se deve pausar a atualização. Aplica-se a ambos os modos. |
false |
|
|
String de duração (por exemplo, |
Loteamento automático: tempo de espera entre a conclusão de um lote e o início do próximo |
— |
|
|
Número ou porcentagem |
Loteamento automático: número de réplicas a serem atualizadas por lote |
Igual a |
Exemplos de configuração
Loteamento manual: lançamento canário
{
"metadata": {
"instance": 10,
"rolling_strategy": {
"partition": 2,
"max_unavailable": 1
}
}
}
Total de 10 réplicas. As 2 primeiras são atualizadas; as 8 restantes permanecem na versão antiga até que você avance o plano.
Loteamento 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 para a versão anterior. Isso funciona tanto para os modos de loteamento manual quanto 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 o rollback mais rápido:
Mude o plano de atualização para loteamento manual e defina a contagem de réplicas de destino como 0. Todas as réplicas atualizadas sofrerão rollback para a versão anterior (V2).
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á foi concluída e todas as réplicas estão executando a nova versão (V3), não é mais possível fazer rollback pelo plano de atualização. Acesse a lista de versões do service e selecione uma versão específica para reverter.
P: Os parâmetros de loteamento manual e automático podem ser definidos ao mesmo tempo?
Não. O parâmetro partition (loteamento manual) tem precedência. Quando partition é definido, o sistema ignora todos os parâmetros de loteamento automático.
P: Como pauso uma atualização em andamento?
Defina paused: true. Isso funciona tanto para o loteamento manual quanto para o automático.
P: O que acontece se eu não definir um tamanho de lote para o loteamento automático?
O sistema usa o valor de max_unavailable como o tamanho do lote.
P: O que acontece se eu não definir um intervalo de lote para o loteamento automático?
O tamanho do lote ainda se aplica, mas o sistema não avançará para o próximo lote automaticamente. Isso equivale ao loteamento manual e exige que você avance cada lote manualmente.