Partager via


Équilibrage de votre cluster Service Fabric

Service Fabric Cluster Resource Manager permet de modifier la charge dynamique, de réagir aux ajouts ou aux suppressions de nœuds ou de services. Il corrige également automatiquement les violations de contrainte et rééquilibre de façon proactive le cluster. Mais à quelle fréquence ces actions sont-elles effectuées, et quel en est l’élément déclencheur ?

Il existe trois différentes catégories de travail exécutées par le Gestionnaire des ressources clusters :

  • Positionnement : cette étape a trait au placement des réplicas avec état ou des instances sans état manquants. Le positionnement inclut non seulement les nouveaux services, mais aussi les réplicas avec état ou les instances sans état qui ont échoué. La suppression et l’annulation des réplicas ou des instances sont gérées ici.
  • Vérifications de contrainte : cette étape recherche les violations des différentes contraintes (règles) de placement au sein du système et apporte les corrections nécessaires. Le non-dépassement de la capacité des nœuds et le respect des contraintes de positionnement d’un service constituent des exemples de règles.
  • Équilibrage : cette étape vérifie si un rééquilibrage est nécessaire en fonction du niveau d’équilibrage désiré qui a été configuré pour différentes métriques. Si c’est le cas, elle tente de trouver une disposition plus équilibrée dans le cluster.

Configuration des minuteurs Cluster Resource Manager

Le premier ensemble de contrôles autour d’équilibrage est un ensemble de minuteurs. Ces minuteurs déterminent la fréquence à laquelle Cluster Resource Manager examine le cluster et mène des actions correctives.

Chacun de ces différents types de corrections offerts par Cluster Resource Manager est contrôlé par un minuteur différent qui détermine sa fréquence. Lorsque chaque minuteur se déclenche, la tâche est planifiée. Par défaut, Resource Manager :

  • analyse son état et applique des mises à jour (comme l’enregistrement de l’arrêt d’un nœud) tous les dixièmes de seconde ;
  • définit l’indicateur de contrôle du placement chaque seconde ;
  • définit l’indicateur de contrôle de la contrainte chaque seconde
  • définit l’indicateur d’équilibrage toutes les cinq secondes.

Voici des exemples de configuration qui définit ces minuteurs :

ClusterManifest.xml :

        <Section Name="PlacementAndLoadBalancing">
            <Parameter Name="PLBRefreshGap" Value="0.1" />
            <Parameter Name="MinPlacementInterval" Value="1.0" />
            <Parameter Name="MinConstraintCheckInterval" Value="1.0" />
            <Parameter Name="MinLoadBalancingInterval" Value="5.0" />
        </Section>

via ClusterConfig.json pour les déploiements autonomes ou Template.json pour les clusters hébergés sur Azure :

"fabricSettings": [
  {
    "name": "PlacementAndLoadBalancing",
    "parameters": [
      {
          "name": "PLBRefreshGap",
          "value": "0.10"
      },
      {
          "name": "MinPlacementInterval",
          "value": "1.0"
      },
      {
          "name": "MinConstraintCheckInterval",
          "value": "1.0"
      },
      {
          "name": "MinLoadBalancingInterval",
          "value": "5.0"
      }
    ]
  }
]

À l’heure actuelle, Cluster Resource Manager effectue uniquement l’une de ces actions à la fois, séquentiellement. C’est pourquoi nous faisons référence à ces minuteurs en tant qu’« intervalles minimaux » et les actions effectuées lorsque les minuteurs sont déclenchés représentent des « indicateurs de paramètre ». Par exemple, Cluster Resource Manager traite les demandes de création de services en attente avant d’équilibrer le cluster. Comme en témoignent les intervalles de temps par défaut spécifiés, Cluster Resource Manager analyse fréquemment ce qu’il a à faire. Par conséquent, les modifications apportées à la fin de chaque étape sont généralement mineures. L’apport fréquent de modifications mineures rend le Gestionnaire des ressources clusters réactif aux événements qui se produisent dans le cluster. Les compteurs par défaut assurent en partie un traitement par lot, car un grand nombre d’événements du même type ont tendance à se produire simultanément.

