Durante releases, dimensionamentos e reinicializações, as instâncias de microsserviços ficam offline e voltam a ficar online. Sem proteção, novas instâncias recebem requisições antes da conclusão da inicialização, e instâncias em processo de encerramento perdem requisições em andamento. O Microservices Engine (MSE) evita a perda de tráfego nessas transições por meio de registro de serviço atrasado, aumento gradual de tráfego baseado em warmup e notificação proativa aos consumidores. Configure esses comportamentos adicionando rótulos ao YAML do seu Deployment no Kubernetes.
A alteração desses rótulos aciona uma reinicialização imediata do pod. Aplique as mudanças durante uma janela de manutenção ou utilize uma estratégia de atualização contínua para evitar interrupções no serviço.
Como funciona
A inicialização graceful controla como uma nova instância recebe tráfego:
Após o início da aplicação, o MSE aguarda o período de atraso (
delayTime) antes de registrar o serviço no Microservices Registry. Isso concede tempo à aplicação para concluir tarefas de inicialização, como carregar configurações, estabelecer conexões com banco de dados ou criar caches.Depois do registro, o MSE aumenta gradualmente o tráfego para a instância durante o período de warmup (
warmupTime), em vez de enviar todo o tráfego imediatamente. Essa abordagem permite que caches, pools de conexão e a compilação JIT se aqueçam sob uma carga crescente.
App starts --> [delayTime] --> Service registered --> [warmupTime] --> Full traffic
wait before registry sees the gradual
registering instance ramp-up
O encerramento graceful protege o tráfego quando uma instância é finalizada:
Quando a notificação de encerramento está ativada (
notice), o MSE notifica proativamente os consumidores para pararem de enviar novas requisições à instância em encerramento.
Parâmetros
Adicione os seguintes rótulos em spec.template.metadata.labels no YAML do seu Deployment. Todos os valores devem ser strings entre aspas.
|
Parâmetro |
Descrição |
Padrão |
|
|
Ativa a inicialização graceful. Valores válidos: |
|
|
|
Atraso de registro em segundos. O MSE aguarda esse período após o início da aplicação antes de registrar o serviço no Microservices Registry. |
|
|
|
Duração do warmup em segundos. Após o registro do serviço, o MSE aumenta gradualmente o tráfego para a instância ao longo desse período. |
|
|
|
Ativa a notificação de encerramento. Quando definido como |
|
Configure a inicialização e o encerramento graceful
Pré-requisitos
Antes de começar, verifique se você tem:
Uma aplicação de microsserviço implantada em um cluster do Container Service for Kubernetes (ACK)
O MSE Microservices Governance ativado para a aplicação. Para mais informações, consulte Ativar o Microservices Governance para aplicações de microsserviço em um cluster ACK
Adicionar rótulos do MSE ao seu Deployment
Abra o YAML do Deployment da sua aplicação na página Workloads.
-
Inclua os rótulos do MSE em
spec.template.metadata.labelse substitua os placeholders abaixo pelos seus valores:Placeholder
Descrição
<your-app-name>Nome da sua aplicação
<your-image>Imagem do seu contêiner
apiVersion: apps/v1 kind: Deployment metadata: name: <your-app-name> spec: replicas: 3 selector: matchLabels: app: <your-app-name> template: metadata: labels: app: <your-app-name> # Graceful start and shutdown configuration mse.lossless.enable: 'true' mse.lossless.delayTime: '30' mse.lossless.warmupTime: '60' mse.lossless.notice: 'false' spec: containers: - name: <your-app-name> image: <your-image> Salve e aplique o YAML. A aplicação reinicia com a nova configuração.
Se você não configurar esses parâmetros no YAML, o sistema usará automaticamente os valores padrão listados na tabela de parâmetros. Caso também modifique a regra no console do MSE, a configuração do YAML terá precedência. Após a próxima reinicialização, os rótulos do YAML substituirão as definições do console.
Verifique a configuração
Faça login no console do MSE e selecione uma região.
No painel de navegação à esquerda, escolha Microservices Governance > Application Governance.
Na página Application list, clique em no cartão de recurso da aplicação desejada.
No painel de navegação à esquerda, clique em Traffic management e, em seguida, clique em na aba Graceful Start/Shutdown.
Confirme se os valores dos parâmetros correspondem à sua configuração YAML. Durante o próximo evento de inicialização ou encerramento, os eventos e o gráfico de tendência de QPS nesta aba refletirão o comportamento de warmup e notificação configurados.