Introdução ao Gerenciador de Recursos de Cluster do Service FabricIntroducing the Service Fabric cluster resource manager

Tradicionalmente, gerenciar sistemas de TI ou serviços online significava dedicar computadores ou máquinas virtuais específicas a esses serviços ou sistemas específicos.Traditionally managing IT systems or online services meant dedicating specific physical or virtual machines to those specific services or systems. Os serviços foram projetados como camadas.Services were architected as tiers. Deveria haver uma camada da "Web" e uma camada de "dados" ou "armazenamento".There would be a “web” tier and a “data” or “storage” tier. Os aplicativos teriam uma camada de mensagens, em que solicitações de entrada e de saída fluíam, bem como um conjunto de computadores dedicados ao cache.Applications would have a messaging tier where requests flowed in and out, as well as a set of machines dedicated to caching. Cada camada ou tipo de carga de trabalho tinha computadores específicos dedicados: o banco de dados tinha dois computadores dedicados a ele, enquanto os servidores Web contavam com alguns.Each tier or type of workload had specific machines dedicated to it: the database got a couple machines dedicated to it, the web servers a few. Se um tipo específico de carga de trabalho fizesse com que os computadores em que ele estava tivessem utilização alta demais, você adicionaria mais computadores com a mesma configuração a essa camada.If a particular type of workload caused the machines it was on to run too hot, then you added more machines with that same configuration to that tier. No entanto, nem todas as cargas de trabalho podiam ser dimensionadas tão facilmente – especialmente com a camada de dados, normalmente você substituiria os computadores por computadores maiores.However, not all workloads could be scaled out so easily - particularly with the data tier you would typically replace machines with larger machines. Fácil.Easy. Se uma máquina falhava, essa parte do aplicativo geral era executada com menor capacidade até que o computador pudesse ser restaurado.If a machine failed, that part of the overall application ran at lower capacity until the machine could be restored. Ainda assim, relativamente fácil (mesmo que não necessariamente divertido).Still fairly easy (if not necessarily fun).