Par exemple, lorsque des nœuds échouent, ils se produisent simultanément dans des domaines d’erreur entiers. Tous ces échecs sont capturés à la prochaine mise à jour de l’état après PLBRefreshGap. Les corrections sont déterminées lorsque les prochaines opérations de placement, de contrôle des contraintes et d’équilibrage sont exécutées. Par défaut, le Gestionnaire des ressources clusters n’analyse pas les modifications qui ont eu lieu sur plusieurs heures dans le cluster et n’essaie pas de les traiter toutes en même temps. En effet, cela entraînerait des pics d’activité momentanés.

Cluster Resource Manager a également besoin d’informations supplémentaires pour déterminer si le cluster est déséquilibré. Nous disposons pour cela de deux autres éléments de configuration : les seuils d’équilibrage et les seuils d’activité.

Seuils d’équilibrage

Un seuil d’équilibrage est le principal contrôle utilisé pour déclencher le rééquilibrage. Le seuil d’équilibrage pour une métrique est un ratio. Si la charge d’une mesure sur le nœud le plus chargé, divisée par la quantité de charge sur le nœud le moins chargé, dépasse la valeur BalancingThreshold de cette mesure, le cluster est considéré comme déséquilibré. L’équilibrage est alors déclenché lorsque Cluster Resource Manager effectue sa vérification suivante. Le minuteur MinLoadBalancingInterval détermine la fréquence à laquelle Cluster Resource Manager doit vérifier si un rééquilibrage est nécessaire. Cette vérification ne signifie pas que quelque chose se produit.

Les seuils d’équilibrage sont définis par métrique dans le cadre de la définition du cluster. Pour découvrir plus d’informations sur les métriques, consultez l’article sur les métriques.

ClusterManifest.xml

    <Section Name="MetricBalancingThresholds">
      <Parameter Name="MetricName1" Value="2"/>
      <Parameter Name="MetricName2" Value="3.5"/>
    </Section>

via ClusterConfig.json pour les déploiements autonomes ou Template.json pour les clusters hébergés sur Azure :

"fabricSettings": [
  {
    "name": "MetricBalancingThresholds",
    "parameters": [
      {
          "name": "MetricName1",
          "value": "2"
      },
      {
          "name": "MetricName2",
          "value": "3.5"
      }
    ]
  }
]

Diagramme montrant un exemple de seuil d’équilibrage de nœud

Dans cet exemple, chaque service utilise une unité d’une mesure donnée. Dans l’exemple du haut, la charge maximale sur un nœud est égale à 5 et la valeur minimale à 2. Supposons que le seuil d’équilibrage pour cette mesure soit égal à 3. Étant donné que le ratio dans le cluster est de 5/2 = 2,5, soit une valeur inférieure au seuil d’équilibrage de 3, le cluster est équilibré. Aucun équilibrage n’est déclenché lorsque Cluster Resource Manager effectue sa vérification.

Dans l’exemple du bas, la charge maximale sur un nœud est égale à 10 et la valeur minimale à 2, ce qui donne un ratio de 5. Cette valeur étant supérieure au seuil d’équilibrage de 3 spécifié pour cette mesure, l’exécution d’un rééquilibrage sera planifiée lors du prochain déclenchement du minuteur d’équilibrage. Dans une telle situation, une partie de la charge est généralement répartie sur le Nœud 3. Comme le Gestionnaire des ressources clusters du Service Fabric utilise une approche prudente, une partie de la charge peut également être répartie sur le Nœud 2.

Diagramme montrant une action prise en réponse à un seuil d’équilibrage.

Remarque

« L’équilibrage » adopte deux stratégies différentes pour gérer la charge de votre cluster. La stratégie par défaut utilisée par Cluster Resource Manager consiste à répartir la charge sur les nœuds du cluster. L’autre stratégie est la défragmentation. La défragmentation se produit en même temps que l’équilibrage. Les stratégies d’équilibrage et de défragmentation peuvent être utilisées pour différentes mesures au sein du même cluster. Un service peut avoir à la fois des mesures d’équilibrage et de défragmentation. Pour les métriques de défragmentation, le ratio des charges dans le cluster déclenche un rééquilibrage lorsqu’il se situe sous le seuil d’équilibrage.

L’obtention d’une valeur inférieure au seuil d’équilibrage ne constitue pas un objectif explicite. Les seuils d’équilibrage ne sont qu’un déclencheur. Lors de l’équilibrage, Cluster Resource Manager détermine les améliorations possibles, le cas échéant. Une analyse d’équilibrage ne signifie pas que des données sont déplacées. Parfois, le cluster est déséquilibré mais comporte trop de contraintes pour être corrigé. Les améliorations peuvent également nécessiter des mouvements trop coûteux.

seuils d’activité

Parfois, même si les nœuds sont relativement déséquilibrés, la quantité totale de charge dans le cluster est faible. La charge insuffisante peut correspondre à une baisse temporaire ou être due au fait qu’il s’agit d’un nouveau cluster qui vient juste d’être amorcé. Dans les deux cas, il n’est pas forcément judicieux de passer du temps à équilibrer le cluster, car les gains seront minimes. Si le cluster a fait l’objet d’un équilibrage, vous consommerez des ressources réseau et de calcul pour déplacer des éléments sans que cela ait un impact réel. Pour éviter ces mouvements inutiles, il existe un autre contrôle appelé « seuil d’activité ». Les seuils d’activité vous permettent de spécifier une limite inférieure absolue pour l’activité. Lorsqu’aucun nœud ne dépasse ce seuil, l’équilibrage n’est pas déclenché, même si le seuil d’équilibrage est atteint.

Supposons que nous conservons notre seuil d’équilibrage de 3 pour cette mesure. Supposons également que nous avons un seuil d’activité de 1 536. Dans le premier cas, bien que le cluster soit déséquilibré selon le seuil d’équilibrage, comme aucun nœud n’atteint le seuil d’activité, il ne se passe rien. Dans l’exemple du bas, le Nœud 1 dépasse le seuil d’activité. Comme le seuil d’équilibrage et le seuil d’activité pour la mesure sont tous deux dépassés, un équilibrage est planifié. Prenons pour exemple le schéma suivant :

Diagramme montrant un exemple de seuil d’activité de nœud.

Au même titre que les seuils d’équilibrage, les seuils d’activité sont définis par métrique par l’intermédiaire de la définition du cluster :

ClusterManifest.xml

    <Section Name="MetricActivityThresholds">
      <Parameter Name="Memory" Value="1536"/>
    </Section>

via ClusterConfig.json pour les déploiements autonomes ou Template.json pour les clusters hébergés sur Azure :

"fabricSettings": [
  {
    "name": "MetricActivityThresholds",
    "parameters": [
      {
          "name": "Memory",
          "value": "1536"
      }
    ]
  }
]

Les seuils d’équilibrage et d’activité sont tous deux liés à une mesure spécifique : l’équilibrage n’est déclenché que si le seuil d’équilibrage et le seuil d’activité sont dépassés pour la même mesure.

Notes

Lorsqu’elle n’est pas spécifiée, la valeur du seuil d’équilibrage d’une métrique est de 1, et la valeur du seuil d’activité est de 0. Cela signifie que le gestionnaire de ressources du cluster va tenter de maintenir le parfait équilibre de cette métrique pour toutes les charges. Si vous utilisez des métriques personnalisées, nous vous recommandons de définir explicitement vos propres seuils d’équilibrage et d’activité pour vos métriques.

Équilibrage de plusieurs services en même temps

La détermination de l’état de déséquilibre du cluster est une décision qui porte sur l’ensemble du cluster. Cependant, nous le corrigeons en déplaçant des instances et des réplicas de service individuels. Logique, n’est-ce pas ? Si la mémoire est empilée sur un nœud, plusieurs réplicas ou instances peuvent être impliqués. Pour corriger le déséquilibre, il peut donc être nécessaire de déplacer les réplicas avec état ou les instances sans état qui utilisent la mesure déséquilibrée.

Occasionnellement pourtant, un service qui n’était pas déséquilibré lui-même est déplacé (voir la discussion sur les poids locaux et globaux plus haut). Pourquoi un service serait-il déplacé si toutes les mesures de ce service ont été équilibrées ? Examinons un exemple :

  • Supposons qu’il existe quatre services : Service 1, Service 2, Service 3 et Service 4.
  • Le Service 1 signale les métriques Métrique 1 et Métrique 2.
  • Le Service 2 signale les métriques Métrique 2 et Métrique 3.
  • Le Service 3 signale les métriques Métrique 3 et Métrique 4.
  • Le Service 4 signale la Métrique 99.

Nous n’avons pas vraiment quatre services indépendants, mais plutôt trois services qui sont liés et un qui est indépendant.

Diagramme montrant comment équilibrer plusieurs services en même temps.

En raison de cette chaîne, il est donc possible qu’un déséquilibre dans les mesures 1 à 4 provoque le déplacement de réplicas ou d’instances appartenant aux services 1 à 3. Nous savons également qu’un déséquilibre de la Métrique 1, 2 ou 3 ne peut pas provoquer de déplacements dans le Service 4. Cela n’aurait aucun intérêt, puisque le déplacement de réplicas ou d’instances appartenant au Service 4 n’a pas la moindre incidence sur l’équilibre des Métriques 1 à 3.

Cluster Resource Manager identifie automatiquement les services associés. Ajouter, supprimer ou modifier les mesures des services peut avoir un impact sur leurs relations. Par exemple, entre deux équilibrages, Service 2 peut avoir été mis à jour pour supprimer Métrique 2. Cela interrompt la chaîne entre le Service 1 et le Service 2. Au lieu de deux groupes de services liés, vous en avez à présent trois :

Schéma montrant que le Gestionnaire des ressources clusters identifie les services associés.

Équilibrage d’un cluster par type de nœud

Comme nous l’avons décrit dans les sections précédentes, les principaux contrôles du déclenchement de rééquilibrage sont les seuils d’activité, les seuils d’équilibrage et les minuteurs. Le Gestionnaire des ressources clusters de Service Fabric fournit un contrôle plus granulaire sur le déclenchement du rééquilibrage en spécifiant des paramètres par type de nœud et en autorisant le déplacement uniquement sur les types de nœuds déséquilibrés. Le principal avantage de l’équilibrage par type de nœud est de permettre une amélioration des performances sur les types de nœuds qui nécessitent des règles d’équilibrage plus strictes, sans dégrader les performances sur d’autres types de nœuds. La fonctionnalité contient deux parties principales :

  • La détection du déséquilibre est effectuée par type de nœud. Le calcul du déséquilibre précédemment global est calculé pour chaque type de nœud. Si tous les types de nœuds sont équilibrés, le CRM ne déclenche pas la phase d’équilibrage. Sinon, si au moins un type de nœud est déséquilibré, une phase d’équilibrage est nécessaire.
  • L’équilibrage déplace les réplicas uniquement sur des types de nœuds déséquilibrés, les autres types de nœuds ne sont pas affectés par la phase d’équilibrage.

Impact de l’équilibrage par type de nœud sur un cluster

Pendant l’équilibrage d’un cluster par type de nœud, le Gestionnaire des ressources clusters de Service Fabric calcule l’état de déséquilibre pour chaque type de nœud. Si au moins un type de nœud est déséquilibré, la phase d’équilibrage est déclenchée. La phase d’équilibrage ne déplace pas les réplicas sur les types de nœuds déséquilibrés lorsque l’équilibrage est temporairement suspendu sur ces types de nœuds (par exemple, l’intervalle d’équilibrage minimal n’a pas été atteint depuis une phase d’équilibrage précédente). La détection d’un état déséquilibré utilise des mécanismes courants déjà disponibles pour l’équilibrage de cluster classique, mais améliore la granularité et la flexibilité de la configuration. Les mécanismes utilisés pour l’équilibrage par type de nœud afin de détecter le déséquilibre sont fournis dans la liste ci-dessous :

  • Les seuils d’équilibrage de métriques par type de nœud sont des valeurs jouant un rôle similaire au seuil d’équilibrage défini globalement utilisé dans l’équilibrage classique. Le ratio de charge de métrique minimale et maximale est calculé pour chaque type de nœud. Si ce ratio d’un type de nœud est supérieur au seuil d’équilibrage défini du type de nœud, le type de nœud est marqué comme déséquilibré. Pour découvrir plus d’informations sur la configuration des seuils d’activité de métrique par type de nœud, veuillez consulter la section Seuils d’équilibrage par type de nœud.
  • Les seuils d’activité de métrique par type de nœud sont des valeurs jouant un rôle similaire au seuil d’activité défini globalement utilisé dans l’équilibrage classique. La charge de métrique maximale est calculée pour chaque type de nœud. Si la charge maximale d’un type de nœud est supérieure au seuil d’activité défini pour ce type de nœud, le type de nœud est marqué comme déséquilibré. Pour découvrir plus d’informations sur la configuration des seuils d’activité de métrique par type de nœud, veuillez consulter la section Seuils d’activité par type de nœud.
  • L’intervalle d’équilibrage minimal par type de nœud a un rôle similaire à l’intervalle d’équilibrage minimal défini globalement. Pour chaque type de nœud, le Gestionnaire des ressources clusters conserve le timestamp du dernier équilibrage. Deux phases d’équilibrage consécutives n’ont pas pu être exécutées sur un type de nœud dans l’intervalle d’équilibrage minimal défini. Pour découvrir plus d’informations sur la configuration de l’intervalle d’équilibrage minimal par type de nœud, veuillez consulter la section Intervalle d’équilibrage minimal par type de nœud.

Décrire l’équilibrage par type de nœud

Pour activer l’équilibrage par type de nœud, le paramètre SeparateBalancingStrategyPerNodeType doit être activé dans un manifeste de cluster. En outre, la fonctionnalité de sous-cluster doit également être activée. Exemple de section PlacementAndLoadBalancing d’un manifeste de cluster pour l’activation de la fonctionnalité :

<Section Name="PlacementAndLoadBalancing">
    <Parameter Name="SeparateBalancingStrategyPerNodeType" Value="true" />
    <Parameter Name="SubclusteringEnabled" Value="true" />
    <Parameter Name="SubclusteringReportingPolicy" Value="1" />
</Section>

ClusterConfig.json pour les déploiements autonomes ou Template.json pour les clusters hébergés sur Azure :

"fabricSettings": [
  {
    "name": "PlacementAndLoadBalancing",
    "parameters": [
      {
          "name": "SeparateBalancingStrategyPerNodeType",
          "value": "true"
      },
      {
          "name": "SubclusteringEnabled",
          "value": "true"
      },
      {
          "name": "SubclusteringReportingPolicy",
          "value": "1"
      },
    ]
  }
]

Comme nous l’avons décrit dans la section précédente, les seuils et les intervalles peuvent être spécifiés par type de nœud. Pour découvrir plus d’informations sur la mise à jour d’un paramètre spécifique, veuillez consulter les sections suivantes :

Seuils d’équilibrage par type de nœud

Le seuil d’équilibrage de métrique peut être défini par type de nœud afin d’augmenter la granularité à partir de la configuration de l’équilibrage. Les seuils d’équilibrage ont un type à virgule flottante, car ils représentent un seuil pour le rapport entre la valeur de charge maximale et la valeur de charge minimale au sein d’un type de nœud particulier. Les seuils d’équilibrage sont définis dans la section PlacementAndLoadBalancingOverrides pour chaque type de nœud :

<NodeTypes>
    <NodeType Name="NodeType1">
        <PlacementAndLoadBalancingOverrides>
            <MetricBalancingThresholdsPerNodeType>
                <BalancingThreshold Name="Metric1" Value="2.5">
                <BalancingThreshold Name="Metric2" Value="4">
                <BalancingThreshold Name="Metric3" Value="3.25">
            </MetricBalancingThresholdsPerNodeType>
        </PlacementAndLoadBalancingOverrides>
    </NodeType>
</NodeTypes>

