Introduzione a Cluster Resource Manager di Service FabricIntroducing the Service Fabric cluster resource manager

Tradizionalmente, la gestione dei sistemi IT o dei Servizi online comportava dedicare alcune macchine virtuali o fisiche a tali sistemi o servizi specifici.Traditionally managing IT systems or online services meant dedicating specific physical or virtual machines to those specific services or systems. I servizi erano progettati come livelli.Services were architected as tiers. Era presente un livello "web" e un livello "dati" o "archiviazione".There would be a “web” tier and a “data” or “storage” tier. Le applicazioni avevano un livello di messaggistica con un flusso di richieste in entrata e in uscita, nonché un set di computer dedicati alla memorizzazione nella cache.Applications would have a messaging tier where requests flowed in and out, as well as a set of machines dedicated to caching. A ogni livello o tipo di carico di lavoro veniva assegnato un computer dedicato. Al database venivano assegnati un paio di computer dedicati, ai server web qualcuno in più.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 un particolare tipo di carico di lavoro causava il surriscaldamento del computer su cui si trovava, si aggiungevano più computer con la medesima configurazione a quel livello.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. Non tutti i carichi di lavoro possono tuttavia essere scalati orizzontalmente facilmente, in particolare per il livello dati i computer vengono sostituiti con computer di dimensioni più grandi.However, not all workloads could be scaled out so easily - particularly with the data tier you would typically replace machines with larger machines. Semplice.Easy. Se si verificava un problema su un computer, la parte dell'applicazione interessata veniva gestita con una capacità inferiore fino a quando il computer non veniva ripristinato.If a machine failed, that part of the overall application ran at lower capacity until the machine could be restored. Ancora piuttosto semplice, anche se non necessariamente divertente.Still fairly easy (if not necessarily fun).

Ora il mondo dell'architettura dei servizi e del software è cambiato.Now however the world of service and software architecture has changed. È più comune l'adozione di una progettazione di scalabilità orizzontale da parte delle applicazioni.It's more common that applications have adopted a scale-out design. La creazione di applicazioni con contenitori o microservizi (o entrambi) è comune.Building applications with containers or microservices (or both) is common. Anche se è ancora possibile avere solo pochi computer, questi non eseguono una sola istanza di un carico di lavoro.Now, while you may still have only a few machines, they're not running just a single instance of a workload. Possono eseguire più carichi di lavoro diversi contemporaneamente.They may even be running multiple different workloads at the same time. Ci sono dozzine di tipi di servizi diversi e nessuno usa le risorse di un intero computer. Sono presenti anche centinaia di istanze diverse di questi servizi.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. Ciascuna istanza denominata dispone di una o più istanze o repliche per la disponibilità elevata.Each named instance has one or more instances or replicas for High Availability (HA). A seconda delle dimensioni e delle misure di questi carichi di lavoro potrebbero essere presenti centinaia o migliaia di computer.Depending on the sizes of those workloads, and how busy they are, you may find yourself with hundreds or thousands of machines.

A un tratto, la gestione dell'ambiente non è più semplice come gestire alcuni computer dedicati a singoli tipi di carichi di lavoro.Suddenly managing your environment is not so simple as managing a few machines dedicated to single types of workloads. I server sono virtuali e non sono più riconoscibili per nome: è stato ultimato il passaggio da animaletti da compagnia a capi di bestiame.Your servers are virtual and no longer have names (you have switched mindsets from pets to cattle after all). Ora, la configurazione riguarda più i servizi che i computer.Configuration is less about the machines and more about the services themselves. L'hardware dedicato a una singola istanza di un carico di lavoro è principalmente un ricordo del passato.Hardware that is dedicated to a single instance of a workload is largely a thing of the past. I servizi stessi sono diventati piccoli sistemi distribuiti che si dividono in più parti più piccole di hardware.Services themselves have become small distributed systems that span multiple smaller pieces of commodity hardware.

Poiché l'applicazione non è più composta da una serie di monoliti distribuiti su più livelli, ora si devono affrontare molte più combinazioni.Because your app is no longer a series of monoliths spread across several tiers, you now have many more combinations to deal with. Chi decide quali e quanti tipi di carichi di lavoro possono essere eseguiti su quale hardware?Who decides what types of workloads can run on which hardware, or how many? Quali carichi di lavoro funzionano correttamente con lo stesso hardware e quali sono in conflitto?Which workloads work well on the same hardware, and which conflict? Quando un computer smette di funzionare cosa era in funzione in quel momento?When a machine goes down how do you know what was running there on that machine? Chi è responsabile di assicurarsi che il carico di lavoro venga rimesso in funzione?Who is in charge of making sure that workload starts running again? Si attende che la macchina virtuale ritorni attiva oppure i carichi di lavoro effettuano automaticamente il failover su altri computer e proseguono l'esecuzione?Do you wait for the (virtual?) machine to come back or do your workloads automatically fail over to other machines and keep running? È necessario l'intervento dell'utente?Is human intervention required? Come si gestiscono gli aggiornamenti in questo ambiente?What about upgrades in this environment?

