Delen via


Web-apps implementeren op Azure-VM's met behulp van implementatiegroepen

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

In eerdere versies van Azure Pipelines vereist het implementeren van toepassingen op meerdere servers aanzienlijke planning en onderhoud. Externe communicatie van Windows PowerShell moest handmatig worden ingeschakeld, specifieke poorten moesten worden geopend en implementatieagents moesten op elke server worden geïnstalleerd. Voor het beheren van implementaties is ook handmatige interventie vereist. De introductie van implementatiegroepen heeft deze uitdagingen aanzienlijk vereenvoudigd.

Een implementatiegroep installeert een implementatieagent op elke doelserver in de groep en stelt de release-pijplijn in staat om de toepassing geleidelijk op die servers te implementeren. U kunt meerdere pijplijnen voor implementaties maken om gefaseerde levering van toepassingsupdates aan verschillende gebruikersgroepen toe te staan.

Notitie

Implementatiegroepen worden gebruikt in klassieke pijplijnen. Als u YAML-pijplijnen gebruikt, raadpleeg dan Azure DevOps-omgevingen maken en targeten.

Vereiste voorwaarden

Product Requirements
Azure DevOps - Een Azure DevOps organisatie.
- Een Azure DevOps--project.
Azure DevOps Demo Generator - Stel de demogenerator in.
- Maak een nieuw Azure DevOps-project en kies de DeploymentGroups-sjabloon .
Azuur - Een Azure-abonnement.

Resources instellen in Azure