Si le seuil d’équilibrage d’une métrique n’est pas défini pour un type de nœud, le seuil hérite de la valeur du seuil d’équilibrage de métrique défini globalement dans la section PlacementAndLoadBalancing. Sinon, si le seuil d’équilibrage d’une métrique n’est pas défini ni pour un type de nœud, ni globalement dans une section PlacementAndLoadBalancing, le seuil aura la valeur par défaut de un.

Seuils d’activité par type de nœud

Le seuil d’activité de métrique peut être défini par type de nœud afin d’augmenter la granularité de la configuration de l’équilibrage. Les seuils d’activité ont un type entier, car ils représentent le seuil de la valeur de charge maximale au sein d’un type de nœud particulier. Les seuils d’activité sont définis dans la section PlacementAndLoadBalancingOverrides pour chaque type de nœud :

<NodeTypes>
    <NodeType Name="NodeType1">
        <PlacementAndLoadBalancingOverrides>
            <MetricActivityThresholdsPerNodeType>
                <ActivityThreshold Name="Metric1" Value="500">
                <ActivityThreshold Name="Metric2" Value="40">
                <ActivityThreshold Name="Metric3" Value="1000">
            </MetricActivityThresholdsPerNodeType>
        </PlacementAndLoadBalancingOverrides>
    </NodeType>
</NodeTypes>

Si le seuil d’activité d’une métrique n’est pas défini pour un type de nœud, le seuil hérite de la valeur du seuil à partir de l’activité de métrique défini globalement dans la section PlacementAndLoadBalancing. Sinon, si le seuil d’activité d’une métrique n’est pas défini ni pour un type de nœud ni globalement dans une section PlacementAndLoadBalancing, le seuil aura la valeur zéro par défaut.

Intervalle d’équilibrage minimal par type de nœud

L’intervalle d’équilibrage minimal peut être défini par type de nœud afin d’augmenter la granularité de la configuration de l’équilibrage. L’intervalle d’équilibrage minimal a un type entier, car il représente la durée minimale qui doit s’écouler avant deux cycles d’équilibrage consécutifs sur un même type de nœud. L’intervalle d’équilibrage minimal est défini dans la section PlacementAndLoadBalancingOverrides pour chaque type de nœud :

<NodeTypes>
    <NodeType Name="NodeType1">
        <PlacementAndLoadBalancingOverrides>
            <MinLoadBalancingIntervalPerNodeType>100</MinLoadBalancingIntervalPerNodeType>
        </PlacementAndLoadBalancingOverrides>
    </NodeType>
</NodeTypes>

Si l’intervalle d’équilibrage minimal n’est pas défini pour un type de nœud, il hérite de la valeur à partir de l’intervalle d’équilibrage minimal défini globalement dans la section PlacementAndLoadBalancing. Sinon, si l’intervalle minimal n’est pas défini ni pour un type de nœud ni globalement dans une section PlacementAndLoadBalancing, l’intervalle minimal a la valeur zéro par défaut, ce qui indique qu’aucune pause n’est nécessaire entre les cycles d’équilibrage consécutifs.

Exemples

Exemple 1

Imaginons un cas où un cluster contient deux types de nœud, un type de nœud A et un type de nœud B. Tous les services signalent la même métrique et ils sont répartis entre ces types de nœud et leurs statistiques de charge sont par conséquent différentes. Dans l’exemple, le type de nœud A a une charge maximale de 300 et un minimum de 100, et le type de nœud B a une charge maximale de 700 et une charge minimale de 500 :

Diagramme montrant un exemple de seuil d’équilibrage de type de nœud avec deux types de nœud.

Le client a détecté que les charges de travail de deux types de nœuds ont des besoins en équilibrage différents et a décidé de définir des seuils d’équilibrage et d’activité différents par type de nœud. Le seuil d’équilibrage du type de nœud A est de 2,5 et le seuil d’activité est de 50. Pour le type de nœud B, le client a défini le seuil d’équilibrage sur 1,2 et le seuil d’activité sur 400.

