Używanie kontenerów z programem SQL Server w systemie Linux

Ukończone

Kontenery ułatwiają organizacjom tworzenie elastycznych i skalowalnych instalacji programu SQL Server.

Wide World Importers obsługuje niektóre obciążenia bazy danych na dużą skalę, które wymagają elastycznej i skalowalnej architektury hostingu. Chcesz ocenić możliwość hostowania programu SQL Server w środowiskach wirtualnych, takich jak maszyny wirtualne i kontenery.

W tym miejscu dowiesz się, jak wybierać między kontenerami i maszynami wirtualnymi dla bazy danych.

Porównywanie maszyn wirtualnych i kontenerów

Wirtualizacja to technika używana przez administratorów do hostowania wielu serwerów wirtualnych na jednym serwerze fizycznym. W przypadku korzystania z wirtualizacji można łatwo wdrożyć dodatkowe wystąpienia programu SQL Server, na przykład bez kupowania i instalowania dodatkowego sprzętu. Istnieją dwa typowe podejścia do wirtualizacji:

  • Maszyny wirtualne: w przypadku korzystania z maszyn wirtualnych każde wystąpienie jest kompletnym serwerem wirtualnym z własnym systemem operacyjnym i sprzętem.
  • Kontenery: w przypadku korzystania z kontenerów każde wystąpienie współużytkuje system operacyjny i zasoby sprzętowe z komputerem hosta.

Zarówno maszyny wirtualne, jak i kontenery zapewniają izolowane środowisko, w którym aplikacje, takie jak PROGRAM SQL Server, działają tak, jakby znajdowały się na oddzielnym komputerze fizycznym.

Maszyny wirtualne są większe i trwają dłużej, ale ze względu na to, że mają własny system operacyjny, użyj innej konfiguracji i sprzętu na komputerze hosta. Maszyny wirtualne można również mieszać z różnymi systemami operacyjnymi na tym samym hoście. Na przykład na hoście z systemem Linux można zainstalować maszynę wirtualną z systemem Linux i apache, aby hostować witrynę internetową. Może istnieć również inna maszyna wirtualna z systemem Windows i programem SQL Server do hostowania bazy danych.

Kontenery są mniejsze, dlatego ładują się znacznie szybciej niż maszyny wirtualne. Jeśli jednak na hoście jest uruchomiony system Linux Ubuntu, na przykład wszystkie kontenery na tym komputerze muszą działać w tej samej wersji systemu Ubuntu. Na hoście z systemem Linux można zainstalować kontener z systemami Linux i Apache, ale kontener bazy danych musi również działać w systemie Linux. Jest to możliwe tak długo, jak działa program SQL Server 2017 lub nowszy.

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

Na maszynie hosta należy zainstalować oprogramowanie, takie jak Hyper-V lub VirtualBox, aby hostować maszyny wirtualne. W przypadku kontenerów można użyć systemu Docker, CRI-O, rkt i innych hostów kontenerów.

Powody korzystania z maszyn wirtualnych

Nadal istnieją sytuacje, w których kontenery nie są najlepszym rozwiązaniem. Ponieważ kontenery działają w jednym systemie operacyjnym i współużytkować zasoby systemowe, bezpieczeństwo jest problemem. Jeśli osoba atakująca uzyska uprawnienia administratora , niektóre wektory mogą prowadzić do uzyskania dostępu do aplikacji. W kontenerach aplikacje muszą działać w tym samym systemie operacyjnym co komputer hosta. Nie można uruchamiać aplikacji opartych na systemie Linux w kontenerach w systemie Windows. Dzięki maszynom wirtualnym hostujesz maszynę z systemem Linux w systemie Windows lub maszynę z systemem Windows w systemie macOS, co zapewnia większą elastyczność. Maszyny wirtualne umożliwiają hostowanie wielu aplikacji z ścisłą integracją na jednej maszynie wirtualnej. Kontenery tradycyjnie hostuje tylko pojedyncze aplikacje.

Maszyny wirtualne są mniej wydajne niż kontenery. Na danym zestawie sprzętu można uruchomić co najmniej dwukrotnie więcej aplikacji w kontenerach niż w przypadku maszyn wirtualnych. Maszyna wirtualna używa większej ilości zasobów, ponieważ potrzebuje pełnej kopii systemu operacyjnego i zwirtualizowanych wersji całego sprzętu do obsługi systemu operacyjnego gościa.

Powody korzystania z kontenerów

Kontenery są bardziej lekkie w porównaniu i umożliwiają pakowanie aplikacji w mniejszy ślad. Ponieważ pojedynczy system operacyjny hostuje kontenery, jest mniej administracji. Wystarczy tylko zastosować poprawki i zaktualizować pojedynczy system operacyjny, a nie każdy system operacyjny gościa na każdej maszynie wirtualnej. Kontenery są mniejsze i prostsze, więc można je uruchamiać w sekundach, a nie minuty, przez które trzeba uruchomić maszynę wirtualną.

Aranżacja

Do organizowania kontenerów można użyć rozwiązania Docker Swarm, Kubernetes i innych rozwiązań. Koordynatorzy monitorują i umożliwiają skalowanie aplikacji przy użyciu kontenerów oraz zapewnienie poziomu odzyskiwania po awarii. Firma Microsoft udostępnia narzędzia i przykłady korzystania z platformy Kubernetes, dlatego dobrym wyborem jest konteneryzowanie programu SQL Server w systemie Linux. Istnieje obraz kontenera SQL Server w systemie Linux dostępny do użycia z platformą Kubernetes.

Konteneryzowany program SQL Server w systemie Linux

Jednym z problemów z bazami danych uruchomionymi w kontenerach jest magazyn trwały. Należy podać lokalizację magazynu poza kontenerem, w którym baza danych może przechowywać pliki bazy danych. Zmiany są następnie dostępne dla wszystkich kontenerów w klastrze. Jeśli używasz platformy Kubernetes, możesz użyć trwałego woluminu dla tej lokalizacji.

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

Najpierw utwórz wolumin trwały, a następnie dodaj trwałe oświadczenie woluminu (PVC). Utwórz manifest wdrożenia dla programu SQL Server w systemie Linux, który używa obrazu kontenera utworzonego przez mssql-server-linux firmę Microsoft. Manifest zawiera również definicje pvc i moduł równoważenia obciążenia dla usługi w celu zagwarantowania spójnego adresu IP. Utwórz wdrożenie i sprawdź, czy program SQL Server działa wewnątrz zasobnika. Po zakończeniu tej konfiguracji platforma Kubernetes uruchomi nowe wystąpienie, jeśli węzeł ulegnie awarii. Prostym testem jest usunięcie tego zasobnika i sprawdzenie, czy nowy jest uruchamiany automatycznie.

Sprawdź swoją wiedzę

1.

Kiedy maszyna wirtualna byłaby najlepszym wyborem do hostowania aplikacji?