Wdrażanie klastra usługi Azure Service Fabric z typami węzłów tylko bezstanowymi
Typy węzłów usługi Service Fabric mają z założenia, że w pewnym momencie usługi stanowe mogą być umieszczane w węzłach. Typy węzłów bezstanowych zmieniają to założenie dla typu węzła, co pozwala typowi węzła na korzystanie z innych funkcji, takich jak szybsze operacje skalowania w poziomie, obsługa automatycznych uaktualnień systemu operacyjnego na brąz trwałości i skalowanie w poziomie do ponad 100 węzłów w jednym zestawie skalowania maszyn wirtualnych.
- Nie można skonfigurować typów węzłów podstawowych jako bezstanowych
- Typy węzłów bezstanowych są obsługiwane tylko w przypadku poziomów trwałości z brązu
- Typy węzłów bezstanowych są obsługiwane tylko w środowisku uruchomieniowym usługi Service Fabric w wersji 7.1.409 lub nowszej.
Dostępne są przykładowe szablony: szablon Typy węzłów bezstanowych usługi Service Fabric
Włączanie typów węzłów bezstanowych w klastrze usługi Service Fabric
Aby ustawić co najmniej jeden typ węzła jako bezstanowy w zasobie klastra, ustaw właściwość isStateless na true. Podczas wdrażania klastra usługi Service Fabric z typami węzłów bezstanowych pamiętaj, aby mieć jeden podstawowy typ węzła w zasobie klastra.
- Wersja apiVersion zasobu klastra usługi Service Fabric powinna mieć wartość "2020-12-01-preview" lub nowsza.
{
"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,
"isStateless": false, // Primary Node Types cannot be stateless
"vmInstanceCount": "[parameters('nt0InstanceCount')]"
},
{
"name": "[parameters('vmNodeType1Name')]",
"applicationPorts": {
"endPort": "[parameters('nt1applicationEndPort')]",
"startPort": "[parameters('nt1applicationStartPort')]"
},
"clientConnectionEndpointPort": "[parameters('nt1fabricTcpGatewayPort')]",
"durabilityLevel": "Bronze",
"ephemeralPorts": {
"endPort": "[parameters('nt1ephemeralEndPort')]",
"startPort": "[parameters('nt1ephemeralStartPort')]"
},
"httpGatewayEndpointPort": "[parameters('nt1fabricHttpGatewayPort')]",
"isPrimary": false,
"isStateless": true,
"vmInstanceCount": "[parameters('nt1InstanceCount')]"
}
],
}
Konfigurowanie zestawu skalowania maszyn wirtualnych dla typów węzłów bezstanowych
Aby włączyć typy węzłów bezstanowych, należy skonfigurować podstawowy zasób zestawu skalowania maszyn wirtualnych w następujący sposób:
- Wartość właściwości singlePlacementGroup , która powinna być ustawiona na wartość false , jeśli chcesz skalować do więcej niż 100 maszyn wirtualnych.
- Zasady uaktualniania zestawu skalowania powinny być ustawione na Wartość Rolling.
- Tryb uaktualniania stopniowego wymaga skonfigurowania rozszerzenia kondycji aplikacji lub sond kondycji. Aby uzyskać więcej informacji na temat konfigurowania sond kondycji lub rozszerzenia kondycji aplikacji, zapoznaj się z tym dokumentem. Skonfiguruj sondę kondycji z domyślną konfiguracją typów węzłów bezstanowych, jak pokazano poniżej. Po wdrożeniu aplikacji do typu węzła można zmienić porty rozszerzenia Sonda kondycji/Kondycja, aby monitorować rzeczywistą kondycję aplikacji.
Uwaga
Podczas korzystania z skalowania automatycznego z typami węzłów bezstanowych po operacji skalowania w dół stan węzła nie jest automatycznie czyszczony. Aby wyczyścić węzeł NodeState węzłów w dół podczas autoskalowania, zaleca się użycie pomocnika autoskalowania usługi Service Fabric.
{
"apiVersion": "2019-03-01",
"type": "Microsoft.Compute/virtualMachineScaleSets",
"name": "[parameters('vmNodeType1Name')]",
"location": "[parameters('computeLocation')]",
"properties": {
"overprovision": "[variables('overProvision')]",
"upgradePolicy": {
"mode": "Rolling",
"automaticOSUpgradePolicy": {
"enableAutomaticOSUpgrade": true
}
},
"platformFaultDomainCount": 5
},
"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": "Bronze",
"certificate": {
"thumbprint": "[parameters('certificateThumbprint')]",
"x509StoreName": "[parameters('certificateStoreValue')]"
},
"systemLogUploadSettings": {
"Enabled": true
},
},
"typeHandlerVersion": "1.1"
}
},
{
"type": "extensions",
"name": "HealthExtension",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "ApplicationHealthWindows",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "1.0",
"settings": {
"protocol": "tcp",
"port": "19000"
}
}
},
]
}
Konfigurowanie typów węzłów bezstanowych z wieloma Strefy dostępności
Aby skonfigurować typ węzła bezstanowego obejmujący wiele stref dostępności, postępuj zgodnie z dokumentacją w tym miejscu, wraz z kilkoma zmianami w następujący sposób:
- Ustaw wartość singlePlacementGroup : false , jeśli do włączenia wielu grup umieszczania jest wymaganych.
- Ustaw parametr upgradePolicy: rolling and add Application Health Extension/Health Probes (Uaktualnianie zasad zasad: rolling and add Application Health Extension/Health Probes), jak wspomniano powyżej.
- Ustaw wartość platformFaultDomainCount : 5 dla zestawu skalowania maszyn wirtualnych.
Aby zapoznać się z dokumentacją, zapoznaj się z szablonem konfigurowania typów węzłów bezstanowych z wieloma Strefy dostępności
Wymagania dotyczące sieci
Publiczny adres IP i zasób usługi Load Balancer
Aby umożliwić skalowanie do ponad 100 maszyn wirtualnych w zasobie zestawu skalowania maszyn wirtualnych, zasób modułu równoważenia obciążenia i adresu IP, do którego odwołuje się ten zestaw skalowania maszyn wirtualnych, musi używać jednostki SKU w warstwie Standardowa . Utworzenie zasobu IP bez właściwości jednostki SKU spowoduje utworzenie jednostki SKU w warstwie Podstawowa, która nie obsługuje skalowania do ponad 100 maszyn wirtualnych. Moduł równoważenia obciążenia jednostki SKU w warstwie Standardowa domyślnie blokuje cały ruch z zewnątrz; aby zezwolić na ruch zewnętrzny, sieciowa grupa zabezpieczeń musi zostać wdrożona w podsieci.
{
"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"
}
}
Uwaga
Nie można przeprowadzić zmiany jednostki SKU w miejscu w publicznym adresie IP i zasobach modułu równoważenia obciążenia.
Reguły translatora adresów sieciowych zestawu skalowania maszyn wirtualnych
Reguły NAT dla ruchu przychodzącego modułu równoważenia obciążenia powinny być zgodne z pulami translatora adresów sieciowych z zestawu skalowania maszyn wirtualnych. Każdy zestaw skalowania maszyn wirtualnych musi mieć unikatową pulę NAT dla ruchu przychodzącego.
{
"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"
}
}
]
}
Reguły ruchu wychodzącego usługi Load Balancer w warstwie Standardowa
Publiczny adres IP w warstwie Standardowa wprowadza nowe możliwości i różne zachowania łączności wychodzącej w porównaniu z użyciem jednostki SKU w warstwie Podstawowa. Jeśli chcesz, aby łączność wychodząca podczas pracy z jednostkami SKU w warstwie Standardowa była jawnie zdefiniowana przy użyciu publicznych adresów IP w warstwie Standardowa lub publicznego modułu równoważenia obciążenia w warstwie Standardowa. Aby uzyskać więcej informacji, zobacz Połączenia wychodzące i Azure usługa Load Balancer w warstwie Standardowa.
Uwaga
Szablon standardowy odwołuje się do sieciowej grupy zabezpieczeń, która domyślnie zezwala na cały ruch wychodzący. Ruch przychodzący jest ograniczony do portów wymaganych w przypadku operacji zarządzania usługą Service Fabric. Reguły sieciowej grupy zabezpieczeń można modyfikować w celu spełnienia wymagań.
Uwaga
Każdy klaster usługi Service Fabric korzystający z usługi SLB w warstwie Standardowa musi mieć pewność, że każdy typ węzła ma regułę zezwalającą na ruch wychodzący na porcie 443. Jest to konieczne do ukończenia konfiguracji klastra, a każde wdrożenie bez takiej reguły zakończy się niepowodzeniem.
Migrowanie do używania typów węzłów bezstanowych w klastrze
W przypadku wszystkich scenariuszy migracji należy dodać nowy typ węzła tylko bezstanowy. Nie można migrować istniejącego typu węzła jako bezstanowego.
Aby przeprowadzić migrację klastra, który używał adresu IP z podstawową jednostkę SKU, należy najpierw utworzyć zupełnie nowy zasób IP przy użyciu standardowej jednostki SKU. Nie można zaktualizować tych zasobów w miejscu.
Nowy moduł równoważenia obciążenia i adres IP powinny być przywoływały się w nowych typach węzłów bezstanowych, których chcesz użyć. W powyższym przykładzie dodano nowe zasoby zestawu skalowania maszyn wirtualnych, które mają być używane dla typów węzłów bezstanowych. Te zestawy skalowania maszyn wirtualnych odwołują się do nowo utworzonego modułu równoważenia obciążenia i adresu IP i są oznaczone jako typy węzłów bezstanowych w zasobie klastra usługi Service Fabric.
Aby rozpocząć, należy dodać nowe zasoby do istniejącego szablonu usługi Resource Manager. Te zasoby obejmują:
- Zasób publicznego adresu IP korzystający z jednostki SKU w warstwie Standardowa.
- Zasób modułu równoważenia obciążenia przy użyciu jednostki SKU w warstwie Standardowa.
- Sieciowa grupa zabezpieczeń, do której odwołuje się podsieć, w której wdrażasz zestawy skalowania maszyn wirtualnych.
Po zakończeniu wdrażania zasobów można rozpocząć wyłączanie węzłów w typie węzła, który chcesz usunąć z oryginalnego klastra.