In deze sectie wordt u begeleid bij het instellen van uw Azure-resources met behulp van een Azure Resource Manager-sjabloon. Er worden zes webservers (VM's) ingericht met IIS geconfigureerd, een SQL Server-VM (databaseserver), een Azure-load balancer en alle benodigde netwerkverbindingen.

  1. Selecteer de knop Implementeren in Azure om de implementatie van uw resources in Azure te starten.

  2. Vul de vereiste gegevens in en selecteer Beoordelen en maken.

    U kunt elke toegestane combinatie van gebruikersnamen en wachtwoorden gebruiken, omdat u deze niet opnieuw in dit artikel gebruikt. De waarde van de Env Prefix Name wordt toegevoegd aan alle resourcenamen om te garanderen dat ze wereldwijd uniek zijn. Gebruik iets persoonlijks of willekeurigs. Als er een naamconflict optreedt tijdens de validatie of het maken, kunt u deze waarde wijzigen en opnieuw implementeren. Het inrichten duurt doorgaans 10 tot 15 minuten.

    Schermopname van het instellen van Azure-resources.

  3. Nadat de validatie is voltooid, selecteert u Maken om uw resources te implementeren.

  4. Nadat de implementatie is voltooid, gaat u naar uw resourcegroep in Azure Portal om de gegenereerde resources te controleren. Selecteer de databaseserver-VM met sqlSrv in de naam om de details ervan weer te geven.

    Schermopname van zojuist gemaakte resources in Azure.

  5. Kopieer de DNS-naamwaarde, omdat je deze in een latere stap nodig hebt.

    Schermopname van een databaseserver-VM in Azure.

Een implementatiegroep maken

Een implementatiegroep is een verzameling computers. Op elke computer is een implementatieagent geïnstalleerd. Deze machines communiceren met Azure Pipelines om toepassingsimplementaties te coördineren.

  1. Ga naar het Azure DevOps-project dat u eerder hebt gemaakt met behulp van de demogenerator.

  2. Selecteer Pijplijnen>Implementatiegroepen.

  3. Selecteer Een implementatiegroep toevoegen.

  4. Voer Release in als de naam van de implementatiegroep en selecteer Create.

Er wordt een registratiescript gegenereerd. U kunt dit script gebruiken om doelservers te registreren en de implementatieagent handmatig te installeren. In dit artikel worden de doelservers echter automatisch geregistreerd als onderdeel van de release-pijplijn.

Een persoonlijk toegangstoken maken

  1. Selecteer in uw Azure DevOps-project het pictogram Gebruikersinstellingen en selecteer vervolgens Persoonlijke toegangstokens.

  2. Selecteer Nieuw token, voer een naam in voor uw persoonlijke toegangstoken (PAT) en kies vervolgens een vervaldatum.

  3. Selecteer Aangepast gedefinieerd voor bereiken, selecteer Alle bereiken weergeven en controleer vervolgens de volgende bereiken:

    • Project en team>Lezen en schrijven
    • Agentpools>Lezen en beheren
    • Implementatiegroepen>Lezen en beheren
  4. Wanneer u klaar bent, selecteert u Maken. Kopieer uw PAT, omdat u deze nodig hebt in de volgende sectie.

De release-pijplijn configureren

De sjabloon voor de klassieke release-pijplijn bevat één agenttaak, agentfase. Deze taak voert activiteiten uit op een agent binnen een agentgroep.

De sjabloon bevat ook twee implementatiegroeptaken: implementatiegroepsfase en IIS-implementatiefase. Taken voor implementatiegroepen voeren taken uit op machines die zijn gedefinieerd in een implementatiegroep.

Gebruik de volgende stappen om elke taak te configureren.

De agenttaak configureren

  1. Ga naar uw Azure DevOps-project en selecteer Pijplijnen>Releases.

  2. Selecteer de releasedefinitie implementatiegroepen en selecteer vervolgens Bewerken.

  3. Selecteer het tabblad Taken om de implementatietaken in uw pijplijn weer te geven.

  4. Selecteer de fase Agent en kies vervolgens de Azure Pipelines-pool en de meest recente specificatie van Windows.

    Schermopname van de agentfase in de klassieke releasepipeline.

  5. Selecteer de azure-resourcegroepimplementatietaak , selecteer de Azure-abonnementswaarde die u eerder hebt gebruikt om uw resources te maken en selecteer vervolgens Autoriseren om de verbinding te autoriseren. Nadat de verbinding is geautoriseerd, selecteert u de resourcegroepwaarde die u voor dit artikel hebt gemaakt.

    Schermopname van het configureren van een resourcegroep in een implementatietaak.

  6. Deze taak wordt uitgevoerd op virtuele machines in Azure en moet verbinding kunnen maken met de pijplijn om de vereisten voor de implementatiegroep te voltooien. Als u de verbinding wilt beveiligen, moet u een serviceverbinding instellen met behulp van de PAT die u eerder hebt gemaakt. Schuif omlaag binnen dezelfde taak en selecteer Nieuw onder azure Pipelines-serviceverbinding.

  7. Voer in het deelvenster Nieuwe serviceverbinding de waarde van de verbindings-URL in voor uw Azure DevOps-organisatie: https://dev.azure.com/organizationName. Plak de waarde van het persoonlijke toegangstoken dat u eerder hebt gemaakt, geef een waarde voor de serviceverbindingsnaam op en schakel het selectievakje Toegang verlenen in voor alle pijplijnen . Wanneer u klaar bent, selecteert u Verifiëren en opslaan.

    Schermopname van het configureren van een nieuwe serviceverbinding voor een implementatietaak.

  8. Schuif omlaag in de Azure Resourcegroep-implementatietaak. Selecteer in de vervolgkeuzelijsten de waarde van uw teamproject en de waarde van de implementatiegroep die u eerder hebt gemaakt.

    Schermopname van het configureren van een teamproject en implementatiegroep voor een implementatietaak.

De taken van de implementatiegroep configureren

  1. Selecteer in de releasedefinitie implementatiegroepen de fasetaak Implementatiegroep .

    Met deze taak worden taken uitgevoerd op de machines die zijn gedefinieerd in de implementatiegroep. Deze taak maakt gebruik van de SQL-Svr-DB-tag om te implementeren in een subset van doelen in de implementatiegroep.

    Selecteer in de vervolgkeuzelijst Implementatiegroep de release-implementatiegroep die u eerder hebt gemaakt.

    Schermopname van het configureren van een taak voor de fase van de implementatiegroep.

  2. Selecteer de iis-implementatiefasetaak . Deze taak maakt gebruik van de WebSrv-tag om de webtoepassing te implementeren in een subset van de webservers. Selecteer in de vervolgkeuzelijst de waarde van de implementatiegroep die u eerder hebt gemaakt.

  3. De taken loskoppelen van Azure Network Load Balancer en Verbinding maken met Azure Network Load Balancer worden afgeschaft. U kunt deze voorlopig uitschakelen door met de rechtermuisknop op de taken te klikken en taak(en) uitschakelen te selecteren.

  4. De taken iis-web-app beheren en IIS-web-app implementeren zijn vooraf ingevuld en vereisen geen wijzigingen.

  5. Selecteer het tabblad Variabelen , selecteer Pijplijnvariabelen en geef de volgende waarden op. Vervang de tijdelijke aanduiding in de DefaultConnectionString variabele door de SQL Server DNS-naam die u eerder hebt gekopieerd.

    Naam van de variabele Variabele waarde
    DatabaseName PartsUnlimited-Dev
    DBPassword xxxxxxxx
    DBUserName xxxxxxxx
    DefaultConnectionString Data Source=[YOUR_DNS_NAME];Initial Catalog=PartsUnlimited-Dev;User ID=xxxxxxxx;Password=xxxxxxxx;MultipleActiveResultSets=False;Connection Timeout=30;
    ServerName localhost
  6. Selecteer Opslaan, voeg desgewenst een opmerking toe en selecteer vervolgens OK.

Aanbeveling

Als u een foutmelding krijgt dat de DefaultConnectionString variabele als geheim moet worden opgeslagen, selecteert u het hangslotpictogram naast de waarde om deze te beveiligen.

Een release maken en de toepassing implementeren

Nu de releasedefinitie is geconfigureerd en opgeslagen, kunt u doorgaan met het maken van een release om uw web-app te implementeren in Azure.

Voordat u de release start, moet u ervoor zorgen dat de build-pijplijn ten minste één keer is uitgevoerd. Met deze actie wordt het pijplijnartefact gegenereerd dat vereist is voor implementatie. Als u de release-pijplijn vóór de build-pijplijn probeert uit te voeren, is de sectie Artefacten in het deelvenster Release leeg.

Gebruik de volgende stappen om uw pijplijn uit te voeren, een pijplijnartefact te genereren en vervolgens een nieuwe release te maken:

  1. Selecteer Pijplijn in uw Azure DevOps-project en selecteer vervolgens de build-pijplijn voor implementatiegroepen .

  2. Selecteer Pijplijn uitvoeren. Klik in het deelvenster Pijplijn uitvoeren op uw Agentspecificatie-waarde en vervolgens op Uitvoeren.

    Schermopname die laat zien hoe een pijplijnuitvoering geconfigureerd kan worden.

  3. Nadat de pijplijn is voltooid, wordt er een pijplijnartefact gegenereerd. U kunt deze bekijken vanuit de pijplijnsamenvatting.

    Schermopname van een gegenereerd pijplijnartefact.

  4. Ga naar De release van Pipelines> en selecteer uw releasedefinitie. Selecteer vervolgens Release maken om de implementatiepijplijn te starten.

  5. Selecteer Maken in het deelvenster Een nieuwe release maken.

    Schermopname van het maken van een nieuwe release.

  6. Selecteer de pijplijnuitvoering om het overzicht te openen. Uw pijplijn moet de status Lopend hebben. Selecteer de fase om de gedetailleerde implementatielogboeken weer te geven.

    Schermopname van een overzicht van een release-pijplijn.

  7. In het releaseoverzicht kunt u de status van elke fase van de implementatie bewaken.

    Schermopname van een releaseoverzicht.

Troubleshoot

Verbindings- of aanmeldingsfout

Tijdens het uitvoeren van de Sql Dacpac-implementatie op machinegroeptaak kun je mogelijk een van de volgende fouten tegenkomen:

  • 'Kan geen verbinding maken met de hoofd- of doelserver'
  • "Er is een verbinding tot stand gebracht met de server, maar er is een fout opgetreden tijdens het aanmeldingsproces"

Als u een van deze fouten tegenkomt, voert u de volgende stappen uit:

  1. Zorg ervoor dat u de database succesvol hebt gemaakt tijdens de uitrol van resources. U kunt bevestigen dat u dit hebt gemaakt met behulp van de Azure CLI of via sqlcmd.

    sqlcmd -S <server-name> -U <username> -P <password> -Q "SELECT name FROM sys.databases"
    

    Als uw database zich niet in de lijst bevindt, kunt u een nieuwe maken met behulp van de volgende opdracht:

    sqlcmd -S <server-name> -U <username> -P <password> -Q "CREATE DATABASE [YourDatabaseName]"
    
  2. Zorg ervoor dat SQL Server-verificatie is ingeschakeld. Uw SQL Server-implementatie moet zijn geconfigureerd om zowel SQL Server-verificatie als Windows-verificatie (gemengde modus) toe te staan. SQL Server-verificatie inschakelen:

    a. Verbinding maken met behulp van SQL Server Management Studio of sqlcmd.

    b. Voer de volgende query uit.

    EXEC xp_instance_regwrite 
        N'HKEY_LOCAL_MACHINE',
        N'Software\\Microsoft\\MSSQLServer\\MSSQLServer',
        N'LoginMode',
        REG_DWORD,
        2;
    

    Hoofdstuk c. Start de SQL Server-service opnieuw op om de wijziging van kracht te laten worden:

    net stop MSSQLSERVER
    net start MSSQLSERVER
    

Agents die als offline worden weergegeven

Als een of meer van uw agents als offline worden weergegeven, ook al worden ze uitgevoerd op uw VIRTUELE machine, kunt u een aantal dingen proberen. Meld u eerst aan bij de VM waarop de agent wordt uitgevoerd en voer de volgende opdracht uit om te controleren of uw VM wordt omgezet in dezelfde set IP-adressen:

nslookup dev.azure.com

Als alle VM's worden omgezet in dezelfde set IP-adressen, moet u ervoor zorgen dat de load balancer is geconfigureerd met de juiste uitgaande regel. U kunt een back-endpool toevoegen aan uw load balancer in Azure, de NIC's van uw VM's toevoegen aan de back-endpool en vervolgens de back-endpool koppelen aan de uitgaande regel van uw load balancer. Ga als volgt te werk om deze taak uit te voeren:

  1. Ga naar Azure en zoek uw load balancer.

  2. Selecteer Back-endpools en kies vervolgens uw bestaande pool of maak een nieuwe. Voeg onder IP-configuraties uw webservers toe.

  3. Ga naar Taakverdelingsregels en selecteer uw taakverdelingsregel. Selecteer in de vervolgkeuzelijst de back-endpool van uw keuze.

De hulpbronnen opschonen

In dit artikel hebt u een Azure DevOps-project gemaakt en resources geïmplementeerd in Azure. Als u ze niet meer nodig hebt, volgt u deze stappen om op te schonen.

Stap 1: Het Azure DevOps-project verwijderen

Ga naar Project-instellingen en selecteer Vervolgens Overzicht>verwijderen.

Stap 2: De Azure-resourcegroep verwijderen

Alle Azure-resources die u in dit artikel hebt gemaakt, bevinden zich in dezelfde resourcegroep. Als u de resourcegroep verwijdert, worden alle gekoppelde resources verwijderd.

Als u de resourcegroep wilt verwijderen met behulp van de Azure CLI, voert u deze opdracht uit:

az group delete --name <RESOURCE_GROUP_NAME> --yes --no-wait

Ga als volgt te werk om de resourcegroep te verwijderen met behulp van Azure Portal:

  1. Ga in Azure Portal naar Resourcegroepen.

  2. Selecteer de resourcegroep die u in het artikel hebt gebruikt.

  3. Selecteer Resourcegroep verwijderen, bevestig de naam en selecteer Vervolgens Verwijderen.