Service Fabric-toepassingslevenscyclus

Net als bij andere platforms doorloopt een toepassing in Azure Service Fabric meestal de volgende fasen: ontwerp, ontwikkeling, testen, implementatie, upgraden, onderhoud en verwijdering. Service Fabric biedt eersteklas ondersteuning voor de volledige levenscyclus van cloudtoepassingen, van ontwikkeling tot implementatie, dagelijks beheer en onderhoud tot uiteindelijke buitengebruikstelling. Met het servicemodel kunnen verschillende rollen onafhankelijk van elkaar deelnemen aan de levenscyclus van de toepassing. Dit artikel bevat een overzicht van de API's en hoe deze worden gebruikt door de verschillende rollen in de fasen van de levenscyclus van de Service Fabric-toepassing.

Bekijk deze pagina voor een trainingsvideo waarin wordt beschreven hoe u de levenscyclus van uw toepassing beheert:

Belangrijk

Er worden twee CLI-hulpprogramma's gebruikt om te communiceren met Service Fabric. Azure CLI wordt gebruikt om Azure-resources te beheren, zoals een Service Fabric-cluster dat wordt gehost op Azure. Service Fabric CLI wordt gebruikt om rechtstreeks verbinding te maken met het Service Fabric-cluster (ongeacht waar dit wordt gehost) en om het cluster, de toepassingen en de services te beheren.

Servicemodelrollen

De servicemodelrollen zijn:

  • Serviceontwikkelaar: ontwikkelt modulaire en algemene services die opnieuw kunnen worden gebruikt en kunnen worden gebruikt in meerdere toepassingen van hetzelfde type of verschillende typen. Een wachtrijservice kan bijvoorbeeld worden gebruikt voor het maken van een tickettoepassing (helpdesk) of een e-commercetoepassing (winkelwagen).
  • Toepassingsontwikkelaar: maakt toepassingen door een verzameling services te integreren om te voldoen aan bepaalde specifieke vereisten of scenario's. Een e-commercewebsite kan bijvoorbeeld 'JSON Stateless Front-End Service', 'Auction Stateful Service' en 'Queue Stateful Service' integreren om een veilingoplossing te bouwen.
  • Toepassingsbeheerder: neemt beslissingen over de configuratie van de toepassing (het invullen van de configuratiesjabloonparameters), de implementatie (toewijzing aan beschikbare resources) en de kwaliteit van de service. Een toepassingsbeheerder bepaalt bijvoorbeeld de landinstelling van de taal (bijvoorbeeld Engels voor de Verenigde Staten of Japans voor Japan) van de toepassing. Een andere geïmplementeerde toepassing kan verschillende instellingen hebben.
  • Operator: implementeert toepassingen op basis van de toepassingsconfiguratie en vereisten die zijn opgegeven door de toepassingsbeheerder. Een operator richt bijvoorbeeld de toepassing in en implementeert deze en zorgt ervoor dat deze wordt uitgevoerd in Azure. Operators bewaken informatie over de status en prestaties van de toepassing en onderhouden de fysieke infrastructuur indien nodig.

Ontwikkelen

  1. Een serviceontwikkelaar ontwikkelt verschillende typen services met behulp van het programmeermodel Reliable Actors of Reliable Services .
  2. Een serviceontwikkelaar beschrijft declaratief de ontwikkelde servicetypen in een servicemanifestbestand dat bestaat uit een of meer code-, configuratie- en gegevenspakketten.
  3. Een toepassingsontwikkelaar bouwt vervolgens een toepassing met behulp van verschillende servicetypen.
  4. Een toepassingsontwikkelaar beschrijft het toepassingstype in een toepassingsmanifest declaratief door te verwijzen naar de servicemanifesten van de samenstellende services en op de juiste manier verschillende configuratie- en implementatie-instellingen van de samenstellende services te overschrijven en parameteriseren.

Zie Aan de slag met Reliable Actors en Aan de slag met Reliable Services voor voorbeelden.

Implementeren

  1. Een toepassingsbeheerder past het toepassingstype aan op een specifieke toepassing die moet worden geïmplementeerd in een Service Fabric-cluster door de juiste parameters van het element ApplicationType op te geven in het toepassingsmanifest.
  2. Een operator uploadt het toepassingspakket naar het clusterinstallatiekopiearchief met behulp van de methode CopyApplicationPackage of de cmdlet Copy-ServiceFabricApplicationPackage. Het toepassingspakket bevat het toepassingsmanifest en de verzameling servicepakketten. Service Fabric implementeert toepassingen vanuit het toepassingspakket dat is opgeslagen in het installatiekopieënarchief. Dit kan een Azure Blob-archief of de Service Fabric-systeemservice zijn.
  3. De operator richt vervolgens het toepassingstype in het doelcluster in vanuit het geüploade toepassingspakket met behulp van de methode ProvisionApplicationAsync, de cmdlet Register-ServiceFabricApplicationType of de bewerking Een toepassings-REST inrichten.
  4. Nadat de toepassing is ingericht, start een operator de toepassing met de parameters die zijn opgegeven door de toepassingsbeheerder met behulp van de methode CreateApplicationAsync, de cmdlet New-ServiceFabricApplication of de bewerking Create Application REST.
  5. Nadat de toepassing is geïmplementeerd, gebruikt een operator de methode CreateServiceAsync, de cmdlet New-ServiceFabricService of de bewerking Create Service REST om nieuwe service-exemplaren voor de toepassing te maken op basis van beschikbare servicetypen.
  6. De toepassing wordt nu uitgevoerd in het Service Fabric-cluster.

Zie Een toepassing implementeren voor voorbeelden.

Testen

  1. Na de implementatie in het lokale ontwikkelingscluster of een testcluster voert een serviceontwikkelaar het ingebouwde failovertestscenario uit met behulp van de klassen FailoverTestScenarioParameters en FailoverTestScenario of de cmdlet Invoke-ServiceFabricFailoverTestScenario. In het failovertestscenario wordt een opgegeven service uitgevoerd via belangrijke overgangen en failovers om ervoor te zorgen dat deze nog steeds beschikbaar is en werkt.
  2. De serviceontwikkelaar voert vervolgens het ingebouwde chaostestscenario uit met behulp van de klassen ChaosTestScenarioParameters en ChaosTestScenario of de cmdlet Invoke-ServiceFabricChaosTestScenario. Het chaostestscenario veroorzaakt willekeurig meerdere knooppunt-, codepakket- en replicafouten in het cluster.
  3. De serviceontwikkelaartest service-naar-service-communicatie door testscenario's te ontwerpen waarin primaire replica's rond het cluster worden verplaatst.

Zie Inleiding tot de foutanalyseservice voor meer informatie.

