Integrazione di Cluster Resource Manager con la gestione dei cluster di Service FabricCluster resource manager integration with Service Fabric cluster management

Cluster Resource Manager di Service Fabric non gestisce gli aggiornamenti in Service Fabric ma partecipa al processo.The Service Fabric Cluster Resource Manager doesn't drive upgrades in Service Fabric, but it is involved. Il primo modo in cui Cluster Resource Manager facilita la gestione è monitorando lo stato desiderato del cluster e i servizi al suo interno.The first way that the Cluster Resource Manager helps with management is by tracking the desired state of the cluster and the services inside it. Cluster Resource Manager invia report di integrità quando non riesce ad attivare la configurazione del cluster desiderata.The Cluster Resource Manager sends out health reports when it cannot put the cluster into the desired configuration. Se ad esempio la capacità è insufficiente, Cluster Resource Manager invia avvisi ed errori relativi all'integrità che indicano il problema.For example, if there is insufficient capacity the Cluster Resource Manager sends out health warnings and errors indicating the problem. Un altro aspetto dell'integrazione ha a che fare con il funzionamento degli aggiornamenti.Another piece of integration has to do with how upgrades work. Durante gli aggiornamenti Cluster Resource Manager modifica leggermente il suo comportamento.The Cluster Resource Manager alters its behavior slightly during upgrades.

Integrazione di integritàHealth integration

Cluster Resource Manager monitora costantemente le regole definite per il posizionamento dei servizi.The Cluster Resource Manager constantly tracks the rules you have defined for placing your services. Monitora inoltre la capacità residua per ogni metrica nei nodi del cluster e nel cluster nel suo complesso.It also tracks the remaining capacity for each metric on the nodes and in the cluster and in the cluster as a whole. Se non riesce a soddisfare queste regole o se la capacità è insufficiente vengono generati errori e avvisi di integrità.If it can't satisfy those rules or if there is insufficient capacity, health warnings and errors are emitted. Ad esempio, se un nodo ha capacità in eccesso, Cluster Resource Manager tenterà di risolvere la situazione spostando i servizi.For example, if a node is over capacity and the Cluster Resource Manager will try to fix the situation by moving services. Se non riesce a risolvere la situazione, genera un avviso di integrità che indica quale nodo ha capacità in eccesso e per quali metriche.If it can't correct the situation it emits a health warning indicating which node is over capacity, and for which metrics.

Un altro esempio di avvisi di integrità di Resource Manager riguarda le violazioni dei vincoli di posizionamento.Another example of the Resource Manager's health warnings is violations of placement constraints. Se ad esempio è stato definito un vincolo di posizionamento (come “NodeColor == Blue”) e Resource Manager rileva una violazione del vincolo, genera un avviso di integrità.For example, if you have defined a placement constraint (such as “NodeColor == Blue”) and the Resource Manager detects a violation of that constraint, it emits a health warning. Questo vale per i vincoli personalizzati e i vincoli predefiniti (ad esempio i vincoli di dominio di errore e di aggiornamento).This is true for custom constraints and the default constraints (like the Fault Domain and Upgrade Domain constraints).

Di seguito è riportato un esempio di rapporto di integrità.Here’s an example of one such health report. In questo caso il report di integrità riguarda una delle partizioni del servizio di sistema.In this case, the health report is for one of the system service’s partitions. Il messaggio di integrità indica che le repliche di quella partizione sono temporaneamente compresse in un numero troppo basso di domini di aggiornamento.The health message indicates the replicas of that partition are temporarily packed into too few Upgrade Domains.

PS C:\Users\User > Get-WindowsFabricPartitionHealth -PartitionId '00000000-0000-0000-0000-000000000001'


PartitionId           : 00000000-0000-0000-0000-000000000001
AggregatedHealthState : Warning
UnhealthyEvaluations  :
                        Unhealthy event: SourceId='System.PLB', Property='ReplicaConstraintViolation_UpgradeDomain', HealthState='Warning', ConsiderWarningAsError=false.

