Dela via


Storlekskonfiguration för tillståndskänslig tjänstreplikuppsä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. Den situationen kan inträffa när det finns en planerad redundansväxling (uppgradering som tar ned noden/repliken) och en oplanerad redundansväxling (nodkrascher).

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 underhålls i den här vyn, så majoritetskvorum för MinReplicaSetSize är minsta möjliga tillförlitlighetsnivå för alla åtgärder. Om det totala antalet repliker sjunker under majoritetskvorumet för MinReplicaSetSize tillåts inte ytterligare skrivningar. Det är viktigt att observera att när tjänsten är kvorumförlust kan det kräva att repliker kommer tillbaka i en specifik ordning för att 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 går ofta till kvorumförlust (när planerad och oplanerad redundans sker samtidigt). För att återställa från kvorumförlust räcker det inte att bara en replik säkerhetskopieras – den krävs för den exakta repliken som var en del av replikuppsättningen för att komma igång igen.

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. Replik A går ner, Service Fabric downshifts replik inställd på 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.

TargetReplicaSetSize = 3, MinReplicaSetSize = 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 säkerhetskopieras å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 säkerhetskopieras återställer partitionen kvorum eftersom både A och B ingår i den aktuella replikuppsättningen

Nästa steg