BLOG

Como os ambientes de orquestração de contêineres impactam o monitoramento de integridade

Miniatura de Lori MacVittie
Lori MacVittie
Publicado em 16 de outubro de 2017

No centro da disponibilidade está o monitoramento. Cada balanceador de carga – antes de escolher um recurso de destino – precisa saber se esse recurso está realmente disponível ou não. Caso contrário, qual é o sentido?

Em ambientes onde os recursos têm vidas úteis que podem ser medidas em minutos em vez de horas ou dias, torna-se ainda mais crítico saber o status dos recursos antes de tomar a decisão de enviar uma solicitação a eles.

O monitoramento de integridade é parte integrante dos balanceadores de carga e proxies. Isso também é verdade (ou deveria ser verdade) em ambientes conteinerizados. À medida que esses ambientes continuam a amadurecer (rapidamente), estamos vendo novos modelos de monitoramento surgirem para combater os desafios um tanto únicos associados a esses sistemas distribuídos e altamente voláteis.

encaminhamento-proxy-saúde

O monitoramento de saúde tradicional certamente faz parte da equação, mas alguns modelos de disponibilidade e escala dentro de ambientes de contêiner colocam pressões no monitoramento de saúde tradicional que devem ser abordadas. Por exemplo, espera-se que proxies implantados em um modelo de proxy de encaminhamento sejam capazes de selecionar um alvo saudável (disponível) em todos os serviços possíveis. Enquanto um proxy reverso (um balanceador de carga tradicional, se preferir) é responsável apenas por rastrear o estado de um conjunto muito específico de serviços para um único aplicativo, um proxy de encaminhamento é responsável por saber o estado de cada serviço para cada aplicativo no ambiente. Porque enviar uma solicitação para um contêiner já fora de serviço seria ruim, ok?

Monitoramento de saúde tradicional

Tradicionalmente, o monitoramento de saúde é realizado por um proxy de duas maneiras:

  • Monitoramento ativo: Enviando sondas ou solicitações de verificação de integridade para contêineres e avaliando suas respostas.
  • Monitoramento Passivo: Observar solicitações naturais dos clientes e suas respostas.

Você pode imaginar que o monitoramento ativo por cada proxy de encaminhamento de cada serviço aumentará drasticamente o tráfego na rede local e consumirá recursos desnecessariamente. O monitoramento útil ocorre pelo menos nas camadas TCP e, idealmente, nas camadas HTTP. Afinal, a conectividade de rede não é um indicador da integridade ou disponibilidade do serviço. Consumir conexões TCP e exigir processamento HTTP sobrecarregará rapidamente os contêineres à medida que o número de nós (e, portanto, proxies de encaminhamento) aumenta. Você não quer ter que aumentar a escala porque os contêineres estão sobrecarregados com monitoramento.

O monitoramento passivo é uma opção melhor neste caso, pois não sobrecarrega o sistema monitorado, mas tem suas limitações em alguns ambientes de contêiner. Muitos são construídos com base em princípios de rede de sobreposição que tornam desafiador garantir que cada proxy possa ver cada resposta de serviço e rastreá-la. Não é impossível, mas é desafiador na camada de rede.

Ambos os modelos também sobrecarregam o proxy em si, exigindo que os recursos sejam dedicados apenas ao monitoramento do ambiente, em vez da tarefa que eles estão lá para executar: dimensionar serviços.

Monitoramento de saúde em contêineres 

Os ambientes de contêineres não ignoram esses desafios. Em resposta, estamos vendo dois novos modelos surgindo que certamente ajudarão a garantir a disponibilidade em arquiteturas que empregam proxies de encaminhamento para disponibilidade e escala.

Esses dois modelos são:

  • Monitoramento Ambiental: Os proxies estão cientes da integridade/disponibilidade graças às informações do Container Orchestration Environment (COE) sobre a integridade do contêiner.
  • Monitoramento compartilhado: Como é provável que haja muitos proxies em um ambiente, o trabalho de monitoramento pode ser dividido entre os proxies e os resultados compartilhados.

O monitoramento ambiental é frequentemente associado ao registro de serviços, que rastreia os contêineres conforme eles entram e saem do sistema. Isso significa que geralmente é a fonte mais confiável de disponibilidade de contêineres no sistema. Os proxies também podem assinar eventos acionados pela criação e destruição de contêineres para rastrear esses recursos (na prática, agindo como um registro).

Por exemplo, se o monitoramento de saúde estiver habilitado para um aplicativo no Marathon, um proxy poderá usar o campo 'healthCheckResults'. No Kubernetes, os proxies podem usar verificações de atividade e/ou prontidão. As verificações de integridade ambiental permitem que os proxies comecem a selecionar endpoints mais saudáveis antes que o sistema de orquestração reinicie um não saudável.

O monitoramento compartilhado faz muito sentido em sistemas que empregam modelos de proxy de encaminhamento, principalmente aqueles com uma base de malha de serviço como o Istio . O proxy associado ao nó certamente consegue monitorar a integridade e a disponibilidade dos contêineres para os quais ele está encaminhando solicitações (da mesma forma que ele pode monitorar serviços em um modelo de proxy reverso). Mas você certamente não quer que cada proxy investigue ativamente cada endpoint em tal sistema. Assim, ao compartilhar informações de saúde locais com outros proxies (ou com o ambiente, melhor ainda), todo o estado conhecido do sistema pode ser obtido por todos os proxies sem exigir verificações de saúde excessivas em cada serviço.

Há muitas mudanças acontecendo na “rede” com relação aos serviços de aplicativos, como balanceamento de carga, e como eles interagem para atender às necessidades e requisitos de novos modelos, como a conteinerização. Esses requisitos estão constantemente pressionando os proxies a se adaptarem. Isso ocorre porque os proxies são uma das tecnologias mais flexíveis desenvolvidas nos últimos vinte anos e continuam sendo uma base significativa sobre a qual os serviços de aplicativos são projetados, desenvolvidos e implantados.