Upgraden

  1. Een serviceontwikkelaar werkt de samenstellende services van de geïnstantieerde toepassing bij en/of lost fouten op en biedt een nieuwe versie van het servicemanifest.
  2. Een toepassingsontwikkelaar overschrijft en parameteriseert de configuratie- en implementatie-instellingen van de consistente services en biedt een nieuwe versie van het toepassingsmanifest. De ontwikkelaar van de toepassing neemt vervolgens de nieuwe versies van de servicemanifesten op in de toepassing en biedt een nieuwe versie van het toepassingstype in een bijgewerkt toepassingspakket.
  3. Een toepassingsbeheerder neemt de nieuwe versie van het toepassingstype op in de doeltoepassing door de juiste parameters bij te werken.
  4. Een operator uploadt het bijgewerkte toepassingspakket naar het clusterinstallatiekopiearchief met behulp van de methode CopyApplicationPackage of de cmdlet Copy-ServiceFabricApplicationPackage. Het toepassingspakket bevat het toepassingsmanifest en de verzameling servicepakketten.
  5. Een operator richt de nieuwe versie van de toepassing in het doelcluster in met behulp van de methode ProvisionApplicationAsync, de cmdlet Register-ServiceFabricApplicationType of de bewerking Een toepassings-REST inrichten.
  6. Een operator werkt de doeltoepassing bij naar de nieuwe versie met behulp van de methode UpgradeApplicationAsync, de cmdlet Start-ServiceFabricApplicationUpgrade of de bewerking Een toepassings-REST upgraden.
  7. Een operator controleert de voortgang van de upgrade met behulp van de methode GetApplicationUpgradeProgressAsync, de cmdlet Get-ServiceFabricApplicationUpgrade of de REST-bewerking Voortgang van toepassingsupgrade ophalen.
  8. Indien nodig wijzigt de operator de parameters van de huidige toepassingsupgrade en past deze opnieuw toe met behulp van de methode UpdateApplicationUpgradeAsync, de cmdlet Update-ServiceFabricApplicationUpgrade of de REST-bewerking Toepassingsupgrade bijwerken.
  9. Indien nodig draait de operator de huidige toepassingsupgrade terug met behulp van de methode RollbackApplicationUpgradeAsync, de cmdlet Start-ServiceFabricApplicationRollback of de REST-bewerking Rollback Application Upgrade.
  10. Service Fabric voert een upgrade uit van de doeltoepassing die in het cluster wordt uitgevoerd zonder dat de beschikbaarheid van de samenstellende services verloren gaat.

Zie de zelfstudie Toepassingsupgrade voor voorbeelden.

Onderhouden

  1. Voor upgrades en patches van het besturingssysteem heeft Service Fabric interfaces met de Azure-infrastructuur om de beschikbaarheid te garanderen van alle toepassingen die in het cluster worden uitgevoerd.
  2. Voor upgrades en patches naar het Service Fabric-platform voert Service Fabric zelf een upgrade uit zonder dat de beschikbaarheid van toepassingen die op het cluster worden uitgevoerd, verloren gaat.
  3. Een toepassingsbeheerder keurt het toevoegen of verwijderen van knooppunten uit een cluster goed na analyse van historische gegevens over capaciteitsgebruik en de verwachte toekomstige vraag.
  4. Een operator voegt knooppunten toe en verwijdert deze die zijn opgegeven door de toepassingsbeheerder.
  5. Wanneer nieuwe knooppunten worden toegevoegd aan of bestaande knooppunten uit het cluster worden verwijderd, wordt de taakverdeling van de actieve toepassingen automatisch verdeeld over alle knooppunten in het cluster om optimale prestaties te bereiken.

Verwijderen

  1. Een operator kan een specifiek exemplaar van een actieve service in het cluster verwijderen zonder de hele toepassing te verwijderen met behulp van de methode DeleteServiceAsync, de cmdlet Remove-ServiceFabricService of de rest-bewerking Delete Service.
  2. Een operator kan ook een toepassingsexemplaar en alle bijbehorende services verwijderen met behulp van de methode DeleteApplicationAsync, de cmdlet Remove-ServiceFabricApplication of de bewerking Application REST verwijderen.
  3. Zodra de toepassing en services zijn gestopt, kan de operator de inrichting van het toepassingstype opheffen met behulp van de methode UnprovisionApplicationAsync, de cmdlet Unregister-ServiceFabricApplicationType of de bewerking Inrichting van een toepassings-REST ongedaan maken. Als u de inrichting van het toepassingstype ongedaan maakt, wordt het toepassingspakket niet verwijderd uit de ImageStore.
  4. Een operator verwijdert het toepassingspakket uit de ImageStore met behulp van de methode RemoveApplicationPackage of de cmdlet Remove-ServiceFabricApplicationPackage.

Zie Een toepassing implementeren voor voorbeelden.

Schijfruimte behouden in het clusterinstallatiekopieënarchief

De ImageStoreService bewaart gekopieerde en ingerichte pakketten, wat kan leiden tot accumulatie van bestanden. Bestandsaccumulatie kan ertoe leiden dat de ImageStoreService (fabric:/System/ImageStoreService) de schijf vult en de buildtijd voor ImageStoreService-replica's kan verhogen.

