Visão geral da arquitetura do gerenciador de recursos de cluster

O Gerenciador de Recursos de Cluster do Service Fabric é um serviço central executado no cluster. Ele gerencia o estado desejado dos serviços no cluster, particularmente no que diz respeito ao consumo de recursos e quaisquer regras de posicionamento.

Para gerenciar os recursos em seu cluster, o Gerenciador de Recursos de Cluster do Service Fabric deve ter várias informações:

  • Que serviços existem atualmente
  • Consumo de recursos atual (ou padrão) de cada serviço
  • A capacidade restante do cluster
  • A capacidade dos nós no cluster
  • A quantidade de recursos consumidos em cada nó

O consumo de recursos de um determinado serviço pode mudar ao longo do tempo, e os serviços geralmente se preocupam com mais de um tipo de recurso. Em diferentes serviços, pode haver recursos físicos e físicos reais sendo medidos. Os serviços podem rastrear métricas físicas, como memória e consumo de disco. Mais comumente, os serviços podem se preocupar com métricas lógicas - coisas como "WorkQueueDepth" ou "TotalRequests". As métricas lógicas e físicas podem ser usadas no mesmo cluster. As métricas podem ser compartilhadas entre muitos serviços ou ser específicas de um serviço específico.

Outras considerações

Os proprietários e operadores do cluster podem ser diferentes dos autores do serviço e do aplicativo ou, no mínimo, são as mesmas pessoas usando chapéus diferentes. Quando você desenvolve seu aplicativo, você sabe algumas coisas sobre o que ele exige. Você tem uma estimativa dos recursos que ele consumirá e como diferentes serviços devem ser implantados. Por exemplo, a camada da Web precisa ser executada em nós expostos à Internet, enquanto os serviços de banco de dados não devem. Como outro exemplo, os serviços Web são provavelmente restringidos pela CPU e pela rede, enquanto os serviços da camada de dados se preocupam mais com o consumo de memória e disco. No entanto, a pessoa que lida com um incidente no local ativo para esse serviço em produção ou que está gerenciando uma atualização para o serviço tem um trabalho diferente a fazer e requer ferramentas diferentes.

Tanto o cluster como os serviços são dinâmicos:

  • O número de nós no cluster pode crescer e diminuir
  • Nós de diferentes tamanhos e tipos podem ir e vir
  • Os serviços podem ser criados, removidos e alterar as alocações de recursos e as regras de posicionamento desejadas
  • Upgrades ou outras operações de gerenciamento podem passar pelo cluster no aplicativo em níveis de infraestrutura
  • As falhas podem acontecer a qualquer momento.

Componentes do gerenciador de recursos de cluster e fluxo de dados

O Gerenciador de Recursos de Cluster tem que controlar os requisitos de cada serviço e o consumo de recursos por cada objeto de serviço dentro desses serviços. O Gerenciador de Recursos de Cluster tem duas partes conceituais: agentes que são executados em cada nó e um serviço tolerante a falhas. Os agentes em cada nó rastreiam relatórios de carga de serviços, agregam-nos e relatam-nos periodicamente. O serviço Gerenciador de Recursos de Cluster agrega todas as informações dos agentes locais e reage com base em sua configuração atual.

Vejamos o diagrama a seguir:

Diagrama que mostra o serviço Gerenciador de Recursos de Cluster agrega todas as informações dos agentes locais e reage com base em sua configuração atual.

Durante o tempo de execução, há muitas mudanças que podem acontecer. Por exemplo, digamos que a quantidade de recursos que alguns serviços consomem alterações, alguns serviços falham e alguns nós entram e saem do cluster. Todas as alterações em um nó são agregadas e enviadas periodicamente para o serviço Gerenciador de Recursos de Cluster (1,2), onde são agregadas novamente, analisadas e armazenadas. A cada poucos segundos, esse serviço analisa as alterações e determina se alguma ação é necessária (3). Por exemplo, ele pode notar que alguns nós vazios foram adicionados ao cluster. Como resultado, ele decide mover alguns serviços para esses nós. O Gerenciador de Recursos de Cluster também pode notar que um nó específico está sobrecarregado ou que determinados serviços falharam ou foram excluídos, liberando recursos em outro lugar.

Vamos olhar para o diagrama a seguir e ver o que acontece a seguir. Digamos que o Gerenciador de Recursos de Cluster determine que as alterações são necessárias. Ele se coordena com outros serviços do sistema (em particular o Gerenciador de Failover) para fazer as alterações necessárias. Em seguida, os comandos necessários são enviados para os nós apropriados (4). Por exemplo, digamos que o Resource Manager notou que o Node5 estava sobrecarregado e, portanto, decidiu mover o serviço B do Node5 para o Node4. No final da reconfiguração (5), o cluster tem esta aparência:

Arquitetura do Balanceador de Recursos

Próximos passos

  • O Gerenciador de Recursos de Cluster tem muitas opções para descrever o cluster. Para saber mais sobre eles, confira este artigo sobre como descrever um cluster do Service Fabric
  • As principais funções do Gerenciador de Recursos de Cluster são reequilibrar o cluster e impor regras de posicionamento. Para obter mais informações sobre como configurar esses comportamentos, consulte balanceando o cluster do Service Fabric