Alkalmazások és szolgáltatások kezelése Azure-Resource Manager-erőforrásokként
Alkalmazásokat és szolgáltatásokat helyezhet üzembe a Service Fabric-fürtön az Azure Resource Manager keresztül. Ez azt jelenti, hogy ahelyett, hogy alkalmazásokat helyez üzembe és kezel a PowerShell vagy a parancssori felület használatával, miután megvárta, hogy a fürt készen áll, mostantól jSON-ban fejezheti ki az alkalmazásokat és szolgáltatásokat, és üzembe helyezheti őket ugyanabban a Resource Manager sablonban, mint a fürt. Az alkalmazásregisztráció, a kiépítés és az üzembe helyezés folyamata egy lépésben történik.
Ez a javasolt módszer a fürtben szükséges beállítási, irányítási vagy fürtkezelési alkalmazások üzembe helyezésére. Ez magában foglalja a Patch Orchestration alkalmazást, a Watchdogsot vagy azokat az alkalmazásokat, amelyeknek futniuk kell a fürtön más alkalmazások vagy szolgáltatások üzembe helyezése előtt.
Adott esetben az alkalmazásokat Resource Manager erőforrásként kezelve javíthatja a következőket:
- Auditnapló: Resource Manager minden műveletet naplóz, és részletes tevékenységnaplót vezet, amely segít nyomon követni az alkalmazások és a fürt módosításait.
- Azure-beli szerepköralapú hozzáférés-vezérlés (Azure RBAC): A fürtökön üzembe helyezett fürtökhöz és alkalmazásokhoz való hozzáférés kezelése ugyanazon Resource Manager sablonnal végezhető el.
- Az Azure Resource Manager (Azure Portal keresztül) egyablakos megoldássá válik a fürt és a kritikus fontosságú alkalmazások üzembe helyezésének felügyeletére.
Az alábbi kódrészlet azokat az erőforrásokat mutatja be, amelyek sablonnal kezelhetők:
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applicationTypes",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applicationTypes/versions",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'), '/', parameters('applicationTypeVersion'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applications",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applications/services",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
"location": "[variables('clusterLocation')]"
}
Új alkalmazás hozzáadása a Resource Manager-sablonhoz
Készítse elő a fürt Resource Manager sablonját az üzembe helyezéshez. További információ: Service Fabric-fürt létrehozása az Azure Resource Manager használatával.
Gondoljon néhány olyan alkalmazásra, amely üzembe helyezését tervezi a fürtön. Van olyan, amely mindig azt fogja futtatni, hogy más alkalmazások függőségeket vegyenek fel? Tervez fürtirányítási vagy -beállítási alkalmazásokat üzembe helyezni? Az ilyen típusú alkalmazásokat a legjobban egy Resource Manager sablonnal lehet kezelni, ahogy azt fentebb említettük.
Miután rájött, hogy milyen alkalmazásokat szeretne így üzembe helyezni, az alkalmazásokat be kell csomagolni, tömöríteni és tárolómegosztásra kell helyezni. A megosztásnak elérhetőnek kell lennie egy REST-végponton keresztül az Azure Resource Manager számára, hogy az üzembe helyezés során felhasználhassa. A részletekért lásd: Tárfiók létrehozása .
A Resource Manager-sablonban a fürtdeklaráció alatt ismertesse az egyes alkalmazások tulajdonságait. Ezek a tulajdonságok közé tartozik a replikák vagy példányok száma, valamint az erőforrások (más alkalmazások vagy szolgáltatások) közötti függőségi láncok. Vegye figyelembe, hogy ez nem helyettesíti az alkalmazás- vagy szolgáltatásjegyzékeket, hanem a fürt Resource Manager sablonjának részeként ismerteti a bennük lévő elemek egy részét. Íme egy mintasablon, amely egy állapot nélküli service1 és egy állapotalapú service2 üzembe helyezését tartalmazza az Application1 részeként:
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json", "contentVersion": "1.0.0.0", "parameters": { "clusterName": { "type": "string", "defaultValue": "Cluster", "metadata": { "description": "Name of your cluster - Between 3 and 23 characters. Letters and numbers only." } }, "applicationTypeName": { "type": "string", "defaultValue": "ApplicationType", "metadata": { "description": "The application type name." } }, "applicationTypeVersion": { "type": "string", "defaultValue": "1", "metadata": { "description": "The application type version." } }, "appPackageUrl": { "type": "string", "metadata": { "description": "The URL to the application package sfpkg file." } }, "applicationName": { "type": "string", "defaultValue": "Application1", "metadata": { "description": "The name of the application resource." } }, "serviceName": { "type": "string", "defaultValue": "Application1~Service1", "metadata": { "description": "The name of the service resource in the format of {applicationName}~{serviceName}." } }, "serviceTypeName": { "type": "string", "defaultValue": "Service1Type", "metadata": { "description": "The name of the service type." } }, "serviceName2": { "type": "string", "defaultValue": "Application1~Service2", "metadata": { "description": "The name of the service resource in the format of {applicationName}~{serviceName}." } }, "serviceTypeName2": { "type": "string", "defaultValue": "Service2Type", "metadata": { "description": "The name of the service type." } } }, "variables": { "clusterLocation": "[resourcegroup().location]" }, "resources": [ { "apiVersion": "2019-03-01", "type": "Microsoft.ServiceFabric/clusters/applicationTypes", "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'))]", "location": "[variables('clusterLocation')]", "dependsOn": [], "properties": { "provisioningState": "Default" } }, { "apiVersion": "2019-03-01", "type": "Microsoft.ServiceFabric/clusters/applicationTypes/versions", "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'), '/', parameters('applicationTypeVersion'))]", "location": "[variables('clusterLocation')]", "dependsOn": [ "[concat('Microsoft.ServiceFabric/clusters/', parameters('clusterName'), '/applicationTypes/', parameters('applicationTypeName'))]" ], "properties": { "provisioningState": "Default", "appPackageUrl": "[parameters('appPackageUrl')]" } }, { "apiVersion": "2019-03-01", "type": "Microsoft.ServiceFabric/clusters/applications", "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]", "location": "[variables('clusterLocation')]", "dependsOn": [ "[concat('Microsoft.ServiceFabric/clusters/', parameters('clusterName'), '/applicationTypes/', parameters('applicationTypeName'), '/versions/', parameters('applicationTypeVersion'))]" ], "properties": { "provisioningState": "Default", "typeName": "[parameters('applicationTypeName')]", "typeVersion": "[parameters('applicationTypeVersion')]", "parameters": {}, "upgradePolicy": { "upgradeReplicaSetCheckTimeout": "01:00:00.0", "forceRestart": "false", "rollingUpgradeMonitoringPolicy": { "healthCheckWaitDuration": "00:02:00.0", "healthCheckStableDuration": "00:05:00.0", "healthCheckRetryTimeout": "00:10:00.0", "upgradeTimeout": "01:00:00.0", "upgradeDomainTimeout": "00:20:00.0" }, "applicationHealthPolicy": { "considerWarningAsError": "false", "maxPercentUnhealthyDeployedApplications": "50", "defaultServiceTypeHealthPolicy": { "maxPercentUnhealthyServices": "50", "maxPercentUnhealthyPartitionsPerService": "50", "maxPercentUnhealthyReplicasPerPartition": "50" } } } } }, { "apiVersion": "2019-03-01", "type": "Microsoft.ServiceFabric/clusters/applications/services", "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]", "location": "[variables('clusterLocation')]", "dependsOn": [ "[concat('Microsoft.ServiceFabric/clusters/', parameters('clusterName'), '/applications/', parameters('applicationName'))]" ], "properties": { "provisioningState": "Default", "serviceKind": "Stateless", "serviceTypeName": "[parameters('serviceTypeName')]", "instanceCount": "-1", "partitionDescription": { "partitionScheme": "Singleton" }, "correlationScheme": [], "serviceLoadMetrics": [], "servicePlacementPolicies": [] } }, { "apiVersion": "2019-03-01", "type": "Microsoft.ServiceFabric/clusters/applications/services", "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName2'))]", "location": "[variables('clusterLocation')]", "dependsOn": [ "[concat('Microsoft.ServiceFabric/clusters/', parameters('clusterName'), '/applications/', parameters('applicationName'))]" ], "properties": { "provisioningState": "Default", "serviceKind": "Stateful", "serviceTypeName": "[parameters('serviceTypeName2')]", "targetReplicaSetSize": "3", "minReplicaSetSize": "2", "replicaRestartWaitDuration": "00:01:00.0", "quorumLossWaitDuration": "00:02:00.0", "standByReplicaKeepDuration": "00:00:30.0", "partitionDescription": { "partitionScheme": "UniformInt64Range", "count": "5", "lowKey": "1", "highKey": "5" }, "hasPersistedState": "true", "correlationScheme": [], "serviceLoadMetrics": [], "servicePlacementPolicies": [], "defaultMoveCost": "Low" } } ] }
Megjegyzés
Tekintse meg a Service Fabric Azure-Resource Manager-referenciát az egyes sablontulajdonságok használati adatainak és részleteinek megkereséséhez.
Telepíteni!
Service Fabric erőforrás-szolgáltatói alkalmazás erőforrásának eltávolítása
A következők aktiválják az alkalmazáscsomagot a fürtből való kiépítés megszüntetéséhez, és ez törli a felhasznált lemezterületet:
$resourceGroup = 'sftestcluster'
$cluster = $resourceGroup
$applicationType = 'VotingType'
$application = 'Voting'
$applicationVersion = '1.0.0'
$sf = Get-AzResource -ResourceGroupName $resourceGroup -ResourceName $cluster
$app = Get-AzResource -ResourceId "$($sf.Id)/applications/$application"
$appType = Get-AzResource -ResourceId "$($sf.Id)/applicationTypes/$applicationType"
$appTypeVersion = Get-AzResource -ResourceId "$($appType.Id)/versions/$applicationVersion"
# remove application
Remove-AzResource -ResourceId $app.Id
# remove application type version
Remove-AzResource -ResourceId $appTypeVersion.Id
# remove application type
# Remove-AzResource -ResourceId $appType.Id
Ha egyszerűen eltávolítja a Microsoft.ServiceFabric/clusters/application alkalmazást az ARM-sablonból, az nem bontja le az alkalmazást. A PowerShell-parancs Remove-AzResource a fent látható módon, vagy REST DELETE alkalmazástípusú verziók végrehajtása – A közvetlen törlés két lehetőség, amelyek használhatók.
Megjegyzés
Ha az eltávolítás befejeződött, többé nem jelenik meg a csomag verziója az SFX-ben vagy az ARM-ben. Nem törölheti azt az alkalmazástípus-verzióerőforrást, amellyel az alkalmazás fut; Az ARM/SFRP ezt megakadályozza. Ha megpróbálja megszüntetni a futó csomag létrehozását, az SF-futtatókörnyezet megakadályozza azt.
Meglévő alkalmazás kezelése Resource Manager
Ha a fürt már működik, és egyes, Resource Manager erőforrásokként kezelni kívánt alkalmazások már telepítve vannak rajta, az alkalmazások eltávolítása és ismételt üzembe helyezése helyett használhat put hívást ugyanazokkal az API-kkal, hogy az alkalmazásokat Resource Manager erőforrásként nyugtázza. További információ: Mi a Service Fabric-alkalmazás erőforrásmodellje?
Megjegyzés
Annak engedélyezéséhez, hogy a fürtfrissítés figyelmen kívül hagyja a nem megfelelő állapotú alkalmazásokat, az ügyfél megadhat "maxPercentUnhealthyApplications: 100" értéket az "upgradeDescription/healthPolicy" szakaszban; az összes beállítás részletes leírását a Service Fabrics REST API fürtfrissítési szabályzatának dokumentációja tartalmazza.
Következő lépések
- A Service Fabric parancssori felületével vagy a PowerShell-lel más alkalmazásokat helyezhet üzembe a fürtön.
- A Service Fabric-fürt frissítése
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: