menu
arrow_back

Teste de carga distribuída usando o Kubernetes

Teste de carga distribuída usando o Kubernetes

Horas 5 Créditos

GSP182

Laboratórios autoguiados do Google Cloud

Visão geral

Neste laboratório, você aprenderá a usar o Kubernetes Engine para implantar um framework de teste de carga distribuída. Nesse framework, vários contêineres são usados na criação do tráfego desse teste para uma API baseada em REST. Ainda que o aplicativo da Web usado aqui seja simples, o mesmo padrão pode ser aplicado para criar cenários de teste de carga mais complexos, como aplicativos da Internet das Coisas (IoT na sigla em inglês) ou de jogos. Neste documento, será discutida a arquitetura geral de um framework de teste de carga baseado em contêineres.

Sistema em teste

Para este laboratório, o sistema em teste é um pequeno aplicativo da Web implantado no Google App Engine. No aplicativo, os endpoints básicos do tipo REST são expostos para capturar as solicitações POST HTTP recebidas. Os dados de entrada não são permanentes.

Cargas de trabalho de exemplo

O aplicativo a ser implantado tem como modelo o componente de serviço de back-end encontrado em várias implantações de Internet das Coisas (IoT na sigla em inglês). Primeiro, os dispositivos são registrados no serviço, e depois as métricas ou leituras do sensor começam a ser registradas. Ao mesmo tempo, o registro no serviço é refeito periodicamente.

Veja um exemplo comum de interação de componente de serviço de back-end: 542dlt85f86jjd1f.png

Para modelar essa interação, será usado o Locust, uma ferramenta de teste de carga distribuída e baseada em Python capaz de dividir solicitações em vários caminhos de destino. Por exemplo, com o Locust, essa distribuição é feita para os caminhos /login e /metrics.

A carga de trabalho tem como base a interação descrita anteriormente e é modelada como um conjunto de tarefas no Locust. Para simular situações reais dos clientes, cada tarefa do Locust tem um peso. Por exemplo, o registro ocorre uma vez a cada mil solicitações de cliente.

Computação baseada em contêineres

  • A imagem do contêiner do Locust é uma imagem do Docker que contém o software do Locust.

  • Um container cluster consiste em pelo menos um mestre de cluster e vários workers chamados de nós. As máquinas mestre e nós executam o sistema de orquestração de cluster do Kubernetes. Para mais informações sobre clusters, consulte a documentação do Kubernetes Engine.

  • Um pod é um ou mais contêineres implantados juntos em um host e corresponde à menor unidade de computação que pode ser definida, implantada e gerenciada. Alguns pods contêm somente um contêiner. Por exemplo, neste laboratório, cada contêiner do Locust é executado no próprio pod.

  • Um Deployment controller gera atualizações declarativas para Pods e ReplicaSets. Este laboratório tem duas implantações: uma para locust-master e outra para locust-worker.

  • Serviços

    Um pod específico pode desaparecer por vários motivos, incluindo uma falha no nó ou a interrupção intencional dele para atualizações ou manutenção. Isso significa que o endereço IP desse pod não proporciona uma interface confiável para ele. Uma abordagem mais estável seria usar uma representação abstrata da interface que nunca é alterada, mesmo quando o pod subjacente desaparece e é substituído por outro com IP diferente. Um service do Kubernetes Engine inclui esse tipo de interface abstrata ao definir um conjunto lógico de pods e uma política para acessá-los.

    Neste laboratório, há vários serviços que representam pods ou conjunto de pods. Por exemplo, há um serviço para o pod do servidor DNS, outro para o pod mestre do Locust e um terceiro que representa os 10 pods de worker do Locust.

    No diagrama a seguir, veja o conteúdo dos nós mestres e de trabalho:

4er1cd4e32459737.png

Atividades do laboratório

  • Criar um sistema em teste, ou seja, um pequeno aplicativo da Web implantado no Google App Engine
  • Usar o Kubernetes Engine para implantar um framework de teste de carga distribuída
  • Criar tráfego de teste de carga para uma API simples baseada em REST

Pré-requisitos

  • Ter um bom conhecimento dos serviços Google App Engine e Kubernetes Engine do GCP
  • Conhecer os editores de texto padrão do Linux, como Vim, Emacs ou Nano

Join Qwiklabs to read the rest of this lab...and more!

  • Get temporary access to the Google Cloud Console.
  • Over 200 labs from beginner to advanced levels.
  • Bite-sized so you can learn at your own pace.
Join to Start This Lab