Distribuera ett Azure Service Fabric-kluster mellan tillgänglighetszoner
Tillgänglighetszoner i Azure är ett erbjudande med hög tillgänglighet som skyddar dina program och data från datacenterfel. En tillgänglighetszon är en unik fysisk plats som är utrustad med oberoende ström, kylning och nätverk i en Azure-region.
För att stödja kluster som sträcker sig över tillgänglighetszoner tillhandahåller Azure Service Fabric de två konfigurationsmetoderna enligt beskrivningen i artikeln nedan. Tillgänglighetszoner är endast tillgängliga i utvalda regioner. Mer information finns i översikten över tillgänglighetszoner.
Exempelmallar finns i Service Fabric-mallar för zonövergripande tillgänglighet.
Topologi för att sträcka sig över en primär nodtyp mellan tillgänglighetszoner
Kommentar
Fördelen med att sträcka sig över den primära nodtypen mellan tillgänglighetszoner visas egentligen bara för tre zoner och inte bara två.
- Klustertillförlitlighetsnivån inställd på
Platinum
- En enskild offentlig IP-resurs med standard-SKU
- En enskild lastbalanserare med standard-SKU
- En nätverkssäkerhetsgrupp (NSG) som refereras av undernätet där du distribuerar vm-skalningsuppsättningar
Kommentar
Egenskapen för vm-skalningsuppsättningen för en enskild placeringsgrupp måste vara inställd på true
.
Följande exempelnodlista visar FD/UD-format i en vm-skalningsuppsättning som sträcker sig över zoner:
Distribution av tjänstrepliker mellan zoner
När en tjänst distribueras på de nodtyper som sträcker sig över tillgänglighetszoner placeras replikerna för att säkerställa att de hamnar i separata zoner. Feldomänerna på noderna i var och en av dessa nodtyper konfigureras med zoninformationen (d.v.s. FD = fd:/zone1/1 osv.). För fem repliker eller tjänstinstanser är distributionen till exempel 2-2-1 och körningen försöker säkerställa lika fördelning mellan zoner.
Konfiguration av användartjänstreplik
Tillståndskänsliga användartjänster som distribueras på nodtyperna i tillgänglighetszoner bör konfigureras så här: antal repliker med mål = 9, min = 5. Den här konfigurationen hjälper tjänsten att fungera även när en zon slutar fungera eftersom sex repliker fortfarande finns kvar i de andra två zonerna. En programuppgradering i det här scenariot kommer också att lyckas.
KlustertillförlitlighetNivå
Det här värdet definierar antalet startnoder i klustret och replikstorleken för systemtjänsterna. En konfiguration av zonen för korstillgänglighet har ett högre antal noder, som är spridda över zoner för att möjliggöra zonåterhämtning.
Ett högre ReliabilityLevel
värde säkerställer att fler startnoder och systemtjänstrepliker finns och fördelas jämnt mellan zoner, så att klustret och systemtjänsterna inte påverkas om en zon misslyckas. ReliabilityLevel = Platinum
(rekommenderas) säkerställer att det finns nio frönoder spridda över zoner i klustret, med tre frön i varje zon.
Scenario med zon ned
När en zon går ned visas alla noder och tjänstrepliker för den zonen som ned. Eftersom det finns repliker i de andra zonerna fortsätter tjänsten att svara. Primära repliker redundansväxlar till de fungerande zonerna. Tjänsterna verkar vara i varningstillstånd eftersom antalet målrepliker ännu inte har uppnåtts och antalet virtuella datorer (VM) fortfarande är högre än den minsta målreplikstorleken.
Service Fabric-lastbalanseraren hämtar repliker i arbetszonerna för att matcha antalet målrepliker. Nu verkar tjänsterna vara felfria. När zonen som var nere säkerhetskopieras kommer lastbalanseraren att sprida alla tjänstrepliker jämnt över zonerna.
Kommande optimeringar
- För att tillhandahålla tillförlitliga infrastrukturuppdateringar kräver Service Fabric att den virtuella datorns skalningsuppsättningshållbarhet måste anges till minst Silver. På så sätt kan den underliggande VM-skalningsuppsättningen och Service Fabric-körningen tillhandahålla tillförlitliga uppdateringar. Detta kräver också att varje zon har minst 5 virtuella datorer. Vi arbetar med att sänka det här kravet till 3 och 2 virtuella datorer per zon för primära respektive icke-primära nodtyper.
- Alla nedanstående konfigurationer och kommande arbete ger migrering på plats till kunder där samma kluster kan uppgraderas för att använda den nya konfigurationen genom att lägga till nya nodeTypes och dra tillbaka de gamla.
Nätverkskrav
Offentlig IP- och lastbalanserareresurs
För att aktivera zones
egenskapen på en vm-skalningsuppsättningsresurs måste lastbalanseraren och IP-resursen som refereras av den virtuella datorns skalningsuppsättning använda en standard-SKU. När du skapar en lastbalanserare eller IP-resurs utan SKU-egenskapen skapas en grundläggande SKU som inte stöder tillgänglighetszoner. En Standard SKU-lastbalanserare blockerar all trafik utifrån som standard. Om du vill tillåta extern trafik distribuerar du en NSG till undernätet.
{
"apiVersion": "2018-11-01",
"type": "Microsoft.Network/publicIPAddresses",
"name": "[concat('LB','-', parameters('clusterName')]",
"location": "[parameters('computeLocation')]",
"sku": {
"name": "Standard"
}
}
{
"apiVersion": "2018-11-01",
"type": "Microsoft.Network/loadBalancers",
"name": "[concat('LB','-', parameters('clusterName')]",
"location": "[parameters('computeLocation')]",
"dependsOn": [
"[concat('Microsoft.Network/networkSecurityGroups/', concat('nsg', parameters('subnet0Name')))]"
],
"properties": {
"addressSpace": {
"addressPrefixes": [
"[parameters('addressPrefix')]"
]
},
"subnets": [
{
"name": "[parameters('subnet0Name')]",
"properties": {
"addressPrefix": "[parameters('subnet0Prefix')]",
"networkSecurityGroup": {
"id": "[resourceId('Microsoft.Network/networkSecurityGroups', concat('nsg', parameters('subnet0Name')))]"
}
}
}
]
},
"sku": {
"name": "Standard"
}
}
Kommentar
Det går inte att göra en ändring på plats av SKU på den offentliga IP-adressen och lastbalanserarens resurser. Om du migrerar från befintliga resurser som har en grundläggande SKU kan du läsa migreringsavsnittet i den här artikeln.
NAT-regler för VM-skalningsuppsättningar
NAT-reglerna (inkommande nätverksadressöversättning) för lastbalanseraren ska matcha NAT-poolerna från vm-skalningsuppsättningen. Varje VM-skalningsuppsättning måste ha en unik inkommande NAT-pool.
{
"inboundNatPools": [
{
"name": "LoadBalancerBEAddressNatPool0",
"properties": {
"backendPort": "3389",
"frontendIPConfiguration": {
"id": "[variables('lbIPConfig0')]"
},
"frontendPortRangeEnd": "50999",
"frontendPortRangeStart": "50000",
"protocol": "tcp"
}
},
{
"name": "LoadBalancerBEAddressNatPool1",
"properties": {
"backendPort": "3389",
"frontendIPConfiguration": {
"id": "[variables('lbIPConfig0')]"
},
"frontendPortRangeEnd": "51999",
"frontendPortRangeStart": "51000",
"protocol": "tcp"
}
},
{
"name": "LoadBalancerBEAddressNatPool2",
"properties": {
"backendPort": "3389",
"frontendIPConfiguration": {
"id": "[variables('lbIPConfig0')]"
},
"frontendPortRangeEnd": "52999",
"frontendPortRangeStart": "52000",
"protocol": "tcp"
}
}
]
}
Utgående regler för en Standard SKU-lastbalanserare
Standard SKU-lastbalanseraren och den offentliga IP-adressen introducerar nya funktioner och olika beteenden för utgående anslutning jämfört med att använda grundläggande SKU:er. Om du vill ha utgående anslutning när du arbetar med standard-SKU:er måste du uttryckligen definiera den med antingen en offentlig IP-adress för Standard SKU eller en Standard SKU-lastbalanserare. Mer information finns i Utgående anslutningar och Vad är Azure Load Balancer?.
Kommentar
Standardmallen refererar till en NSG som tillåter all utgående trafik som standard. Inkommande trafik är begränsad till de portar som krävs för Service Fabric-hanteringsåtgärder. NSG-reglerna kan ändras för att uppfylla dina krav.
Viktigt!
Varje nodtyp i ett Service Fabric-kluster som använder en Standard SKU-lastbalanserare kräver en regel som tillåter utgående trafik på port 443. Detta är nödvändigt för att slutföra klusterkonfigurationen. All distribution utan den här regeln misslyckas.
1. Aktivera flera tillgänglighetszoner i en enda VM-skalningsuppsättning
Med den här lösningen kan användare sträcka sig över tre tillgänglighetszoner i samma nodtyp. Detta är den rekommenderade distributionstopologin eftersom du kan distribuera över tillgänglighetszoner samtidigt som du behåller en enda VM-skalningsuppsättning.
En fullständig exempelmall finns på GitHub.
Konfigurera zoner på en VM-skalningsuppsättning
Om du vill aktivera zoner på en VM-skalningsuppsättning inkluderar du följande tre värden i resursen för VM-skalningsuppsättningen:
Det första värdet är egenskapen
zones
som anger de tillgänglighetszoner som finns i vm-skalningsuppsättningen.Det andra värdet är egenskapen
singlePlacementGroup
som måste anges tilltrue
. Skalningsuppsättningen som sträcker sig över tre tillgänglighetszoner kan skala upp till 300 virtuella datorer även medsinglePlacementGroup = true
.Det tredje värdet är
zoneBalance
, vilket säkerställer strikt zonbalansering. Det här värdet ska varatrue
. Detta säkerställer att de virtuella datordistributionerna mellan zoner inte är obalanserade, vilket innebär att de andra två zonerna har tillräckligt med virtuella datorer för att hålla klustret igång när en zon går ned.Ett kluster med en obalanserad VM-distribution kanske inte överlever ett zon-down-scenario eftersom den zonen kan ha majoriteten av de virtuella datorerna. Obalanserad VM-distribution mellan zoner leder också till problem med tjänstplacering och att infrastrukturuppdateringar fastnar. Läs mer om zoneBalancing.
Du behöver inte konfigurera åsidosättningarna FaultDomain
och UpgradeDomain
.
{
"apiVersion": "2018-10-01",
"type": "Microsoft.Compute/virtualMachineScaleSets",
"name": "[parameters('vmNodeType1Name')]",
"location": "[parameters('computeLocation')]",
"zones": [ "1", "2", "3" ],
"properties": {
"singlePlacementGroup": true,
"zoneBalance": true
}
}
Kommentar
- Service Fabric-kluster bör ha minst en primär nodtyp. Hållbarhetsnivån för primära nodtyper ska vara Silver eller högre.
- En tillgänglighetszon som omfattar vm-skalningsuppsättningar ska konfigureras med minst tre tillgänglighetszoner, oavsett hållbarhetsnivå.
- En tillgänglighetszon som omfattar vm-skalningsuppsättningar med Silver eller högre hållbarhet bör ha minst 15 virtuella datorer (5 per region).
- En tillgänglighetszon som omfattar vm-skalningsuppsättningar med bronshållbarhet bör ha minst sex virtuella datorer.
Aktivera stöd för flera zoner i Service Fabric-nodtypen
Nodtypen Service Fabric måste vara aktiverad för att stödja flera tillgänglighetszoner.
Det första värdet är
multipleAvailabilityZones
, som ska anges tilltrue
för nodtypen.Det andra värdet är
sfZonalUpgradeMode
och är valfritt. Det går inte att ändra den här egenskapen om en nodtyp med flera tillgänglighetszoner redan finns i klustret. Den här egenskapen styr den logiska gruppering av virtuella datorer i uppgraderingsdomäner (UD).- Om det här värdet är inställt på
Parallel
: Virtuella datorer under nodtypen grupperas i UD:er och ignorerar zoninformationen i fem UD:er. Den här inställningen gör att UD:er i alla zoner uppgraderas samtidigt. Det här distributionsläget går snabbare för uppgraderingar, vi rekommenderar det inte eftersom det strider mot SDP-riktlinjerna, som anger att uppdateringarna ska tillämpas på en zon i taget. - Om det här värdet utelämnas eller anges till
Hierarchical
: Virtuella datorer grupperas för att återspegla zonfördelningen i upp till 15 UD:er. Var och en av de tre zonerna har fem UD:er. Detta säkerställer att zonerna uppdateras en i taget och flyttas till nästa zon först efter att fem UD:er har slutförts inom den första zonen. Den här uppdateringsprocessen är säkrare för klustret och användarprogrammet.
Den här egenskapen definierar endast uppgraderingsbeteendet för Service Fabric-program och koduppgraderingar. De underliggande uppgraderingarna av vm-skalningsuppsättningar är fortfarande parallella i alla tillgänglighetszoner. Den här egenskapen påverkar inte UD-fördelningen för nodtyper som inte har flera zoner aktiverade.
- Om det här värdet är inställt på
Det tredje värdet är
vmssZonalUpgradeMode
, är valfritt och kan uppdateras när som helst. Den här egenskapen definierar uppgraderingsschemat för vm-skalningsuppsättningen som ska ske parallellt eller sekventiellt mellan tillgänglighetszoner.- Om det här värdet är inställt på
Parallel
: Alla skalningsuppsättningsuppdateringar sker parallellt i alla zoner. Det här distributionsläget går snabbare för uppgraderingar, vi rekommenderar det inte eftersom det strider mot SDP-riktlinjerna, som anger att uppdateringarna ska tillämpas på en zon i taget. - Om det här värdet utelämnas eller anges till
Hierarchical
: Detta säkerställer att zonerna uppdateras en i taget och flyttas till nästa zon först efter att fem UD:er har slutförts i den första zonen. Den här uppdateringsprocessen är säkrare för klustret och användarprogrammet.
- Om det här värdet är inställt på
Viktigt!
Api-versionen för Service Fabric-klusterresursen ska vara 2020-12-01-preview eller senare.
Klusterkodversionen bör vara minst 8.1.321 eller senare.
{
"apiVersion": "2020-12-01-preview",
"type": "Microsoft.ServiceFabric/clusters",
"name": "[parameters('clusterName')]",
"location": "[parameters('clusterLocation')]",
"dependsOn": [
"[concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName'))]"
],
"properties": {
"reliabilityLevel": "Platinum",
"sfZonalUpgradeMode": "Hierarchical",
"vmssZonalUpgradeMode": "Parallel",
"nodeTypes": [
{
"name": "[parameters('vmNodeType0Name')]",
"multipleAvailabilityZones": true
}
]
}
}
Kommentar
- Offentliga IP- och lastbalanseringsresurser bör använda standard-SKU:n som beskrevs tidigare i artikeln.
- Egenskapen
multipleAvailabilityZones
på nodtypen kan bara definieras när nodtypen skapas och kan inte ändras senare. Befintliga nodtyper kan inte konfigureras med den här egenskapen. - När
sfZonalUpgradeMode
utelämnas eller anges tillHierarchical
blir kluster- och programdistributionerna långsammare eftersom det finns fler uppgraderingsdomäner i klustret. Det är viktigt att justera tidsgränserna för uppgraderingsprincipen korrekt för att ta hänsyn till den uppgraderingstid som krävs för 15 uppgraderingsdomäner. Uppgraderingsprincipen för både appen och klustret bör uppdateras för att säkerställa att distributionen inte överskrider tidsgränsen för Distribution av Azure Resource Service på 12 timmar. Det innebär att distributionen inte bör ta mer än 12 timmar för 15 UD:er (det vill säga bör inte ta mer än 40 minuter för varje UD). - Ange tillförlitlighetsnivån för klustret för
Platinum
att säkerställa att klustret överlever scenariot med en zon ned. - Uppgradering av DurabilityLevel för en nodtyp med multipleAvailabilityZones stöds inte. Skapa en ny nodtyp med högre hållbarhet i stället.
- SF stöder bara 3 AvailabilityZones. Ett högre tal stöds inte just nu.
Dricks
Vi rekommenderar att Hierarchical
du ställer in sfZonalUpgradeMode
eller utelämnar det. Distributionen följer zonfördelningen av virtuella datorer och påverkar en mindre mängd repliker eller instanser, vilket gör dem säkrare.
Använd sfZonalUpgradeMode
inställd på Parallel
om distributionshastigheten är en prioritet eller endast tillståndslösa arbetsbelastningar körs på nodtypen med flera tillgänglighetszoner. Detta gör att UD-genomgången sker parallellt i alla tillgänglighetszoner.
Migrera till nodtypen med flera tillgänglighetszoner
För alla migreringsscenarier måste du lägga till en ny nodtyp som stöder flera tillgänglighetszoner. En befintlig nodtyp kan inte migreras för att stödja flera zoner. Artikeln Skala upp en primär nodtyp för Service Fabric-klustret innehåller detaljerade steg för att lägga till en ny nodtyp och de andra resurser som krävs för den nya nodtypen, till exempel IP- och lastbalanserarens resurser. Den artikeln beskriver också hur du drar tillbaka den befintliga nodtypen efter att en ny nodtyp med flera tillgänglighetszoner har lagts till i klustret.
Migrering från en nodtyp som använder grundläggande lastbalanserare och IP-resurser: Den här processen beskrivs redan i ett underavsnitt nedan för lösningen med en nodtyp per tillgänglighetszon.
För den nya nodtypen är den enda skillnaden att det bara finns en vm-skalningsuppsättning och en nodtyp för alla tillgänglighetszoner i stället för en vardera per tillgänglighetszon.
Migrering från en nodtyp som använder Standard SKU-lastbalanseraren och IP-resurser med en NSG: Följ samma procedur som beskrevs tidigare. Det finns dock inget behov av att lägga till nya lastbalanserare, IP- och NSG-resurser. Samma resurser kan återanvändas i den nya nodtypen.
2. Distribuera zoner genom att fästa en vm-skalningsuppsättning i varje zon
Det här är den allmänt tillgängliga konfigurationen just nu. Om du vill sträcka dig över ett Service Fabric-kluster mellan tillgänglighetszoner måste du skapa en primär nodtyp i varje tillgänglighetszon som stöds av regionen. Detta distribuerar startnoder jämnt över var och en av de primära nodtyperna.
Den rekommenderade topologin för den primära nodtypen kräver följande:
- Tre nodtyper markerade som primära
- Varje nodtyp ska mappas till en egen VM-skalningsuppsättning som finns i en annan zon.
- Varje VM-skalningsuppsättning bör ha minst fem noder (silverhållbarhet).
Följande diagram visar arkitekturen för Tillgänglighetszon för Azure Service Fabric:
Aktivera zoner på en VM-skalningsuppsättning
Om du vill aktivera en zon på en VM-skalningsuppsättning inkluderar du följande tre värden i resursen för VM-skalningsuppsättningen:
- Det första värdet är egenskapen
zones
som anger vilken tillgänglighetszon vm-skalningsuppsättningen distribueras till. - Det andra värdet är egenskapen
singlePlacementGroup
som måste anges tilltrue
. - Det tredje värdet är
faultDomainOverride
egenskapen i tillägget för service fabric-vm-skalningsuppsättningen. Den här egenskapen bör endast innehålla den zon där den här VM-skalningsuppsättningen ska placeras. Exempel:"faultDomainOverride": "az1"
. Alla vm-skalningsuppsättningsresurser måste placeras i samma region eftersom Azure Service Fabric-kluster inte har stöd för flera regioner.
{
"apiVersion": "2018-10-01",
"type": "Microsoft.Compute/virtualMachineScaleSets",
"name": "[parameters('vmNodeType1Name')]",
"location": "[parameters('computeLocation')]",
"zones": [
"1"
],
"properties": {
"singlePlacementGroup": true
},
"virtualMachineProfile": {
"extensionProfile": {
"extensions": [
{
"name": "[concat(parameters('vmNodeType1Name'),'_ServiceFabricNode')]",
"properties": {
"type": "ServiceFabricNode",
"autoUpgradeMinorVersion": false,
"publisher": "Microsoft.Azure.ServiceFabric",
"settings": {
"clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
"nodeTypeRef": "[parameters('vmNodeType1Name')]",
"dataPath": "D:\\\\SvcFab",
"durabilityLevel": "Silver",
"certificate": {
"thumbprint": "[parameters('certificateThumbprint')]",
"x509StoreName": "[parameters('certificateStoreValue')]"
},
"systemLogUploadSettings": {
"Enabled": true
},
"faultDomainOverride": "az1"
},
"typeHandlerVersion": "1.0"
}
}
]
}
}
}
Aktivera flera primära nodtyper i Service Fabric-klusterresursen
Om du vill ange en eller flera nodtyper som primära i en klusterresurs anger du isPrimary
egenskapen till true
. När du distribuerar ett Service Fabric-kluster mellan tillgänglighetszoner bör du ha tre nodtyper i distinkta zoner.
{
"reliabilityLevel": "Platinum",
"nodeTypes": [
{
"name": "[parameters('vmNodeType0Name')]",
"applicationPorts": {
"endPort": "[parameters('nt0applicationEndPort')]",
"startPort": "[parameters('nt0applicationStartPort')]"
},
"clientConnectionEndpointPort": "[parameters('nt0fabricTcpGatewayPort')]",
"durabilityLevel": "Silver",
"ephemeralPorts": {
"endPort": "[parameters('nt0ephemeralEndPort')]",
"startPort": "[parameters('nt0ephemeralStartPort')]"
},
"httpGatewayEndpointPort": "[parameters('nt0fabricHttpGatewayPort')]",
"isPrimary": true,
"vmInstanceCount": "[parameters('nt0InstanceCount')]"
},
{
"name": "[parameters('vmNodeType1Name')]",
"applicationPorts": {
"endPort": "[parameters('nt1applicationEndPort')]",
"startPort": "[parameters('nt1applicationStartPort')]"
},
"clientConnectionEndpointPort": "[parameters('nt1fabricTcpGatewayPort')]",
"durabilityLevel": "Silver",
"ephemeralPorts": {
"endPort": "[parameters('nt1ephemeralEndPort')]",
"startPort": "[parameters('nt1ephemeralStartPort')]"
},
"httpGatewayEndpointPort": "[parameters('nt1fabricHttpGatewayPort')]",
"isPrimary": true,
"vmInstanceCount": "[parameters('nt1InstanceCount')]"
},
{
"name": "[parameters('vmNodeType2Name')]",
"applicationPorts": {
"endPort": "[parameters('nt2applicationEndPort')]",
"startPort": "[parameters('nt2applicationStartPort')]"
},
"clientConnectionEndpointPort": "[parameters('nt2fabricTcpGatewayPort')]",
"durabilityLevel": "Silver",
"ephemeralPorts": {
"endPort": "[parameters('nt2ephemeralEndPort')]",
"startPort": "[parameters('nt2ephemeralStartPort')]"
},
"httpGatewayEndpointPort": "[parameters('nt2fabricHttpGatewayPort')]",
"isPrimary": true,
"vmInstanceCount": "[parameters('nt2InstanceCount')]"
}
]
}
Migrera till tillgänglighetszoner från ett kluster med hjälp av en Basic SKU-lastbalanserare och en Basic SKU IP
Om du vill migrera ett kluster som använder en lastbalanserare och EN IP-adress med en grundläggande SKU måste du först skapa en helt ny lastbalanserare och IP-resurs med hjälp av standard-SKU:n. Det går inte att uppdatera dessa resurser.
Referera till den nya lastbalanseraren och IP-adressen i de nya nodtyperna för zonen för flera tillgängligheter som du vill använda. I föregående exempel lades tre nya vm-skalningsuppsättningsresurser till i zonerna 1, 2 och 3. Dessa vm-skalningsuppsättningar refererar till den nyligen skapade lastbalanseraren och IP-adressen och markeras som primära nodtyper i Service Fabric-klusterresursen.
Börja med att lägga till de nya resurserna i din befintliga Azure Resource Manager-mall. Dessa resurser omfattar:
- En offentlig IP-resurs med standard-SKU
- En lastbalanserarresurs med standard-SKU
- En NSG som refereras av undernätet där du distribuerar vm-skalningsuppsättningar
- Tre nodtyper markerade som primära
- Varje nodtyp ska mappas till en egen VM-skalningsuppsättning som finns i en annan zon.
- Varje VM-skalningsuppsättning bör ha minst fem noder (silverhållbarhet).
Ett exempel på dessa resurser finns i exempelmallen.
New-AzureRmResourceGroupDeployment ` -ResourceGroupName $ResourceGroupName ` -TemplateFile $Template ` -TemplateParameterFile $Parameters
När resurserna har distribuerats kan du inaktivera noderna i den primära nodtypen från det ursprungliga klustret. När noderna är inaktiverade migreras systemtjänsterna till den nya primära nodtypen som du distribuerade tidigare.
Connect-ServiceFabricCluster -ConnectionEndpoint $ClusterName ` -KeepAliveIntervalInSec 10 ` -X509Credential ` -ServerCertThumbprint $thumb ` -FindType FindByThumbprint ` -FindValue $thumb ` -StoreLocation CurrentUser ` -StoreName My Write-Host "Connected to cluster" $nodeNames = @("_nt0_0", "_nt0_1", "_nt0_2", "_nt0_3", "_nt0_4") Write-Host "Disabling nodes..." foreach($name in $nodeNames) { Disable-ServiceFabricNode -NodeName $name -Intent RemoveNode -Force }
När alla noder har inaktiverats körs systemtjänsterna på den primära nodtypen, som är spridda över zoner. Du kan sedan ta bort de inaktiverade noderna från klustret. När noderna har tagits bort kan du ta bort den ursprungliga IP-adressen, lastbalanseraren och vm-skalningsuppsättningsresurserna.
foreach($name in $nodeNames){ # Remove the node from the cluster Remove-ServiceFabricNodeState -NodeName $name -TimeoutSec 300 -Force Write-Host "Removed node state for node $name" } $scaleSetName="nt0" Remove-AzureRmVmss -ResourceGroupName $groupname -VMScaleSetName $scaleSetName -Force $lbname="LB-cluster-nt0" $oldPublicIpName="LBIP-cluster-0" $newPublicIpName="LBIP-cluster-1" Remove-AzureRmLoadBalancer -Name $lbname -ResourceGroupName $groupname -Force Remove-AzureRmPublicIpAddress -Name $oldPublicIpName -ResourceGroupName $groupname -Force
Ta sedan bort referenserna till dessa resurser från Resource Manager-mallen som du distribuerade.
Uppdatera slutligen DNS-namnet och den offentliga IP-adressen.
$oldprimaryPublicIP = Get-AzureRmPublicIpAddress -Name $oldPublicIpName -ResourceGroupName $groupname
$primaryDNSName = $oldprimaryPublicIP.DnsSettings.DomainNameLabel
$primaryDNSFqdn = $oldprimaryPublicIP.DnsSettings.Fqdn
Remove-AzureRmLoadBalancer -Name $lbname -ResourceGroupName $groupname -Force
Remove-AzureRmPublicIpAddress -Name $oldPublicIpName -ResourceGroupName $groupname -Force
$PublicIP = Get-AzureRmPublicIpAddress -Name $newPublicIpName -ResourceGroupName $groupname
$PublicIP.DnsSettings.DomainNameLabel = $primaryDNSName
$PublicIP.DnsSettings.Fqdn = $primaryDNSFqdn
Set-AzureRmPublicIpAddress -PublicIpAddress $PublicIP