ReplicaHealthStates   :
                        ReplicaId             : 130766528804733380
                        AggregatedHealthState : Ok

                        ReplicaId             : 130766528804577821
                        AggregatedHealthState : Ok

                        ReplicaId             : 130766528854889931
                        AggregatedHealthState : Ok

                        ReplicaId             : 130766528804577822
                        AggregatedHealthState : Ok

                        ReplicaId             : 130837073190680024
                        AggregatedHealthState : Ok

HealthEvents          :
                        SourceId              : System.PLB
                        Property              : ReplicaConstraintViolation_UpgradeDomain
                        HealthState           : Warning
                        SequenceNumber        : 130837100116930204
                        SentAt                : 8/10/2015 7:53:31 PM
                        ReceivedAt            : 8/10/2015 7:53:33 PM
                        TTL                   : 00:01:05
                        Description           : The Load Balancer has detected a Constraint Violation for this Replica: fabric:/System/FailoverManagerService Secondary Partition 00000000-0000-0000-0000-000000000001 is
                        violating the Constraint: UpgradeDomain Details: UpgradeDomain ID -- 4, Replica on NodeName -- Node.8 Currently Upgrading -- false Distribution Policy -- Packing
                        RemoveWhenExpired     : True
                        IsExpired             : False
                        Transitions           : Ok->Warning = 8/10/2015 7:13:02 PM, LastError = 1/1/0001 12:00:00 AM

Ecco che cosa indica questo messaggio di stato:Here's what this health message is telling us is:

  1. Le repliche stesse sono integre: ognuna presenta AggregatedHealthState: OkAll the replicas themselves are healthy: Each has AggregatedHealthState : Ok
  2. Il vincolo di distribuzione del dominio di aggiornamento è attualmente violato.The Upgrade Domain distribution constraint is currently being violated. Ciò significa che un particolare dominio di aggiornamento ha più repliche di questa partizione rispetto a quanto previsto.This means a particular Upgrade Domain has more replicas from this partition than it should.
  3. Qual è il nodo che contiene la replica che causa la violazione.Which node contains the replica causing the violation. In questo caso è il nodo denominato "Node.8"In this case it's the node with the name "Node.8"
  4. Se è in corso un aggiornamento per questa partizione ("Currently Upgrading -- false")Whether an upgrade is currently happening for this partition ("Currently Upgrading -- false")
  5. I criteri di distribuzione per questo servizio: "Distribution Policy -- Packing".The distribution policy for this service: "Distribution Policy -- Packing". Regolato dal criterio di selezione RequireDomainDistribution.This is governed by the RequireDomainDistribution placement policy. "Packing" indica che in questo caso DomainDistribution non era necessario e quindi che per questo servizio il criterio di selezione non è stato specificato."Packing" indicates that in this case DomainDistribution was not required, so we know that placement policy was not specified for this service.
  6. Quando è stato inviato il report 10/8/2015 19:13:02When the report happened - 8/10/2015 7:13:02 PM

Informazioni come queste producono avvisi che vengono generati nell'ambiente di produzione per informare l'utente che qualcosa non ha funzionato e per rilevare e arrestare aggiornamenti non validi.Information like this powers alerts that fire in production to let you know something has gone wrong and is also used to detect and halt bad upgrades. In questo caso sarebbe opportuno comprendere perché Resource Manager ha dovuto comprimere le repliche nel dominio di aggiornamento.In this case, we’d want to see if we can figure out why the Resource Manager had to pack the replicas into the Upgrade Domain. Di solito la compressione è temporanea ad esempio perché i nodi negli altri domini di aggiornamento erano inattivi.Usually packing is transient because the nodes in the other Upgrade Domains were down, for example.

Supponiamo che Cluster Resource Manager stia tentando di posizionare alcuni servizi ma che non ci siano soluzioni accettabili.Let’s say the Cluster Resource Manager is trying to place some services, but there aren't any solutions that work. Quando non è possibile posizionare i servizi, in genere il motivo è uno dei seguenti:When services can't be placed, it is usually for one of the following reasons:

  1. Una qualche condizione temporanea ha reso impossibile inserire correttamente questa istanza del servizio o replicaSome transient condition has made it impossible to place this service instance or replica correctly
  2. I requisiti di posizionamento del servizio non sono soddisfacenti.The service’s placement requirements are unsatisfiable.