Gli sviluppatori e gli operatori che operano nell'ambiente hanno bisogno di aiuto per gestire questa complessità.As developers and operators dealing in this environment, we’re going to want help managing this complexity. È chiaro che una campagna di assunzioni per tentare di nascondere questa complessità non è la soluzione giusta.A hiring binge and trying to hide the complexity with people is probably not the right answer, so what do we do?

Introduzione agli agenti di orchestrazioneIntroducing orchestrators

Un "agente di orchestrazione" è il termine generale con cui ci si riferisce a un componente software che aiuta gli amministratori a gestire questi tipi di ambienti.An “Orchestrator” is the general term for a piece of software that helps administrators manage these types of environments. Gli agenti di orchestrazione sono i componenti che si fanno carico di richieste come "Vorrei avere in esecuzione 5 copie di questo servizio nel mio ambiente".Orchestrators are the components that take in requests like “I would like five copies of this service running in my environment." Provano a far corrispondere l'ambiente allo stato desiderato, a prescindere dagli eventi.They try to make the environment match the desired state, no matter what happens.

Sono gli agenti di orchestrazione e non gli esseri umani che entrano in gioco quando un computer si arresta o un flusso di lavoro si blocca per qualche motivo non previsto.Orchestrators (not humans) are what take action when a machine fails or a workload terminates for some unexpected reason. La maggior parte degli agenti di orchestrazione non si limita a gestire gli errori.Most orchestrators do more than just deal with failure. Gli agenti infatti dispongono di altre funzionalità come la gestione di nuove distribuzioni, degli aggiornamenti e del consumo e la governance di risorse.Other features they have are managing new deployments, handling upgrades, and dealing with resource consumption and governance. In sostanza tutti gli agenti di orchestrazione si occupano del mantenimento di uno stato o di una configurazione desiderati dell'ambiente.All orchestrators are fundamentally about maintaining some desired state of configuration in the environment. L'utente deve dire all'agente di orchestrazione che cosa fare e lasciargli fare i lavori pesanti.You want to be able to tell an orchestrator what you want and have it do the heavy lifting. Aurora su Mesos, Docker Datacenter/Docker Swarm, Kubernetes e Service Fabric sono tutti esempi di agenti di orchestrazione.Aurora on top of Mesos, Docker Datacenter/Docker Swarm, Kubernetes, and Service Fabric are all examples of orchestrators. Questi agenti di orchestrazione vengono continuamente sviluppati per fare fronte alle necessità dei carichi di lavoro reali negli ambienti di produzione.These orchestrators are being actively developed to meet the needs of real workloads in production environments.

Orchestrazione come servizioOrchestration as a service

Cluster Resource Manager è il componente di sistema che gestisce l'orchestrazione in Service Fabric.The Cluster Resource Manager is the system component that handles orchestration in Service Fabric. Il lavoro di Cluster Resource Manager è suddiviso in tre parti:The Cluster Resource Manager’s job is broken down into three parts:

  1. Applicazione di regoleEnforcing Rules
  2. Ottimizzazione dell'ambienteOptimizing Your Environment
  3. Contribuire con altri processiHelping with Other Processes

Per conoscere il funzionamento di Cluster Resource Manager, vedere il video seguente di Microsoft Virtual Academy:

To see how the Cluster Resource Manager works, watch the following Microsoft Virtual Academy video:

Che cosa non èWhat it isn’t

Nelle applicazioni tradizionali di livello N è sempre presente un Load Balancer.In traditional N tier applications, there's always a Load Balancer. In genere si trattava di un servizio di bilanciamento del carico di rete (NLB) o di applicazione (ALB) a seconda del posizionamento nello stack di rete.Usually this was a Network Load Balancer (NLB) or an Application Load Balancer (ALB) depending on where it sat in the networking stack. Alcuni servizi di bilanciamento del carico sono basati su hardware, come BigIP F5, mentre altri sono software, ad Bilanciamento carico di rete di Microsoft.Some load balancers are Hardware-based like F5’s BigIP offering, others are software-based such as Microsoft’s NLB. In altri ambienti si userà qualcosa di simile a HAProxy, nginx, Istio o Envoy in questo ruolo.In other environments, you might see something like HAProxy, nginx, Istio, or Envoy in this role. In queste architetture, il compito del servizio di bilanciamento del carico è assicurare che i carichi di lavoro senza stato ricevano sostanzialmente la stessa quantità di lavoro.In these architectures, the job of load balancing is to ensure stateless workloads receive (roughly) the same amount of work. Le strategie per il bilanciamento del carico sono variate.Strategies for balancing load varied. Alcuni servizi di bilanciamento inviavano ciascuna chiamata diversa a un server diverso.Some balancers would send each different call to a different server. Altri fornivano persistenza o visibilità elevata delle sessioni.Others provided session pinning/stickiness. I servizi di bilanciamento più avanzati usano stime o rapporti effettivi del carico per reindirizzare le chiamate in base ai costi previsti e al carico corrente del computer.More advanced balancers use actual load estimation or reporting to route a call based on its expected cost and current machine load.