Agora, no entanto, o mundo de arquitetura de software e serviço mudou.Now however the world of service and software architecture has changed. É mais comum que os aplicativos adotem um design de expansão.It's more common that applications have adopted a scale-out design. É comum criar aplicativos com contêineres ou microsserviços (ou ambos).Building applications with containers or microservices (or both) is common. Agora, enquanto você ainda pode ter apenas alguns computadores, eles não executam apenas uma única instância de uma carga de trabalho.Now, while you may still have only a few machines, they're not running just a single instance of a workload. Eles podem até mesmo executar várias cargas de trabalho diferentes ao mesmo tempo.They may even be running multiple different workloads at the same time. Agora, você tem dezenas de tipos de serviços diferentes (nenhum deles consumindo todos os recursos de um computador), talvez centenas de instâncias diferentes desses serviços.You now have dozens of different types of services (none consuming a full machine's worth of resources), perhaps hundreds of different instances of those services. Cada instância nomeada tem uma ou mais instâncias ou réplicas para HA (Alta Disponibilidade).Each named instance has one or more instances or replicas for High Availability (HA). Dependendo dos tamanhos dessas cargas de trabalho e do quanto elas ficam ocupadas, você pode acabar tendo centenas ou milhares de computadores.Depending on the sizes of those workloads, and how busy they are, you may find yourself with hundreds or thousands of machines.

Inesperadamente, já não era tão simples gerenciar seu ambiente com poucos computadores dedicados a tipos de carga de trabalho únicos.Suddenly managing your environment is not so simple as managing a few machines dedicated to single types of workloads. Os servidores são virtuais e não têm mais nomes (sua mentalidade passou a valorizar a coletividade ).Your servers are virtual and no longer have names (you have switched mindsets from pets to cattle after all). A configuração tem menos a ver com os computadores e mais a ver com os próprios serviços.Configuration is less about the machines and more about the services themselves. Ter hardware dedicado a uma única instância de uma carga de trabalho é basicamente uma coisa do passado.Hardware that is dedicated to a single instance of a workload is largely a thing of the past. Os próprios serviços tornaram-se pequenos sistemas distribuídos que abrangem várias partes menores do hardware de mercadoria.Services themselves have become small distributed systems that span multiple smaller pieces of commodity hardware.

Como seu aplicativo não é mais uma série de monolitos espalhados por várias camadas, agora você tem muito combinações com que lidar.Because your app is no longer a series of monoliths spread across several tiers, you now have many more combinations to deal with. Quem decide quais tipos de carga de trabalho podem ser executados em qual hardware, ou quantos?Who decides what types of workloads can run on which hardware, or how many? Quais cargas de trabalho funcionam bem no mesmo hardware e quais entram em conflito?Which workloads work well on the same hardware, and which conflict? Quando um computador fica inoperante, como você sabe o que estava em execução nesse computador?When a machine goes down how do you know what was running there on that machine? Quem é o responsável por garantir que a carga de trabalho comece a execução novamente?Who is in charge of making sure that workload starts running again? Você espera que a máquina (virtual) volte ou suas cargas de trabalho fazem failover automaticamente para outras máquinas e continuam em execução?Do you wait for the (virtual?) machine to come back or do your workloads automatically fail over to other machines and keep running? Há necessidade de intervenção humana?Is human intervention required? E quanto às atualizações nesse ambiente?What about upgrades in this environment?

Como desenvolvedores e operadores que lidam com esse ambiente, vamos precisar de ajuda para gerenciar essa complexidade.As developers and operators dealing in this environment, we’re going to want help managing this complexity. Uma onda de contratações para tentar esconder a complexidade por trás das pessoas provavelmente não é a resposta certa, então o que devemos fazer?A hiring binge and trying to hide the complexity with people is probably not the right answer, so what do we do?

Introdução aos orquestradoresIntroducing orchestrators

Um "Orquestrador" é o termo geral para um componente de software que ajuda os administradores a gerenciar esses tipos de ambiente.An “Orchestrator” is the general term for a piece of software that helps administrators manage these types of environments. Orquestradores são os componentes que recebem solicitações como “Eu gostaria de ter cinco cópias desse serviço em execução no meu ambiente”.Orchestrators are the components that take in requests like “I would like five copies of this service running in my environment." Eles tentam corresponder o ambiente ao estado desejado, independente do que venha a ocorrer.They try to make the environment match the desired state, no matter what happens.

Os orquestradores (não humanos) são os que entram em ação quando um computador falha ou quando uma carga de trabalho é encerrada por algum motivo inesperado.Orchestrators (not humans) are what take action when a machine fails or a workload terminates for some unexpected reason. A maioria dos orquestradores faz mais do que apenas lidar com falhas.Most orchestrators do more than just deal with failure. Outros recursos que eles oferecem são o gerenciamento de novas implantações, a manipulação de atualizações e o tratamento do consumo e da governança de recursos.Other features they have are managing new deployments, handling upgrades, and dealing with resource consumption and governance. Todos os orquestradores destinam-se fundamentalmente a manter algum estado desejado da configuração no ambiente.All orchestrators are fundamentally about maintaining some desired state of configuration in the environment. Você quer poder informar a um orquestrador o que você deseja para que ele faça o trabalho pesado.You want to be able to tell an orchestrator what you want and have it do the heavy lifting. Aurora sobre Mesos, Docker Datacenter/Docker Swarm, Kubernetes e Service Fabric são exemplos de orquestradores.Aurora on top of Mesos, Docker Datacenter/Docker Swarm, Kubernetes, and Service Fabric are all examples of orchestrators. Esses orquestradores estão sendo desenvolvidos ativamente para atender às necessidades de cargas de trabalho reais em ambientes de produção.These orchestrators are being actively developed to meet the needs of real workloads in production environments.

Orquestração como um serviçoOrchestration as a service

O Gerenciador de Recursos de Cluster é o componente de sistema que lida com a orquestração no Service Fabric.The Cluster Resource Manager is the system component that handles orchestration in Service Fabric. O trabalho do Gerenciador de Recursos de Cluster é dividido em três partes:The Cluster Resource Manager’s job is broken down into three parts:

  1. Imposição de regrasEnforcing Rules
  2. Otimização do seu ambienteOptimizing Your Environment
  3. Ajudando com outros processosHelping with Other Processes

O que não éWhat it isn’t

Em aplicativos tradicionais de N camadas, sempre há um Balanceador de Carga.In traditional N tier applications, there's always a Load Balancer. Geralmente, esse era um NLB (Balanceador de Carga de Rede) ou um ALB (Balanceador de Carga de Aplicativo), dependendo de onde ele estava na pilha da rede.Usually this was a Network Load Balancer (NLB) or an Application Load Balancer (ALB) depending on where it sat in the networking stack. Alguns balanceadores de carga se baseiam em Hardware, como a oferta BigIP da F5 e outros em software, como o NLB da Microsoft.Some load balancers are Hardware-based like F5’s BigIP offering, others are software-based such as Microsoft’s NLB. Em outros ambientes, você poderá ver algo como HAProxy, nginx, Istio ou Envoy nessa função.In other environments, you might see something like HAProxy, nginx, Istio, or Envoy in this role. Nessas arquiteturas, o trabalho de balanceamento de carga é garantir que as cargas de trabalho sem estado recebam (aproximadamente) a mesma quantidade de trabalho.In these architectures, the job of load balancing is to ensure stateless workloads receive (roughly) the same amount of work. As estratégias de balanceamento de carga variavam.Strategies for balancing load varied. Alguns balanceadores enviavam cada chamada para um servidor diferente.Some balancers would send each different call to a different server. Outros forneciam fixação/adesão à sessão.Others provided session pinning/stickiness. Balanceadores mais avançados usam estimativa de carga real ou relatórios para encaminhar uma chamada com base em seu custo esperado e na carga atual do computador.More advanced balancers use actual load estimation or reporting to route a call based on its expected cost and current machine load.

Balanceadores de rede ou roteadores de mensagem tentavam garantir que uma camada Web/de trabalho permaneça razoavelmente equilibrada.Network balancers or message routers tried to ensure that the web/worker tier remained roughly balanced. Estratégias para balancear a camada de dados eram diferentes e dependiam do mecanismo de armazenamento de dados.Strategies for balancing the data tier were different and depended on the data storage mechanism. O balanceamento da camada de dados dependia de fragmentação de dados, cache, exibições gerenciadas, procedimentos armazenados e outros mecanismos específicos ao repositório.Balancing the data tier relied on data sharding, caching, managed views, stored procedures, and other store-specific mechanisms.

Embora algumas dessas estratégias sejam interessantes, o Gerenciador de Recursos de Cluster do Service Fabric não é um balanceador de carga de rede ou um cache.While some of these strategies are interesting, the Service Fabric Cluster Resource Manager is not anything like a network load balancer or a cache. Um balanceador de carga de rede equilibra front-ends, distribuindo o tráfego entre eles.A Network Load Balancer balances frontends by spreading traffic across frontends. O Gerenciador de Recursos de Cluster do Service Fabric tem uma estratégia diferente.The Service Fabric Cluster Resource Manager has a different strategy. Fundamentalmente, o Service Fabric move os serviços para onde eles fazem mais sentido, esperando que o tráfego ou a carga os siga.Fundamentally, Service Fabric moves services to where they make the most sense, expecting traffic or load to follow. Por exemplo, ele pode mover serviços para nós que são pouco utilizados no momento, pois os serviços que estão lá não estão trabalhando muito.For example, it might move services to nodes that are currently cold because the services that are there are not doing much work. Os nós podem ser pouco utilizados porque os serviços existentes foram excluídos ou movidos para outro lugar.The nodes may be cold since the services that were present were deleted or moved elsewhere. Como outro exemplo, o Cluster Resource Manager também poderia retirar um serviço de um computador.As another example, the Cluster Resource Manager could also move a service away from a machine. Talvez o computador esteja prestes a ser atualizada ou esteja sobrecarregada devido a um aumento no consumo dos serviços em execução nela.Perhaps the machine is about to be upgraded, or is overloaded due to a spike in consumption by the services running on it. Alternativamente, os requisitos de recursos do serviço podem ter aumentado.Alternatively, the service's resource requirements may have increased. Como resultado, não há recursos suficientes neste computador para continuar a execução.As a result there aren't sufficient resources on this machine to continue running it.

Como o Gerenciador de Recursos de Cluster é responsável por mover os serviços, ele contém um conjunto de recursos diferente em comparação com o que você encontraria em um balanceador de carga de rede.Because the Cluster Resource Manager is responsible for moving services around, it contains a different feature set compared to what you would find in a network load balancer. Isso acontece porque os balanceadores de carga de rede entregam o tráfego de rede em que os serviços já estão, mesmo que esse local não seja ideal para executar o próprio serviço.This is because network load balancers deliver network traffic to where services already are, even if that location is not ideal for running the service itself. O Gerenciador de Recursos de Cluster do Service Fabric utiliza estratégias fundamentalmente diferentes para garantir que os recursos do cluster sejam utilizados com eficiência.The Service Fabric Cluster Resource Manager employs fundamentally different strategies for ensuring that the resources in the cluster are efficiently utilized.

Próximas etapasNext steps

  • Para obter informações sobre a arquitetura e fluxo de informações dentro do Gerenciador de recursos de Cluster, fazer check-out neste artigoFor information on the architecture and information flow within the Cluster Resource Manager, check out this article
  • O Cluster Resource Manager tem muitas opções para descrever o cluster.The Cluster Resource Manager has many options for describing the cluster. Para saber mais sobre as métricas, confira este artigo sobre a descrição de um cluster do Service FabricTo find out more about metrics, check out this article on describing a Service Fabric cluster
  • Para saber mais sobre como configurar os serviços, Saiba mais sobre como configurar serviçosFor more information on configuring services, Learn about configuring Services
  • As métricas são como o Gerenciador de Recursos de Cluster do Service Fabric gerencia o consumo e a capacidade no cluster.Metrics are how the Service Fabric Cluster Resource Manger manages consumption and capacity in the cluster. Para saber mais sobre as métricas e como configurá-las, confira este artigoTo learn more about metrics and how to configure them check out this article
  • O Gerenciador de Recursos de Cluster funciona com recursos de gerenciamento do Service Fabric.The Cluster Resource Manager works with Service Fabric's management capabilities. Para saber mais sobre essa integração, leia este artigoTo find out more about that integration, read this article
  • Para descobrir como o Gerenciador de Recursos de Cluster gerencia e balanceia carga no cluster, confira o artigo sobre como balancear cargaTo find out about how the Cluster Resource Manager manages and balances load in the cluster, check out the article on balancing load