Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Use o recurso de aquecimento do ASM

Última atualização: Sep 12, 2026

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

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.

Nota

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.

  1. Defina os recursos de entrada.

    1. Crie um arquivo chamado bookinfo-gateway.yaml com o seguinte conteúdo.

      bookinfo-gateway.yaml

      apiVersion: networking.istio.io/v1alpha3
      kind: Gateway
      metadata:
        name: bookinfo-gateway
      spec:
        selector:
          istio: ingressgateway
        servers:
        - port:
            number: 80
            name: http
            protocol: HTTP
          hosts:
          - "*"
      ---
      apiVersion: networking.istio.io/v1beta1
      kind: VirtualService
      metadata:
        name: bookinfo
      spec:
        gateways:
          - bookinfo-gateway
        hosts:
          - '*'
        http:
          - match:
            - uri:
                exact: /productpage
            - uri:
                prefix: /static
            - uri:
                exact: /login
            - uri:
                exact: /logout
            - uri:
                prefix: /api/v1/products
            route:
              - destination:
                  host: productpage
                  port:
                    number: 9080
          - match:
            - uri:
                prefix: /reviews
            route:
              - destination:
                  host: reviews
                  port:
                    number: 9080
      
    2. Execute o comando a seguir para implantar o gateway e o virtual service.

      kubectl apply -f bookinfo-gateway.yaml
  2. Crie a DestinationRule para o service Reviews.

    1. Crie um arquivo chamado reviews.yaml com o seguinte conteúdo.

      reviews.yaml

      apiVersion: networking.istio.io/v1beta1
      kind: DestinationRule
      metadata:
        name: reviews
      spec:
        host: reviews
        trafficPolicy:
          loadBalancer:
            simple: ROUND_ROBIN                        
    2. Execute o comando a seguir para implantar a DestinationRule.

      kubectl apply -f reviews.yaml
  3. Ative a topologia de malha e acesse continuamente o endereço do gateway de entrada.

    Este tópico utiliza o comando hey para enviar requisições de teste de carga durante 10s. Para obter informações sobre como baixe e instale o hey, 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/0

    A figura a seguir mostra um exemplo de topologia de chamadas:image

Etapa 2: Observar a inicialização do pod

  1. Faça login no console do ASM.

  2. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  3. 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.

  4. No painel de navegação à esquerda, escolha Observability Management Center > Monitoring metrics.

    • 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-v3 e defina Reporter como source.

  5. Envie requisições de teste de carga e observe os dados de monitoramento.

    1. Com o recurso de aquecimento desativado, escale as réplicas do Deployment reviews-v3 de 0 para 1.

    2. 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
    3. Observe os dados no painel de monitoramento do Prometheus.

      Leva cerca de 45 segundos para que o pod reviews-v3 receba uma parcela equilibrada de requisições. O tempo real pode variar dependendo do seu ambiente de teste de carga.image

  6. Escale as réplicas do Deployment reviews-v3 de volta para 0.

Etapa 3: Ative o recurso de aquecimento

  1. Atualize o arquivo reviews.yaml com o seguinte conteúdo.

    Adicione o campo warmupDurationSecs e defina-o como 120s, 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
  2. Execute o comando a seguir para aplicar a atualização.

    kubectl apply -f reviews.yaml

Etapa 4: Verifique o efeito do aquecimento

  1. Após ative o recurso de aquecimento, escale as réplicas do Deployment reviews-v3 de 0 para 1.

  2. 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
  3. 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-v3 receba uma parcela equilibrada de requisições. O tempo real pode variar dependendo do seu ambiente de teste de carga.image A curva pode parecer escalonada porque as métricas são coletadas em intervalos. Na realidade, o tráfego para o pod reviews-v3 aumenta 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.image 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