I servizi di bilanciamento del carico o i router di messaggistica provavano ad assicurare il bilanciamento sostanziale del livello Web/ruolo di lavoro.Network balancers or message routers tried to ensure that the web/worker tier remained roughly balanced. Le strategie per il bilanciamento del livello dati erano diverse e dipendevano dal meccanismo di archiviazione dati.Strategies for balancing the data tier were different and depended on the data storage mechanism. Il bilanciamento del livello dati era basato sul partizionamento orizzontale dei dati, la memorizzazione nella cache, le visualizzazioni gestite, le stored procedure e altri meccanismi specifici di archiviazione.Balancing the data tier relied on data sharding, caching, managed views, stored procedures, and other store-specific mechanisms.

Anche se alcune di queste strategie sono interessanti, Cluster Resource Manager di Service Fabric non assomiglia affatto a un servizio di bilanciamento del carico di rete né a una 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. Un servizio di bilanciamento del carico di rete consente di bilanciare i front-end suddividendo il traffico di essi.A Network Load Balancer balances frontends by spreading traffic across frontends. Cluster Resource Manager di Service Fabric ha un approccio diverso.The Service Fabric Cluster Resource Manager has a different strategy. In breve, Service Fabric sposta i servizi dove sono più utili, aspettandosi che il traffico o il carico faranno seguito.Fundamentally, Service Fabric moves services to where they make the most sense, expecting traffic or load to follow. Ad esempio, potrebbero spostare i servizi in nodi attualmente non atti poiché i servizi già presenti non sono usati spesso.For example, it might move services to nodes that are currently cold because the services that are there are not doing much work. I nodi possono essere inattivi poiché i servizi presenti sono stati eliminati o spostati.The nodes may be cold since the services that were present were deleted or moved elsewhere. Come ulteriore esempio, Cluster Resource Manager potrebbe anche rimuovere un servizio da un computer per spostarlo,As another example, the Cluster Resource Manager could also move a service away from a machine. magari perché il computer sta per essere aggiornato o è sovraccaricato da un picco di uso di risorse a causa dei servizi in esecuzione.Perhaps the machine is about to be upgraded, or is overloaded due to a spike in consumption by the services running on it. In alternativa i requisiti di risorse del servizio potrebbero essere aumentati.Alernatively, the service's resource requirements may have increased. Di conseguenza non ci sono risorse sufficienti per continuare l'esecuzione su questo computer.As a result there aren't sufficient resources on this machine to continue running it.

Poiché Cluster Resource Manager è responsabile dello spostamento dei servizi contiene un set di funzionalità diverso rispetto a quello di un servizio di bilanciamento del carico di rete.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. Questo avviene perché i bilanciamenti del carico di rete inviano il traffico di rete dove già si trovano i servizi, anche se tale posizione non è ideale per l'esecuzione del servizio stesso.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. Cluster Resource Manager di Service Fabric impiega strategie essenzialmente diverse per garantire che le risorse del cluster vengano ben usate.The Service Fabric Cluster Resource Manager employs fundamentally different strategies for ensuring that the resources in the cluster are efficiently utilized.

Passaggi successiviNext steps

  • Per informazioni sull'architettura e sul flusso di informazioni in Cluster Resource Manager, vedere questo articoloFor information on the architecture and information flow within the Cluster Resource Manager, check out this article
  • Cluster Resource Manager dispone di varie opzioni per descrivere il cluster.The Cluster Resource Manager has many options for describing the cluster. Per altre informazioni sulle metriche vedere l'articolo Descrizione di un cluster di Service FabricTo find out more about metrics, check out this article on describing a Service Fabric cluster
  • Per altre informazioni sulla configurazione dei servizi vedere Informazioni sulla configurazione dei servizi(service-fabric-cluster-resource-manager-configure-services.md)For more information on configuring services, Learn about configuring Services(service-fabric-cluster-resource-manager-configure-services.md)
  • Le metriche determinano il modo in cui Cluster Resource Manger di Service Fabric gestisce il consumo e la capacità del cluster.Metrics are how the Service Fabric Cluster Resource Manger manages consumption and capacity in the cluster. Per altre informazioni sulle metriche e su come configurarle, vedere questo articoloTo learn more about metrics and how to configure them check out this article
  • Cluster Resource Manager sfrutta le funzionalità di gestione di Service Fabric.The Cluster Resource Manager works with Service Fabric's management capabilities. Per altre informazioni sull'integrazione, vedere questo articoloTo find out more about that integration, read this article
  • Per informazioni sul modo in cui Cluster Resource Manager gestisce e bilancia il carico nel cluster, vedere l'articolo relativo al bilanciamento del caricoTo find out about how the Cluster Resource Manager manages and balances load in the cluster, check out the article on balancing load