Utilize o recurso de aquecimento do ASM ao escalar horizontalmente sua aplicação, implantar uma nova versão ou prever um pico de tráfego. Esse mecanismo aumenta gradualmente o tráfego de requisições para as novas instâncias dentro de uma janela de tempo personalizada. O processo garante uma transição suave e reduz riscos de interrupção de service, timeouts de requisição e perda de dados causados por aumentos repentinos de tráfego. Assim, você mantém a estabilidade do desempenho e a alta disponibilidade durante atualizações e operações de dimensionamento da aplicação.
Pré-requisitos
Crie uma instância do ASM Enterprise Edition ou ASM Ultimate Edition com versão 1.14.3 ou posterior. Para mais informações, consulte Create an ASM instance.
Conecte-se a um cluster do Container Service for Kubernetes (ACK) usando kubectl. Para mais informações, consulte Obtain the kubeconfig file of a cluster and use kubectl to connect to the cluster.
Crie um gateway de entrada do ASM. Para mais informações, consulte Create an ingress gateway service.
Implante a aplicação de exemplo Bookinfo. Este tópico usa o service Reviews como exemplo. Para mais informações, consulte Deploy an application in a cluster associated with an ASM instance.
Informações básicas
Sem o recurso de aquecimento, os novos pods recebem imediatamente sua parcela total de tráfego, sem qualquer aumento gradual. Isso pode causar problemas em services que exigem um período de preparação para atingir o desempenho ideal, como aplicações baseadas em JVM que precisam realizar compilação Just-In-Time (JIT) ou preencher caches extensos. Essa carga repentina pode provocar timeouts de requisição, perda de dados e degradação da experiência do usuário. O recurso de aquecimento resolve essa questão ao introduzir o tráfego nas novas instâncias de forma progressiva, permitindo que elas se preparem para atender requisições com capacidade total.
Recurso de aquecimento
O recurso de aquecimento, também conhecido como slow start ou aumento progressivo de tráfego, permite configure um período de tempo para um service. Quando uma instância de service é iniciada, o cliente envia apenas uma fração da carga de requisições para ela e aumenta gradualmente a taxa de requisições ao longo da duração configurada. Após o término do período de aquecimento, a instância passa a receber sua parcela completa de tráfego.
No modo slow start, os novos pods ficam protegidos contra sobrecarga por picos repentinos de requisições. Isso permite que as novas instâncias passem pelo aquecimento durante o período de rampa antes de receberem sua cota integral de tráfego.
Esse recurso é especialmente útil para aplicações que dependem de cache e necessitam de um tempo de preparação para responder às requisições com desempenho máximo. No ASM, basta configure a seção trafficPolicy/loadBalancer da DestinationRule correspondente ao service. Observe os seguintes parâmetros:
loadBalancer: defina as configurações do balanceador de carga. Este recurso suporta apenas os balanceadores ROUND_ROBIN e LEAST_REQUEST.
warmupDurationSecs: especifica a duração do aquecimento para o service. Se definido, um endpoint de service recém-criado permanece no modo de aquecimento por esse período, contado a partir do momento de sua criação. Durante essa janela, o Istio aumenta o tráfego para o endpoint gradualmente, em vez de enviar imediatamente uma parcela proporcional de tráfego.
O recurso de aquecimento exige que o número de réplicas da aplicação na zona de disponibilidade atual não seja zero. Por exemplo:
Se o cluster do plano de dados tiver apenas uma zona de disponibilidade, Zona A, e houver atualmente uma réplica nessa zona, o recurso de aquecimento entrará em vigor quando uma segunda réplica for iniciada.
Caso o cluster do plano de dados possua duas zonas de disponibilidade, Zona A e Zona B, e a única réplica existente esteja na Zona A, iniciar uma segunda réplica na Zona B não acionará o recurso de aquecimento. Isso pode ocorrer porque alguns agendadores distribuem réplicas entre zonas de disponibilidade por padrão. Nesse cenário, o recurso de aquecimento só terá efeito quando uma terceira réplica for iniciada.
A seguir, visualize um exemplo de DestinationRule no formato YAML:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: mocka
spec:
host: mocka
trafficPolicy:
loadBalancer:
simple: ROUND_ROBIN
warmupDurationSecs: 100s
Etapa 1: Configure roteamento e acessar o gateway
Para demonstração, escale as réplicas do Deployment reviews-v3 para 0.
-
Defina os recursos de entrada.
-
Crie um arquivo chamado bookinfo-gateway.yaml com o seguinte conteúdo.
-
Execute o comando a seguir para implantar o gateway e o virtual service.
kubectl apply -f bookinfo-gateway.yaml
-
-
Crie a DestinationRule para o service Reviews.
-
Crie um arquivo chamado reviews.yaml com o seguinte conteúdo.
-
Execute o comando a seguir para implantar a DestinationRule.
kubectl apply -f reviews.yaml
-
-
Ative a topologia de malha e acesse continuamente o endereço do gateway de entrada.
Este tópico utiliza o comando
heypara enviar requisições de teste de carga durante 10s. Para obter informações sobre como baixe e instale ohey, consulte hey. Para mais detalhes sobre como ative e visualize a topologia de malha, consulte View the mesh topology of an application.hey -z 10s -q 100 -c 4 http://${INGRESS_GATEWAY_ADDRESS}/reviews/0A figura a seguir mostra um exemplo de topologia de chamadas:

Etapa 2: Observar a inicialização do pod
Faça login no console do ASM.
No painel de navegação à esquerda, escolha .
Na página Mesh Management, localize a instância do ASM que deseja configure. Clique em no nome da instância do ASM ou clique em Manage na coluna Actions.
-
No painel de navegação à esquerda, escolha .
Para instâncias do ASM anteriores à versão 1.17.2.35: Na página Monitoring metrics, clique em na aba Monitoring instrument, depois clique em na aba Cloud ASM Istio Service e selecione o service Reviews.
Para instâncias do ASM versão 1.17.2.35 e posteriores: Na página Monitoring metrics, clique em na aba Cloud ASM Istio Work load, selecione o workload
reviews-v3e defina Reporter comosource.
-
Envie requisições de teste de carga e observe os dados de monitoramento.
Com o recurso de aquecimento desativado, escale as réplicas do Deployment
reviews-v3de 0 para 1.-
Execute o comando a seguir para enviar requisições de teste de carga ao gateway de entrada.
Este exemplo envia requisições de teste de carga durante 120s.
hey -z 120s -q 100 -c 4 http://${INGRESS_GATEWAY_ADDRESS}/reviews/0 -
Observe os dados no painel de monitoramento do Prometheus.
Leva cerca de 45 segundos para que o pod
reviews-v3receba uma parcela equilibrada de requisições. O tempo real pode variar dependendo do seu ambiente de teste de carga.
Escale as réplicas do Deployment
reviews-v3de volta para 0.
Etapa 3: Ative o recurso de aquecimento
-
Atualize o arquivo reviews.yaml com o seguinte conteúdo.
Adicione o campo
warmupDurationSecse defina-o como120s, o que estabelece a duração do aquecimento em 120 segundos.apiVersion: networking.istio.io/v1beta1 kind: DestinationRule metadata: name: reviews spec: host: reviews trafficPolicy: loadBalancer: simple: ROUND_ROBIN warmupDurationSecs: 120s -
Execute o comando a seguir para aplicar a atualização.
kubectl apply -f reviews.yaml
Etapa 4: Verifique o efeito do aquecimento
Após ative o recurso de aquecimento, escale as réplicas do Deployment
reviews-v3de 0 para 1.-
Execute o comando a seguir para enviar requisições de teste de carga ao gateway de entrada.
Este exemplo envia requisições de teste de carga durante 150s.
hey -z 150s -q 100 -c 4 http://${INGRESS_GATEWAY_ADDRESS}/reviews/0 -
Na aba Cloud ASM Istio Service, observe os dados no painel de monitoramento do Prometheus.
Leva cerca de 120 segundos para que o pod
reviews-v3receba uma parcela equilibrada de requisições. O tempo real pode variar dependendo do seu ambiente de teste de carga.
A curva pode parecer escalonada porque as métricas são coletadas em intervalos. Na realidade, o tráfego para o pod reviews-v3aumenta suavemente. Se você ative a coleta de logs do sidecar, poderá pesquisar os logs desse sidecar no Simple Log Service (SLS) para visualize o volume de logs nos últimos 5 minutos.
Conforme esperado com o recurso de aquecimento, uma nova instância recebe inicialmente uma fração do tráfego, que então aumenta suavemente ao longo da duração configurada até atingir sua parcela total.Depois que o recurso de aquecimento é ativado, leva cerca de 2 minutos e 30 segundos para que o tráfego seja distribuído uniformemente entre as versões v1, v2 e v3. Na visualização Service Graph do Kiali, o istio-ingressgateway distribui o tráfego quase igualmente entre as versões v1, v2 e v3 do service Reviews, com 33,3%, 33,3% e 33,4%, respectivamente. As versões v2 e v3 então chamam o service ratings v1, o que indica que o tráfego está equilibrado após a conclusão do aquecimento.
Documentos relacionados
Configure limitação local ou global para manter o tráfego dentro de um limiar gerenciável, garantindo a disponibilidade do service e a estabilidade do desempenho. Para mais informações, consulte Configure local throttling in the traffic management center e Use ASMGlobalRateLimiter to configure global throttling for ingress traffic of an application.
O ASMAdaptiveConcurrency oferece controle de concorrência adaptativo ajustando dinamicamente o número permitido de requisições simultâneas com base em dados de requisições amostradas. Quando o número de requisições simultâneas excede a capacidade do service, as requisições são rejeitadas para proteger o service. Para mais informações, consulte Use ASMAdaptiveConcurrency for adaptive concurrency control.
Configure um pool de conexões para implementar circuit breaking, protegendo seu sistema contra danos adicionais em caso de falha ou sobrecarga. Para mais informações, consulte Configure a connection pool for circuit breaking.