In questi casi i report sull'integrità di Cluster Resource Manager consentono di determinare perché non è possibile posizionare il servizio.In these cases, health reports from the Cluster Resource Manager help you determine why the service can’t be placed. Questo processo viene definito sequenza di eliminazione del vincolo.We call this process the constraint elimination sequence. Durante la procedura il sistema esamina i singoli vincoli che agiscono sul servizio e registra ciò che eliminano.During it, the system walks through the configured constraints affecting the service and records what they eliminate. In questo modo, quando non si riesce a inserire i servizi, è possibile visualizzare i nodi eliminati e la relativa motivazione.This way when services aren’t able to be placed, you can see which nodes were eliminated and why.

Tipi di vincoloConstraint types

Esaminiamo ciascuno dei vincoli presenti nei report di integrità.Let’s talk about each of the different constraints in these health reports. Verranno visualizzati messaggi di integrità relativi a questi vincoli quando non è possibile inserire le repliche.You will see health messages related to these constraints when replicas can't be placed.

  • ReplicaExclusionStatic e ReplicaExclusionDynamic: questi vincoli indicano che è stata rifiutata una soluzione perché due oggetti di servizio della stessa partizione dovevano essere posizionati sullo stesso nodo.ReplicaExclusionStatic and ReplicaExclusionDynamic: These constraints indicates that a solution was rejected because two service objects from the same partition would have to be placed on the same node. Ciò non è consentito perché l'errore su quel nodo avrebbe un impatto eccessivo sulla partizione.This isn’t allowed because then failure of that node would overly impact that partition. ReplicaExclusionStatic e ReplicaExclusionDynamic sono regole quasi identiche e le differenze sono irrilevanti.ReplicaExclusionStatic and ReplicaExclusionDynamic are almost the same rule and the differences don't really matter. Se si nota una sequenza di eliminazione vincolo contenente ReplicaExclusionStatic o ReplicaExclusionDynamic significa che Cluster Resource Manager ritiene che non vi siano nodi sufficienti.If you are seeing a constraint elimination sequence containing either the ReplicaExclusionStatic or ReplicaExclusionDynamic constraint, the Cluster Resource Manager thinks that there aren’t enough nodes. Ciò richiede l'uso di posizionamenti non validi che sono disabilitati.This requires remaining solutions to use these invalid placements which are disallowed. Gli altri vincoli nella sequenza indicheranno perché i nodi vengono eliminati nella prima posizione.The other constraints in the sequence will usually tell us why nodes are being eliminated in the first place.
  • PlacementConstraint: se viene visualizzato questo messaggio significa che sono stati eliminati alcuni nodi perché non rispettavano i vincoli di posizionamento del servizio.PlacementConstraint: If you see this message, it means that we eliminated some nodes because they didn’t match the service’s placement constraints. I vincoli di posizionamento attualmente configurati vengono indicati come parte di questo messaggio.We trace out the currently configured placement constraints as a part of this message. Questo è normale se è stato definito un vincolo di posizionamento.This is normal if you have a placement constraint defined. Tuttavia se un vincolo di posizionamento causa l'eliminazione non corretta di troppi nodi, lo si noterà qui.However, if placement constraint is incorrectly causing too many nodes to be eliminated this is how you would notice.
  • NodeCapacity: questo vincolo indica che Cluster Resource Manager non è riuscito a inserire le repliche nei nodi indicati perché l'operazione avrebbe fatto superare la capacità del nodo.NodeCapacity: This constraint means that the Cluster Resource Manager couldn’t place the replicas on the indicated nodes because that would put them over capacity.
  • Affinity: questo vincolo indica che non è stato possibile inserire la replica nei nodi interessati perché l'operazione avrebbe generato una violazione del vincolo Affinity.Affinity: This constraint indicates that we couldn’t place the replica on the affected nodes since it would cause a violation of the affinity constraint. Ulteriori informazioni sull'affinità sono riportate in questo articoloMore information on affinity is in this article
  • FaultDomain e UpgradeDomain: questo vincolo elimina i nodi se il posizionamento della replica nei nodi indicati comporterebbe la compressione in un particolare dominio di aggiornamento o di errore.FaultDomain and UpgradeDomain: This constraint eliminates nodes if placing the replica on the indicated nodes would cause packing in a particular fault or upgrade domain. Alcuni esempi che illustrano questo vincolo sono presentati nell'argomento sui vincoli dei domini di aggiornamento e di errore e il relativo comportamentoSeveral examples discussing this constraint are presented in the topic on fault and upgrade domain constraints and resulting behavior
  • PreferredLocation: in genere non si dovrebbe assistere alla rimozione di nodi dalla soluzione da parte di questo vincolo perché per impostazione predefinita funziona come ottimizzazione.PreferredLocation: You shouldn’t normally see this constraint removing nodes from the solution since it runs as an optimization by default. Il vincolo di posizione preferita è presente anche durante gli aggiornamenti.The preferred location constraint is also present during upgrades. Durante l'aggiornamento viene usato per spostare i servizi dove si trovavano quando l'aggiornamento è stato avviato.During upgrade it is used to move services back to where they were when the upgrade started.

