Containers gebruiken met SQL Server in Linux

Voltooid

Containers helpen organisaties om flexibele en schaalbare installaties van SQL Server te maken.

Wide World Importers ondersteunt een aantal grootschalige databaseworkloads die een flexibele en schaalbare hostingarchitectuur vereisen. U wilt de mogelijkheid evalueren om SQL Server te hosten in virtuele omgevingen, zoals virtuele machines (VM's) en containers.

Hier leert u hoe u kunt kiezen tussen containers en VM's voor een database.

VM's en containers vergelijken

Virtualisatie is een techniek die beheerders gebruiken om meerdere virtuele servers op één fysieke server te hosten. Wanneer u virtualisatie gebruikt, kunt u eenvoudig extra exemplaren van bijvoorbeeld SQL Server implementeren zonder extra hardware te kopen en te installeren. Er zijn twee algemene benaderingen voor virtualisatie:

  • VM's: Wanneer u VM's gebruikt, is elk exemplaar een volledige virtuele server met een eigen besturingssysteem en hardware.
  • Containers: Wanneer u containers gebruikt, deelt elk exemplaar een besturingssysteem en hardwarebronnen met de hostcomputer.

Zowel VM's als containers bieden een geïsoleerde omgeving waarin toepassingen zoals SQL Server worden uitgevoerd alsof ze zich op een afzonderlijke fysieke computer bevinden.

VM's zijn groter en duren langer om te maken, maar omdat ze hun eigen besturingssysteem hebben, gebruiken ze een andere configuratie en hardware op de hostcomputer. U kunt vm's ook combineren met verschillende besturingssystemen op dezelfde host. Op een Linux-host kunt u bijvoorbeeld een virtuele machine met Linux en Apache installeren om een website te hosten. Er kan ook een andere VIRTUELE machine met Windows en SQL Server zijn om een database te hosten.

Containers zijn kleiner, dus ze laden veel sneller dan VM's. Als uw host bijvoorbeeld Linux Ubuntu uitvoert, moeten alle containers op die computer dezelfde versie van Ubuntu uitvoeren. Op een Linux-host kunt u een container met Linux en Apache installeren, maar uw databasecontainer moet ook Linux uitvoeren. Dit is mogelijk zolang u SQL Server 2017 of hoger uitvoert.

Diagram comparing the layers of software required to run VMs versus Containers.

Op de hostcomputer moet u software zoals Hyper-V of VirtualBox installeren om VM's te hosten. Voor containers kunt u het Docker-systeem, CRI-O, rkt en andere containerhosts gebruiken.

Redenen om virtuele machines te gebruiken

Er zijn nog steeds situaties waarin containers niet de beste oplossing zijn. Omdat containers worden uitgevoerd op één besturingssysteem en systeembronnen delen, is beveiliging een probleem. Als een aanvaller supergebruikersbevoegdheden krijgt, kunnen sommige vectoren ertoe leiden dat ze toegang krijgen tot de toepassingen. In containers moeten toepassingen worden uitgevoerd op hetzelfde besturingssysteem als de hostcomputer. U kunt op Linux gebaseerde toepassingen niet uitvoeren in containers in Windows. Met VM's host u een Linux-computer in Windows of een Windows-computer in macOS, waardoor u meer flexibiliteit hebt. Met VM's kunt u meerdere toepassingen hosten met een nauwe integratie in één VIRTUELE machine. Containers hosten traditioneel slechts één toepassing.

VM's zijn minder efficiënt dan containers. Op een bepaalde set hardware kunt u ten minste het dubbele aantal toepassingen in containers uitvoeren dan met VM's. Een VIRTUELE machine gebruikt meer resources, omdat er een volledige kopie van het besturingssysteem en gevirtualiseerde versies van alle hardware nodig zijn om het gastbesturingssysteem te ondersteunen.

Redenen om containers te gebruiken

Containers zijn lichter vergeleken en bieden u de mogelijkheid om apps in een kleinere footprint te verpakken. Omdat één besturingssysteem als host fungeert voor de containers, is er minder beheer. U hoeft slechts één besturingssysteem te patchen en bij te werken, in plaats van elk gast besturingssysteem op elke VIRTUELE machine. De containers zijn kleiner en eenvoudiger, zodat ze in seconden kunnen worden gestart in plaats van de minuten die nodig zijn om een virtuele machine te starten.

Orchestration

U kunt Docker Swarm, Kubernetes en andere oplossingen gebruiken om containers te organiseren. Orchestrators bewaken en maken het mogelijk om apps te schalen met behulp van containers en een niveau van herstel na noodgevallen te bieden. Microsoft biedt hulpprogramma's en voorbeelden van het gebruik van Kubernetes, dus het is een goede keuze voor het containeriseren van SQL Server op Linux. Er is een SQL Server op Linux-containerinstallatiekopieën beschikbaar voor gebruik met Kubernetes.

In een container geplaatste SQL Server in Linux

Een probleem met databases die in containers worden uitgevoerd, is permanente opslag. U moet een opslaglocatie opgeven buiten de container waar de database databasebestanden kan bewaren. Wijzigingen zijn vervolgens beschikbaar voor alle containers in een cluster. Als u Kubernetes gebruikt, kunt u een permanent volume voor deze locatie gebruiken.

Diagram of the a Kubernetes cluster running SQL Server and the relationship between nodes, pods, storage, replica sets, and the service.

Maak eerst een permanent volume en voeg vervolgens een permanente volumeclaim (PVC) toe. Maak een implementatiemanifest voor SQL Server in Linux die gebruikmaakt van de door Microsoft gemaakte mssql-server-linux containerinstallatiekopieën. Het manifest bevat ook definities voor het PVC en een load balancer voor de service om een consistent IP-adres te garanderen. Maak de implementatie en controleer of SQL Server wordt uitgevoerd in een pod. Als deze installatie is voltooid, start Kubernetes een nieuw exemplaar op als het knooppunt mislukt. Een eenvoudige test is om die pod te verwijderen en te controleren of een nieuwe automatisch wordt gestart.

Test uw kennis

1.

Wanneer is een VM de beste keuze om een toepassing te hosten?