Lors de la détection du déséquilibre pour le cluster de cet exemple, les deux types de nœuds ne respectent pas le seuil d’activité. La charge maximale de type de nœud A de 300 est supérieure au seuil d’activité défini de 50. La charge maximale de type de nœud B de 700 est supérieure au seuil d’activité défini de 400. Le type de nœud A ne respecte pas les critères de seuil d’équilibrage, car le ratio actuel de charge maximale et minimale est de 3 et le seuil d’équilibrage est de 2,5. En face, le type de nœud B respecte les critères de seuil d’équilibrage, car le ratio actuel de charge maximale et minimale pour ce type de nœud est de 1,2, mais le seuil d’équilibrage est de 1,4. L’équilibrage est requis uniquement pour les réplicas dans le type de nœud A, et le seul ensemble de réplicas éligibles aux mouvements pendant la phase d’équilibrage sont les réplicas placés dans le type de nœud A.

Exemple 2

Imaginons un cas où un cluster contient trois types de nœud, un type de nœud A, B et C. Tous les services signalent la même métrique et ils sont répartis entre ces types de nœud et leurs statistiques de charge sont par conséquent différentes. Dans l’exemple, le type de nœud A a une charge maximale de 600 et minimale de 100, le type de nœud B a une charge maximale de 900 et une charge minimale de 100, et le type de nœud C a une charge maximale de 600 et une charge minimale de 300 :

Diagramme montrant un exemple de seuil d’équilibrage de type de nœud avec trois types de nœud.

Le client a détecté que les charges de travail de ces types de nœuds ont des besoins en équilibrage différents et a décidé de définir des seuils d’équilibrage et d’activité différents par type de nœud. Le seuil d’équilibrage du type de nœud A est de 5 et le seuil d’activité est de 700. Pour le type de nœud B, le client a défini le seuil d’équilibrage sur 10 et le seuil d’activité sur 200. Pour le type de nœud C, le client a défini le seuil d’équilibrage sur 2 et le seuil d’activité sur 300.

La charge maximale du type de nœud A de 600 est inférieure au seuil d’activité défini de 700, de sorte que le type de nœud A n’est pas équilibré. La charge maximale du type de nœud B de 900 est supérieure au seuil d’activité défini de 200. Le type de nœud B ne respecte pas les critères de seuil d’activité. La charge maximale du type de nœud C de 600 est supérieure au seuil d’activité défini de 300. Le type de nœud C ne respecte pas les critères de seuil d’activité. Le type de nœud B respecte les critères de seuil d’équilibrage, car le ratio actuel de charge maximale et minimale pour ce type de nœud est de 9, mais le seuil d’équilibrage est de 10. Le type de nœud C ne respecte pas les critères de seuil d’équilibrage, car le ratio actuel de charge maximale et minimale est de 2 et le seuil d’équilibrage est de 2. L’équilibrage n’est requis que pour les réplicas du type de nœud C. Le seul ensemble de réplicas éligibles aux mouvements pendant la phase d’équilibrage correspond aux réplicas placés dans le type de nœud C.

Étapes suivantes

  • Les métriques représentent la façon dont Service Fabric Cluster Resource Manager gère la consommation et la capacité du cluster. Pour découvrir plus d’informations sur ces métriques et la façon de les configurer, consulter l’article sur les métriques
  • Le coût du mouvement est une façon de signaler à Cluster Resource Manager que certains services sont plus coûteux à déplacer que d’autres. Pour découvrir plus d’informations sur le coût lié aux déplacements, voir l’article sur ce thème
  • Cluster Resource Manager a plusieurs limitations que vous pouvez configurer pour ralentir l’évolution dans le cluster. Elles ne sont normalement pas nécessaires, mais, si vous en avez besoin, vous pouvez découvrir plus d’informations à ce sujet dans l’article sur la limitation avancée
  • Le Gestionnaire des ressources clusters peut reconnaître et gérer le sous-clustering. Le sous-clustering peut se produire lorsque vous utilisez des contraintes de placement et un équilibrage. Pour connaître l’impact potentiel du sous-clustering sur l’équilibrage et apprendre à le gérer, consulter l’article sur le sous-clustering