Microservices en toepassingen met meerdere containers organiseren voor hoge schaalbaarheid en beschikbaarheid
Tip
Deze inhoud is een fragment uit het eBook, .NET Microservices Architecture for Containerized .NET Applications, beschikbaar op .NET Docs of als een gratis downloadbare PDF die offline kan worden gelezen.
Het gebruik van orchestrators voor toepassingen die gereed zijn voor productie is essentieel als uw toepassing is gebaseerd op microservices of eenvoudigweg over meerdere containers splitst. Zoals eerder geïntroduceerd in een op microservice gebaseerde benadering, is elke microservice eigenaar van het model en de gegevens, zodat deze onafhankelijk is vanuit het oogpunt van ontwikkeling en implementatie. Maar zelfs als u een meer traditionele toepassing hebt die bestaat uit meerdere services (zoals SOA), hebt u ook meerdere containers of services die bestaan uit één bedrijfstoepassing die als gedistribueerd systeem moet worden geïmplementeerd. Dit soort systemen zijn complex om uit te schalen en te beheren; Daarom hebt u absoluut een orchestrator nodig als u een productieklare en schaalbare toepassing met meerdere containers wilt hebben.
Afbeelding 4-23 illustreert de implementatie in een cluster van een toepassing die bestaat uit meerdere microservices (containers).
Afbeelding 4-23. Een cluster met containers
U gebruikt één container voor elk service-exemplaar. Docker-containers zijn 'implementatie-eenheden' en een container is een exemplaar van een Docker-installatiekopieën. Een host verwerkt veel containers. Het lijkt op een logische benadering. Maar hoe verwerkt u taakverdeling, routering en indeling van deze samengestelde toepassingen?
De gewone Docker Engine in één Docker-host voldoet aan de behoeften van het beheren van exemplaren van één installatiekopie op één host, maar het valt kort als het gaat om het beheren van meerdere containers die op meerdere hosts zijn geïmplementeerd voor complexere gedistribueerde toepassingen. In de meeste gevallen hebt u een beheerplatform nodig dat automatisch containers start, containers uitschaalt met meerdere exemplaren per installatiekopieën, ze opschorten of afsluiten wanneer dat nodig is, en idealiter ook bepalen hoe ze toegang hebben tot resources zoals het netwerk en de gegevensopslag.
Als u verder wilt gaan dan het beheer van afzonderlijke containers of eenvoudige samengestelde apps en wilt overstappen op grotere bedrijfstoepassingen met microservices, moet u overschakelen naar indelings- en clusteringplatforms.
Als u vanuit een architectuur en ontwikkelingspunt grote ondernemingen bouwt die bestaan uit toepassingen op basis van microservices, is het belangrijk om inzicht te krijgen in de volgende platformen en producten die geavanceerde scenario's ondersteunen:
Clusters en orchestrators. Wanneer u toepassingen wilt uitschalen op veel Docker-hosts, zoals wanneer een grote microservicetoepassing, is het essentieel dat u al deze hosts als één cluster kunt beheren door de complexiteit van het onderliggende platform te abstraheren. Dat is wat de containerclusters en orchestrators bieden. Kubernetes is een voorbeeld van een orchestrator en is beschikbaar in Azure via Azure Kubernetes Service.
Planners. Planning betekent dat een beheerder containers in een cluster kan starten, zodat ze ook een gebruikersinterface bieden. Een clusterplanner heeft verschillende verantwoordelijkheden: om de resources van het cluster efficiënt te gebruiken, om de beperkingen van de gebruiker in te stellen, containers efficiënt te verdelen over knooppunten of hosts en om robuust te zijn tegen fouten en hoge beschikbaarheid te bieden.
De concepten van een cluster en een scheduler zijn nauw verwant, dus de producten van verschillende leveranciers bieden vaak beide mogelijkhedensets. De volgende lijst bevat de belangrijkste platform- en softwarekeuzen die u hebt voor clusters en planners. Deze orchestrators worden over het algemeen aangeboden in openbare clouds zoals Azure.
Softwareplatforms voor containerclustering, indeling en planning
Platform | Beschrijving |
---|---|
Kubernetes |
Kubernetes is een opensource-product dat functionaliteit biedt die varieert van clusterinfrastructuur en containerplanning tot het organiseren van mogelijkheden. Hiermee kunt u de implementatie, schaalaanpassing en bewerkingen van toepassingscontainers in clusters van hosts automatiseren. Kubernetes biedt een containergerichte infrastructuur waarmee toepassingscontainers worden gegroepeerd in logische eenheden voor eenvoudig beheer en detectie. Kubernetes is volwassen in Linux, minder volwassen in Windows. |
Azure Kubernetes Service (AKS) |
AKS is een beheerde Kubernetes-containerindelingsservice in Azure die het beheer, de implementatie en bewerkingen van het Kubernetes-cluster vereenvoudigt. |
Azure Container Apps |
Azure Container Apps is een beheerde serverloze containerservice voor het bouwen en implementeren van moderne apps op schaal. |
Orchestrators op basis van containers gebruiken in Microsoft Azure
Verschillende cloudleveranciers bieden Ondersteuning voor Docker-containers plus Docker-clusters en indelingsondersteuning, waaronder Microsoft Azure, Amazon EC2 Container Service en Google Container Engine. Microsoft Azure biedt Docker-cluster- en orchestratorondersteuning via Azure Kubernetes Service (AKS).
Azure Kubernetes Service gebruiken
Een Kubernetes-clusterpools met meerdere Docker-hosts en deze beschikbaar maken als één virtuele Docker-host, zodat u meerdere containers in het cluster kunt implementeren en kunt uitschalen met een willekeurig aantal containerinstanties. Het cluster verwerkt alle complexe beheerpruimen, zoals schaalbaarheid, status, enzovoort.
AKS biedt een manier om het maken, configureren en beheren van een cluster van virtuele machines in Azure te vereenvoudigen die vooraf zijn geconfigureerd voor het uitvoeren van toepassingen in containers. Met behulp van een geoptimaliseerde configuratie van populaire opensource-plannings- en indelingshulpprogramma's kunt u met AKS uw bestaande vaardigheden gebruiken of gebruikmaken van een grote en groeiende community-expertise voor het implementeren en beheren van toepassingen op basis van containers in Microsoft Azure.
Azure Kubernetes Service optimaliseert de configuratie van populaire opensource-hulpprogramma's en technologieën voor Docker-clusters voor Azure. U krijgt een open oplossing die portabiliteit biedt voor uw containers en uw toepassingsconfiguratie. U selecteert de grootte, het aantal hosts en de orchestratorhulpprogramma's, en AKS verwerkt alles.
Afbeelding 4-24. Vereenvoudigde structuur en topologie van Kubernetes-cluster
In afbeelding 4-24 ziet u de structuur van een Kubernetes-cluster waarin een hoofdknooppunt (VM) de meeste coördinatie van het cluster regelt en u containers kunt implementeren op de rest van de knooppunten, die vanuit een toepassingsweergave worden beheerd als één pool en u kunt schalen naar duizenden of zelfs tienduizenden containers.
Ontwikkelomgeving voor Kubernetes
In de ontwikkelomgeving kondigde Docker in juli 2018 aan dat Kubernetes ook kan worden uitgevoerd op één ontwikkelcomputer (Windows 10 of macOS) door Docker Desktop te installeren. U kunt later implementeren in de cloud (AKS) voor verdere integratietests, zoals wordt weergegeven in afbeelding 4-25.
Afbeelding 4-25. Kubernetes uitvoeren op een ontwikkelcomputer en in de cloud
Aan de slag met Azure Kubernetes Service (AKS)
Als u AKS wilt gaan gebruiken, implementeert u een AKS-cluster vanuit Azure Portal of met behulp van de CLI. Zie Een AKS-cluster (Azure Kubernetes Service) implementeren voor meer informatie over het implementeren van een Kubernetes-cluster in Azure.
Er worden geen kosten in rekening gebracht voor een van de software die standaard is geïnstalleerd als onderdeel van AKS. Alle standaardopties worden geïmplementeerd met opensource-software. AKS is beschikbaar voor meerdere virtuele machines in Azure. Er worden alleen kosten in rekening gebracht voor de rekeninstanties die u kiest en de andere onderliggende infrastructuurresources die worden gebruikt, zoals opslag en netwerken. Er zijn geen incrementele kosten voor AKS zelf.
De standaardoptie voor productie-implementatie voor Kubernetes is het gebruik van Helm-grafieken, die in de volgende sectie worden geïntroduceerd.
Implementeren met Helm-grafieken in Kubernetes-clusters
Wanneer u een toepassing implementeert in een Kubernetes-cluster, kunt u het oorspronkelijke kubectl.exe CLI-hulpprogramma gebruiken met behulp van implementatiebestanden op basis van de systeemeigen indeling (.yaml-bestanden), zoals al in de vorige sectie is vermeld. Voor complexere Kubernetes-toepassingen, zoals bij het implementeren van complexe microservicetoepassingen, is het echter raadzaam Om Helm te gebruiken.
Helm Charts helpt u bij het definiëren, versie, installeren, delen, upgraden of terugdraaien van zelfs de meest complexe Kubernetes-toepassing.
Verder wordt Helm-gebruik ook aanbevolen omdat andere Kubernetes-omgevingen in Azure, zoals Azure Dev Spaces , ook zijn gebaseerd op Helm-grafieken.
Helm wordt onderhouden door de Cloud Native Computing Foundation (CNCF) - in samenwerking met Microsoft, Google, Bitnami en de Helm-inzendercommunity.
Zie het artikel Helm-grafieken gebruiken om eShopOnContainers te implementeren in AKS voor meer implementatie-informatie over Helm-grafieken en Kubernetes.
Aanvullende bronnen
Aan de slag met Azure Kubernetes Service (AKS)
https://learn.microsoft.com/azure/aks/kubernetes-walkthrough-portalAzure Dev Spaces
https://learn.microsoft.com/azure/dev-spaces/azure-dev-spacesKubernetes De officiële site.
https://kubernetes.io/