Nodi sottoposti a blocklistingBlocklisting Nodes

Un altro messaggio di integrità notificato da Cluster Resource Manager si verifica quando i nodi sono sottoposti a blocklisting.Another health message the Cluster Resource Manager reports is when nodes are blocklisted. È possibile considerare il blocklisting come un vincolo temporaneo che viene applicato automaticamente per l'utente.You can think of blocklisting as a temporary constraint that is automatically applied for you. I nodi vengono sottoposti a blocklisting quando si verificano errori ripetuti durante l'avvio di istanze di quel tipo di servizio.Nodes get blocklisted when they experience repeated failures when launching instances of that service type. I nodi vengono sottoposti a blocklisting in base al tipo di servizio.Nodes are blocklisted on a per-service-type basis. Un nodo può essere sottoposto a blocklisting per un tipo di servizio ma non per un altro.A node may be blocklisted for one service type but not another.

Il blocklisting avviene spesso in fase di sviluppo: alcuni bug causano l'arresto anomalo dell'host servizio all'avvio.You'll see blocklisting kick in often during development: some bug causes your service host to crash on startup. Service Fabric tenta di creare l'host servizio più volte e l'errore continua a verificarsi.Service Fabric tries to create the service host a few times, and the failure keeps occurring. Dopo alcuni tentativi, il nodo viene sottoposto a blocklisting e Cluster Resource Manager tenterà di creare il servizio in un'altra posizione.After a few attempts, the node gets blocklisted, and the Cluster Resource Manager will try to create the service elsewhere. Se l'errore continua a verificarsi in più nodi, è possibile che tutti i nodi validi del cluster vengano bloccati.If that failure keeps happening on multiple nodes, it's possible that all of the valid nodes in the cluster end up blocked. Il blocklisting può anche rimuovere una tale quantità di nodi che non ne resta una quantità sufficiente per avviare correttamente il servizio per soddisfare la scalabilità desiderata.Blocklisting cna also remove so many nodes that not enough can successfully launch the service to meet the desired scale. Verranno visualizzati altri errori o avvisi da Cluster Resource Manager che indicano che il servizio è al di sotto del numero di repliche o di istanze desiderato, nonché messaggi di integrità che indicano qual è l'errore che causa il blocklisting nella prima posizione.You'll typically see additional errors or warnings from the Cluster Resource Manager indicating that the service is below the desired replica or instance count, as well as health messages indicating what the failure is that's leading to the blocklisting in the first place.

Il blocklisting non è una condizione permanente.Blocklisting is not a permanent condition. Dopo alcuni minuti, il nodo viene rimosso dal blocco e Service Fabric potrebbe attivare nuovamente i servizi su tale nodo.After a few minutes, the node is removed from the blocklist and Service Fabric may activate the services on that node again. Se i servizi continuano a dare errore, il nodo è nuovamente sottoposto a blocklisting per quel tipo di servizio.If services continue to fail, the node is blocklisted for that service type again.

Priorità dei vincoliConstraint priorities

Avviso

Modificare le priorità dei vincoli non è consigliato e può avere effetti negativi significativi nel cluster.Changing constraint priorities is not recommended and may have significant adverse effects on your cluster. Le seguenti informazioni vengono fornite come riferimento delle priorità predefinite dei vincoli e il relativo comportamento.The below information is provided for reference of the default constraint priorities and their behavior.

Dato l'elevato numero di questi vincoli si potrebbe ritenere che i vincoli di dominio di errore siano i più importanti del sistema.With all of these constraints, you may have been thinking “Hey – I think that fault domain constraints are the most important thing in my system. Per garantire che non venga violato il vincolo di dominio di errore, si possono violare altri vincoli.In order to ensure the fault domain constraint isn't violated, I’m willing to violate other constraints.”

I vincoli possono essere configurati con diversi livelli di priorità.Constraints can be configured with different priority levels. Si tratta di:These are:

  • “hard” (0)“hard” (0)
  • “soft” (1)“soft” (1)
  • “optimization” (2)“optimization” (2)
  • “off” (-1).“off” (-1).

Per impostazione predefinita, la maggior parte dei vincoli vengono configurati come vincoli "hard".Most of the constraints are configured as hard constraints by default.

La modifica della priorità dei vincoli è insolita.Changing the priority of constraints is uncommon. Ci sono situazioni in cui è necessario modificare le priorità dei vincoli, in genere per risolvere altri bug o comportamenti che incidono sull'ambiente.There have been times where constraint priorities needed to change, usually to work around some other bug or behavior that was impacting the environment. In genere la flessibilità dell'infrastruttura di priorità dei vincoli funziona molto bene, ma non si usa molto spesso.Generally the flexibility of the constraint priority infrastructure has worked very well, but it isn't needed often. La maggior parte delle volte ogni cosa è impostata sulla sua priorità predefinita.Most of the time everything sits at their default priorities.

I livelli di priorità non indicano che uno specifico vincolo verrà violato, né che sarà sempre soddisfatto.The priority levels don't mean that a given constraint will be violated, nor that it will always be met. Le priorità dei vincoli definiscono un ordine in cui i vincoli vengono applicati.Constraint priorities define an order in which constraints are enforced. Le priorità di definiscono i compromessi quando non è possibile soddisfare tutti i vincoli.Priorities define the tradeoffs when it is impossible to satisfy all constraints. In genere tutti i vincoli possono essere soddisfatti a meno che non si verifichi qualche altra cosa nell'ambiente.Usually all the constraints can be satisfied unless there's something else going on in the environment. Alcuni esempi di scenari in cui è necessario violare i vincoli sono i vincoli in conflitto o un numero elevato di errori simultanei.Some examples of scenarios that will lead to constraint violations are conflicting constraints, or large numbers of concurrent failures.

In situazioni avanzate è possibile modificare le priorità dei vincoli.In advanced situations, you can change the constraint priorities. Si immagini ad esempio di voler garantire che venga sempre violata l'affinità quando è necessario risolvere problemi di capacità dei nodi.For example, say you wanted to ensure that affinity would always be violated when necessary to solve node capacity issues. A tale scopo è possibile impostare la priorità del vincolo di affinità su "Soft" (1) e lasciare il vincolo di capacità impostato su "Hard" (0).To achieve this, you could set the priority of the affinity constraint to “soft” (1) and leave the capacity constraint set to “hard” (0).

I valori di priorità predefiniti per i diversi vincoli sono specificati nella seguente configurazione:The default priority values for the different constraints are specified in the following config:

ClusterManifest.xmlClusterManifest.xml

        <Section Name="PlacementAndLoadBalancing">
            <Parameter Name="PlacementConstraintPriority" Value="0" />
            <Parameter Name="CapacityConstraintPriority" Value="0" />
            <Parameter Name="AffinityConstraintPriority" Value="0" />
            <Parameter Name="FaultDomainConstraintPriority" Value="0" />
            <Parameter Name="UpgradeDomainConstraintPriority" Value="1" />
            <Parameter Name="PreferredLocationConstraintPriority" Value="2" />
        </Section>

mediante ClusterConfig.json per le distribuzioni autonome o Template.json per i cluster ospitati in Azure:via ClusterConfig.json for Standalone deployments or Template.json for Azure hosted clusters:

"fabricSettings": [
  {
    "name": "PlacementAndLoadBalancing",
    "parameters": [
      {
          "name": "PlacementConstraintPriority",
          "value": "0"
      },
      {
          "name": "CapacityConstraintPriority",
          "value": "0"
      },
      {
          "name": "AffinityConstraintPriority",
          "value": "0"
      },
      {
          "name": "FaultDomainConstraintPriority",
          "value": "0"
      },
      {
          "name": "UpgradeDomainConstraintPriority",
          "value": "1"
      },
      {
          "name": "PreferredLocationConstraintPriority",
          "value": "2"
      }
    ]
  }
]

Vincoli di dominio di errore e di dominio di aggiornamentoFault domain and upgrade domain constraints

Cluster Resource Manager distribuisce i servizi tra i domini di errore e di aggiornamento.The Cluster Resource Manager wants to keep services spread out among fault and upgrade domains. Viene modellato come un vincolo all'interno del motore di Cluster Resource Manager.It models this as a constraint inside the Cluster Resource Manager’s engine. Per altre informazioni sull'uso e sul comportamento specifico, vedere l'articolo sulla configurazione del cluster.For more information on how they are used and their specific behavior, check out the article on cluster configuration.

Cluster Resource Manager potrebbe dover comprimere un paio di repliche in un dominio di aggiornamento per far fronte ad aggiornamenti, errori o altre violazioni di vincoli.The Cluster Resource Manager may need to pack a couple replicas into an upgrade domain in order to deal with upgrades, failures, or other constraint violations. La compressione in domini di errore o di aggiornamento si verifica in genere quando sono presenti molti errori o altra varianza nel sistema che impedisce il corretto posizionamento.Packing into fault or upgrade domains normally happens only when there are several failures or other churn in the system preventing correct placement. Se si desidera impedire la compressione anche durante queste situazioni, è possibile usare il criterio di selezione RequireDomainDistribution.If you wish to prevent packing even during these situations, you can utilize the RequireDomainDistribution placement policy. Si noti che questo può influire sulla disponibilità e l'affidabilità del servizio come effetto collaterale e pertanto valutarlo attentamente.Note that this may affect service availability and reliability as a side effect, so consider it carefully.

Se l'ambiente è configurato correttamente tutti i vincoli vengono completamente rispettati anche durante gli aggiornamenti.If the environment is configured correctly, all constraints are fully respected, even during upgrades. L'elemento fondamentale è che Cluster Resource Manager controlla i vincoli.The key thing is that the Cluster Resource Manager is watching out for your constraints. Quando rileva una violazione la segnala immediatamente e tenta di risolvere il problema.When it detects a violation it immediately reports it and tries to correct the issue.

Il vincolo di posizione preferitaThe preferred location constraint

Il vincolo PreferredLocation è leggermente diverso, perché ha due diversi usi.The PreferredLocation constraint is a little different, as it has two different uses. Un uso di questo vincolo avviene durante gli aggiornamenti dell'applicazione.One use of this constraint is during application upgrades. Cluster Resource Manager gestisce automaticamente questo vincolo durante gli aggiornamenti.The Cluster Resource Manager automatically manages this constraint during upgrades. Viene usato per assicurare che quando gli aggiornamenti vengono completati le repliche tornino alle posizioni iniziali.It is used to ensure that when upgrades are complete that replicas return to their initial locations. L'altro uso del vincolo PreferredLocation è per il PreferredPrimaryDomain criterio di selezione.The other use of the PreferredLocation constraint is for the PreferredPrimaryDomain placement policy. Entrambi sono ottimizzazioni e il vincolo PreferredLocation è l'unico vincolo impostato su "Optimization" per impostazione predefinita.Both of these are optimizations, and hence the PreferredLocation constraint is the only constraint set to "Optimization" by default.

AggiornamentiUpgrades

Cluster Resource Manager facilita le cose anche durante gli aggiornamenti di applicazioni e cluster, quando ha due compiti:The Cluster Resource Manager also helps during application and cluster upgrades, during which it has two jobs:

  • assicurarsi che non vengano compromesse le regole del clusterensure that the rules of the cluster are not compromised
  • agevolare il completamento dell'aggiornamento senza intoppitry to help the upgrade go smoothly

Applicazione continua delle regoleKeep enforcing the rules

La cosa principale da tenere presente è che le regole, vale a dire i rigidi vincoli su aspetti come il posizionamento e le capacità, vengono applicate anche durante gli aggiornamenti.The main thing to be aware of is that the rules – the strict constraints like placement constraints and capacities - are still enforced during upgrades. I vincoli di posizionamento assicurano che i carichi di lavoro siano eseguiti solo dove consentito, anche durante gli aggiornamenti.Placement constraints ensure that your workloads only run where they are allowed to, even during upgrades. Quando i servizi sono altamente vincolati, gli aggiornamenti possono richiedere più tempo.When services are highly constrained, upgrades can take longer. Quando il servizio o il nodo su che è in esecuzione diventa inattivo per un aggiornamento possono esserci poche opzioni disponibili.When the service or the node it is running on is brought down for an update there may be few options for where it can go.

Sostituzioni intelligentiSmart replacements

Quando viene avviato un aggiornamento, Resource Manager crea un'istantanea del layout corrente del cluster.When an upgrade starts, the Resource Manager takes a snapshot of the current arrangement of the cluster. Quando un dominio di aggiornamento viene completato, tenta di riportare i servizi presenti nel dominio di aggiornamento alla disposizione originale.As each Upgrade Domain completes, it attempts to return the services that were in that Upgrade Domain to their original arrangement. In questo modo durante l'aggiornamento vi sono al massimo due transizioni per un servizio.This way there are at most two transitions for a service during the upgrade. È presente uno spostamento all'esterno dal nodo interessato e quindi uno all'interno.There is one move out of the affected node and one move back in. Riportare il cluster o il servizio come si trovava prima dell'aggiornamento assicura anche che l'aggiornamento non influenzi il layout del cluster.Returning the cluster or service to how it was before the upgrade also ensures the upgrade doesn’t impact the layout of the cluster.

Varianza ridottaReduced churn

Un altro evento che si verifica durante gli aggiornamenti è che Cluster Resource Manager disattiva il bilanciamento.Another thing that happens during upgrades is that the Cluster Resource Manager turns off balancing. Impedendo il bilanciamento si evitano inutili effetti collaterali dell'aggiornamento, come lo spostamento di servizi in nodi che sono stati svuotati per l'aggiornamento.Preventing balancing prevents unnecessary reactions to the upgrade itself, like moving services into nodes that were emptied for the upgrade. Se l'aggiornamento in questione è un aggiornamento del cluster, viene disattivato il bilanciamento dell'intero cluster durante l'aggiornamento.If the upgrade in question is a Cluster upgrade, then the entire cluster is not balanced during the upgrade. Controlli dei vincoli rimangono attivi, viene disattivato solo lo spostamento in base al bilanciamento proattivo delle metriche.Constraint checks stay active, only movement based on the proactive balancing of metrics is disabled.

Capacità in buffering e aggiornamentoBuffered Capacity & Upgrade

In genere si vuole che l'aggiornamento sia completato anche se il cluster presenta vincoli o ha quasi raggiunto il massimo livello di utilizzo.Generally you want the upgrade to complete even if the cluster is constrained or close to full. Poter gestire la capacità del cluster durante gli aggiornamenti è ancora più importante che durante il normale funzionamento.Managing the capacity of the cluster is even more important during upgrades than usual. A seconda del numero di domini di aggiornamento, tra il 5 e il 20 per cento della capacità deve essere migrata mentre l'aggiornamento viene distribuito nel cluster.Depending on the number of upgrade domains, between 5 and 20 percent of capacity must be migrated as the upgrade rolls through the cluster. Questa percentuale di lavoro deve essere trasferita da qualche parte.That work has to go somewhere. E qui diventa utile la nozione di buffer di capacità.This is where the notion of buffered capacities is useful. Durante il normale funzionamento il buffer di capacità viene rispettato.Buffered capacity is respected during normal operation. Cluster Resource Manager può riempire i nodi fino alla capacità totale (consumando il buffer) durante gli aggiornamenti, se necessario.The Cluster Resource Manager may fill nodes up to their total capacity (consuming the buffer) during upgrades if necessary.

Passaggi successiviNext steps