Gebruik de volgende inrichtingsvolgorde om bestandsaccumulatie te voorkomen:

  1. Pakket kopiëren naar ImageStore en de optie voor comprimeren gebruiken

  2. Het pakket inrichten

  3. Het pakket verwijderen uit het installatiekopieënarchief

  4. De toepassing/het cluster upgraden

  5. Inrichting van de oude versie ongedaan maken

Stap 3 en 5 in de bovenstaande procedure voorkomen dat bestanden in de afbeeldingsopslag worden opgeslagen.

Configuratie voor automatisch opschonen

U kunt stap 3 hierboven automatiseren met behulp van PowerShell of XML. Dit zorgt ervoor dat het toepassingspakket automatisch wordt verwijderd nadat de registratie van het toepassingstype is geslaagd.

PowerShell:

Register-ServiceFabricApplicationTye -ApplicationPackageCleanupPolicy Automatic

XML:

<Section Name="Management">
  <Parameter Name="CleanupApplicationPackageOnProvisionSuccess" Value="True" />
</Section>

U kunt stap 5 hierboven automatiseren met behulp van XML. Dit zorgt ervoor dat ongebruikte toepassingstypen automatisch niet meer worden geregistreerd.

<Section Name="Management">
  <Parameter Name="CleanupUnusedApplicationTypes" Value="true" />
  <Parameter Name="PeriodicCleanupUnusedApplicationTypes" Value="true" />     
  <Parameter Name="TriggerAppTypeCleanupOnProvisionSuccess" Value="true" />
  <Parameter Name="MaxUnusedAppTypeVersionsToKeep" Value="3" />
</Section>

Bestanden en gegevens op knooppunten opschonen

De replicatie van toepassingsbestanden distribueert uiteindelijk de bestanden naar alle knooppunten, afhankelijk van de balanceringsacties. Dit kan schijfdruk creëren, afhankelijk van het aantal toepassingen en hun bestandsgrootte. Zelfs wanneer er geen actief exemplaar wordt uitgevoerd op een knooppunt, blijven de bestanden van een voormalig exemplaar behouden. Hetzelfde geldt voor gegevens uit betrouwbare verzamelingen die worden gebruikt door stateful services. Dit is bedoeld voor een hogere beschikbaarheid. In het geval van een nieuw toepassingsexemplaar op hetzelfde knooppunt moeten er geen bestanden worden gekopieerd. Voor betrouwbare verzamelingen moet alleen de delta worden gerepliceerd.

Als u de binaire bestanden van de toepassing volledig wilt verwijderen, moet u de registratie van het toepassingstype ongedaan maken.

Aanbevelingen voor het verminderen van de schijfdruk:

  1. Remove-ServiceFabricApplicationPackage hiermee wordt het pakket verwijderd van de tijdelijke uploadlocatie.
  2. Unregister-ServiceFabricApplicationType maakt opslagruimte vrij door de bestanden van het toepassingstype te verwijderen uit de opslagservice voor installatiekopieën en alle knooppunten. De verwijderingsmanager wordt standaard elk uur uitgevoerd.
  3. CleanupUnusedApplicationTypes schoont oude ongebruikte toepassingsversies automatisch op.
    {
      "name": "Management",
      "parameters": [
        {
          "name": "CleanupUnusedApplicationTypes",
          "value": true
        },
        {
          "name": "MaxUnusedAppTypeVersionsToKeep",
          "value": "3"
        }
      ]
    }
    
  4. Remove-ServiceFabricClusterPackage verwijdert oude niet-gebruikte binaire runtime-installatiebestanden.

Notitie

Er is een functie in ontwikkeling waarmee Service Fabric toepassingsmappen kan verwijderen zodra de toepassing van het knooppunt is verwijderd.

Volgende stappen

Zie voor meer informatie over het ontwikkelen, testen en beheren van Service Fabric-toepassingen en -services: