Dela via


Storlekskonfiguration för tillståndskänslig tjänsts replikuppsättning

Replikuppsättningens storlek för tillståndskänsliga tjänster konfigureras med hjälp av två parametrar.

  • TargetReplicaSetSize – antal repliker som systemet skapar och underhåller för varje replikuppsättning för en tjänst
  • MinReplicaSetSize – minsta tillåtna antal repliker för varje replikuppsättning för en tjänst

Den grundläggande idén bakom dessa två parametrar är att tillåta en sådan konfiguration så att minst två samtidiga fel kan inträffa utan att partitionen går i kvorumförlust. Denna situation kan inträffa vid en planerad failover (uppgradering som tar ned noden/repliken) och en oplanerad failover (nodkrasch).

Om till exempel TargetReplicaSetSize =5, MinReplicaSetSize =3, så finns det normalt (utan fel) fem repliker i Service Fabrics-vyn för replikuppsättningen. När fel inträffar minskar Service Fabrics-vyn för replikuppsättningen tills den når MinReplicaSetSize.

Service Fabric använder majoritetskvorumet för antalet repliker som bibehålls i denna vy, så majoritetskvorum för MinReplicaSetSize är den lägsta nivån av tillförlitlighet för varje åtgärd. Om det totala antalet repliker sjunker under majoritetskvorumet för MinReplicaSetSize tillåts inte ytterligare skrivningar. Det är viktigt att observera att när en tjänst befinner sig i kvorumförlust kan det krävas att repliker återkommer i en specifik ordning för att tjänsten ska komma ur kvorumförlust.

Viktigt!

I exemplet där TargetReplicaSetSize = 5, MinReplicaSetSize = 3 är majoritetskvorumet MinReplicaSetSize 2. Det innebär att även om det finns tre samtidiga fel som bara resulterar i att två återstående repliker körs, kommer Service Fabric fortfarande att ha 3 repliker i sin vy över replikuppsättningen (två upp och en nedåt), och två återstående repliker som körs räcker för att uppfylla majoritetskvorumet.

Exempel på suboptimala konfigurationer

TargetReplicaSetSize = 3; MinReplicaSetSize = 2

Den här typen av konfiguration leder ofta till kvorumförlust (när planerad och oplanerad omkoppling sker samtidigt). För att återställa från kvorumförlust räcker det inte att bara en replik kommer igång igen – det krävs att den exakta repliken som var en del av replikuppsättningen återkommer.

Bild som visar noder i klustret under varje redundansfas under sekvensen nedan när TargetReplicaSetSize = 3 och MinReplicaSetSize = 2

  1. Partitionen har tre repliker: A, B, C
  2. Replika A går ner, Service Fabric minskar replikuppsättningen till 2 (B, C)
  3. Oplanerad redundansväxling sker, replik B går också ner – partitionen är nu i kvorumförlusttillstånd
  4. Om replik A kommer tillbaka förblir partitionen i kvorumförlusttillstånd eftersom A inte ingår i den aktuella replikuppsättningen (B, C). Kvorumförlusten åtgärdas endast när repliken B kommer tillbaka.

MålstorlekFörReplikaSet = 3, MinstaStorlekFörReplikaSet = 3

Den här typen av konfiguration går ofta till kvorumförlust (när planerad och oplanerad redundans sker samtidigt). Men så snart någon av dessa repliker återaktiveras, återställs partitionen från kvorumförlust.

Varning

Den här typen av konfiguration är fortfarande inte optimal, den är bara något bättre än TagetReplicaSetSize =3, MinReplicaSetSize = 2.

Bild som visar noder i klustret under varje redundansfas under sekvensen nedan när TargetReplicaSetSize = 3 och MinReplicaSetSize = 3

  1. Partitionen har tre repliker: A, B, C
  2. Replik A går ned, replikuppsättningen förblir densamma (A, B, C)
  3. Oplanerad redundansväxling sker, replik B går också ner – partitionen är nu i kvorumförlusttillstånd
  4. Så snart någon av replikerna A eller B kommer tillbaka, kommer partitionen att återställa kvorum då både A och B ingår i den aktuella replikuppsättningen.

Nästa steg