Migrowanie obciążeń systemów Linux i PostgreSQL

Ukończone

Ten moduł przeprowadzi Cię przez proces migracji istniejącego obciążenia ze środowiska lokalnego lub w chmurze na platformę Azure. Obejmuje ona migrację obliczeń do maszyny wirtualnej platformy Azure i danych do usługi Azure Database for PostgreSQL. Aplikacja to niezależny od chmury przykład, który jest autonomiczną aplikacją dla każdej rzeczywistej aplikacji przygotowanej do migracji do chmury.

W tej lekcji zapoznasz się z zaletą pełnego pakietu mechanizmów kontroli zabezpieczeń i tożsamości zapewnianych przez platformę Azure:

  • Przechodzenie z własnego środowiska (na przykład z własnej bazy danych) do w pełni zarządzanej bazy danych
  • Przechodzenie z obliczeń bez systemu operacyjnego na maszyny wirtualne hostowane w chmurze

Poznasz również korzyści związane z zarządzaniem zasobami w chmurze z perspektywy kosztów i wydajności. Dowiesz się również, jak dokładnie obliczyć koszty przed wdrożeniem i po nim oraz jak zoptymalizować wydajność zarówno z perspektywy obliczeń, jak i danych.

Obciążenie i dane

Nasze obciążenie to aplikacja napisana w języku Go i współdziała z danymi wewnątrz bazy danych PostgreSQL. Nasze dane to otwarty zestaw danych, który umożliwia eksplorowanie możliwości platformy Postgres i powiązanych rozszerzeń.

Chociaż ta aplikacja może być łatwo uruchamiana w kontenerze, uczestnicy projektu zdecydowali się nie robić tego na tym etapie. Kompilowanie kontenera, wdrażanie na platformie kontenerów lub używanie orkiestracji kontenerów jest obecnie poza zakresem. Jednak migracja do kontenerów może być logicznym krokiem w przyszłości.

Repozytorium GitHub skojarzone z tym modułem udostępnia aplikację i powiązane dane. Dowiesz się, jak przygotować aplikację i wyeksportować dane, aby osiągnąć podobny stan do tej przykładowej aplikacji. Możesz również użyć przykładowej aplikacji jako szablonu dla wdrożenia greenfield.

Jaka jest wartość migracji tego obciążenia?

Możesz się zastanawiać nad korzyściami z migracji tego obciążenia do chmury. Oto niektóre propozycje wartości.

Zabezpieczenia i zgodność

W przypadku korzystania z obciążeń obliczeniowych i danych w chmurze mogą one korzystać ze zwiększonych możliwości zabezpieczeń.

Maszyny wirtualne na platformie Azure korzystają z szerokiej gamy funkcji zabezpieczeń i zgodności, w tym zapór, sieci wirtualnych, dostępu just in time do maszyn wirtualnych, szyfrowania, kontroli dostępu opartej na rolach (RBAC) i poufnego przetwarzania. Usługa Azure Database for PostgreSQL obsługuje wiele podobnych funkcji, takich jak szyfrowanie za pomocą kluczy zarządzanych przez klienta, certyfikaty zgodności i obsługa usługi Microsoft Defender for Cloud.

Zabezpieczenia połączeń między maszynami wirtualnymi i bazami danych

Podczas integrowania maszyny wirtualnej z usługą Azure Database for PostgreSQL niezwykle ważne jest, aby mogły łączyć się ze sobą w bezpieczny sposób, co zmniejsza ryzyko utraty danych.

Uwierzytelnianie firmy Microsoft Entra umożliwia nawiązywanie połączenia z usługą Azure Database for PostgreSQL bez tradycyjnych haseł. Zamiast tego używasz tożsamości Microsoft Entra dla obciążenia aplikacji (czyli tożsamości zarządzanych), użytkowników i administratorów poprzez ich konta użytkowników Microsoft Entra. Takie podejście ogranicza ryzyko naruszenia zabezpieczeń poświadczeń długotrwałych i umożliwia źle działającym podmiotom dostęp do danych.

Identyfikator entra firmy Microsoft, tożsamości zarządzane i szczegółowe RBAC mogą umożliwić obciążeniu aplikacji bezpieczne uzyskiwanie dostępu do danych i zarządzanie zasobami na platformie Azure, postępując zgodnie z zasadą najniższych uprawnień.

Dostęp do obliczeń o wysokiej wydajności i opłacalnych w wielu regionach

Niezależnie od tego, czy potrzebujesz ekonomicznego środowiska obliczeniowego na potrzeby tworzenia i testowania, czy najnowszych, najwyższych wydajności lub największych typów obliczeniowych dostępnych w chmurze, platforma Azure oferuje szeroki wybór opcji obliczeniowych zarówno dla maszyn wirtualnych , jak i usługi Azure Database for PostgreSQL. Te opcje można skalować w górę i skalować w dół w razie potrzeby i są dostępne w ponad 60 regionach na platformie Azure.

Obliczenia można skalować zarówno w pionie, jak i w poziomie, w tym za pomocą replik baz danych i opcji rozproszonych , takich jak usługa Azure Cosmos DB for PostgreSQL. Azure Cosmos DB for PostgreSQL to usługa zarządzana dla bazy danych PostgreSQL rozszerzona o supermoce open source tabel rozproszonych rozwiązania Citus. Obliczenia te są połączone z niektórymi z najszybszych opcji magazynowania w chmurze, aby dostosować wymagania dotyczące operacji wejścia/wyjścia w zakresie obliczeń i magazynowania do twojego obciążenia pracą.

Zarządzanie kosztami i opłacalność

Możesz zoptymalizować zarządzanie kosztami i opłacalność po obu stronach systemów Linux i PostgreSQL. W porównaniu z rozwiązaniami lokalnymi koszt może być często bardziej dostosowany i odpowiedni dla Danej sytuacji. Obliczenia można w odpowiednim rozmiarze w porównaniu z rozwiązaniem lokalnym. Możesz również łatwo zarządzać całą flotą, aby zoptymalizować tylko potrzebne zasoby obliczeniowe i magazynowe oraz płacić tylko za używane zasoby w modelu rozliczeń narzędziowych.

Rozliczenia narzędzi umożliwiają klientom obsługę okresów wysokiego zapotrzebowania bez konieczności płacenia kosztów nadmiernej aprowizacji. Umożliwia ona migrację do szybszego i bardziej wydajnego generowania zasobów obliczeniowych w miarę ich dostępności.

Klienci mogą również korzystać z Korzyść użycia hybrydowego platformy Azure, aby zaoszczędzić na kosztach licencjonowania dla określonych dystrybucji systemu Linux. Aby dowiedzieć się więcej, zobacz Korzyści użycia hybrydowego platformy Azure dla maszyn wirtualnych Red Hat Enterprise Linux (RHEL) i SUSE Linux Enterprise Server (SLES).

Klienci mogą również obniżyć koszty (do 72 procent w porównaniu z ceną płatności zgodnie z rzeczywistym użyciem) z rocznymi lub trzyletnimi warunkami dla maszyn wirtualnych i wystąpień zarezerwowanych maszyn wirtualnych platformy Azure. Aby uzyskać więcej informacji, zobacz Jak rabat za rezerwację platformy Azure jest stosowany do maszyn wirtualnych. Cennik platformy Azure jest przejrzysty i przewidywalny. Przed wdrożeniem można oszacować koszty za pomocą kalkulatora cen platformy Azure.

Operacje dnia 2

Operacje dnia 2 dla wdrożonych aplikacji (takich jak klasyfikacja, monitorowanie, stosowanie poprawek zabezpieczeń, tworzenie kopii zapasowych i odzyskiwanie po awarii) stają się bardziej wydajne dzięki automatyzacji i możliwości uaktualniania z potencjalnie zerowym przestojem. Ponadto możesz zarządzać infrastrukturą, aby zakończyć się standardami branżowymi łańcuchów narzędzi.

Zanim rozpoczniesz

Ten moduł został zaprojektowany w celu ułatwienia migracji istniejącego obciążenia systemów Linux i PostgreSQL na platformę Azure. Nie skupia się jednak na tym, jak wyeksportować dane ze źródłowej bazy danych ani jak przygotować aplikację do migracji. Jednym z powodów tego podejścia jest to, że istnieje wiele typów źródłowych baz danych i aplikacji, które można migrować, a proces dla każdego typu jest unikatowy.

Ten moduł zawiera przykładową aplikację, dane Postgres, pliki binarne i infrastrukturę jako kod, którego można użyć do symulowania procesu migracji. Po zakończeniu migracji symulowanej możesz użyć zdobytej wiedzy, aby zastosować te same zasady do własnego obciążenia.

Przykładowa aplikacja Azure-Samples/tailwind-traders-go jest używana jako zamiennik dla kodu aplikacji, który ma zostać zmigrowany. Infrastruktura Bicep jako kod, przykładowe dane postgres i binarne oraz inne zasoby do obsługi praktycznej części tego modułu są dostępne w repozytorium GitHub Azure-Samples/linux-postgres-migration .

Aby zastosować to podejście do własnego obciążenia, należy zamapować aplikację źródłową i dane na następującą strukturę.

Kod aplikacji

Kod aplikacji należy przechowywać w kontroli źródła, najlepiej repozytorium w usłudze GitHub.

Migracja w tym module przedstawia najprostszy scenariusz klonowania repozytorium bezpośrednio do maszyny wirtualnej platformy Azure. W rzeczywistym scenariuszu prawdopodobnie będziesz mieć bardziej złożony potok wdrażania, taki jak funkcja GitHub Actions, który kompiluje i wdraża kod aplikacji w zasobach obliczeniowych.

Dane bazy danych Postgres

Dane bazy danych Postgres należy przechowywać w .sql pliku, którego można użyć do utworzenia schematu bazy danych i wstawienia danych. W ramach tej symulowanej migracji użyjesz przykładowego pliku danych , tailwind.sqlw Azure-Samples/linux-postgres-migration repozytorium. Skopiuj plik do usługi Azure Blob Storage, a następnie zaimportujesz go do usługi Azure Database for PostgreSQL.

Jeśli chodzi o migrację własnych danych, należy wyeksportować dane ze źródłowej .sql bazy danych i zapisać je w pliku. Następnie skopiuj plik do usługi Blob Storage zgodnie z opisem w tym module.

Pliki binarne

Większość aplikacji ma inne pliki binarne, takie jak pliki multimedialne, które muszą zostać zmigrowane. W przypadku przykładowej aplikacji dowiesz się, jak migrować obrazy, kopiując je z Azure-Samples/linux-postgres-migration usługi Blob Storage.

Podobnie należy skopiować pliki binarne do usługi Blob Storage podczas migracji własnego obciążenia. W tym przypadku środowisko obliczeniowe jest bezstanowe, a aplikacja ma uprawnienia dostępu do danych binarnych bezpośrednio w usłudze Blob Storage.

Infrastruktura jako kod (Bicep)

Infrastruktura jako kod dla tego modułu jest również przechowywana w pliku Azure-Samples/linux-postgres-migration. Jest ona zaprojektowana tak, aby była architekturą referencyjną, której można używać w taki sposób, jak to jest, z minimalnymi zmianami, jeśli możesz wprowadzić dane źródłowe i aplikację zgodną z wcześniej opisaną strukturą.

Zabezpieczenia są głównym tematem tej migracji i wybraliśmy pewne ustawienia zabezpieczeń, aby ułatwić ukończenie części praktycznej tego modułu. Na przykład usługa Blob Storage używa bezpieczniejszej metody uwierzytelniania bez klucza, ale zezwalamy na połączenia sieciowe z dowolnego adresu IP. W środowisku produkcyjnym należy zablokować dostęp sieciowy tylko do adresów IP, które wymagają dostępu do konta magazynu.

Podobnie pozostawimy opcję dodania reguły zapory do serwera PostgreSQL, aby zezwolić na określony adres IP. W środowisku produkcyjnym można całkowicie wyłączyć cały publiczny dostęp do serwera.

Różnice między środowiskami źródłowymi a platformą Azure

Jedną z głównych różnic w migracji z innego środowiska na platformę Azure jest to, że w pełni korzystasz z mechanizmów kontroli zabezpieczeń i tożsamości zapewnianych przez platformę Azure:

  • Tożsamości zarządzane są używane dla maszyn wirtualnych i usługi Azure Database for PostgreSQL.
  • Identyfikator Entra firmy Microsoft jest używany do uwierzytelniania w bazie danych.
  • Do uzyskiwania dostępu do maszyn wirtualnych używasz klucza Microsoft Entra ID, a nie kluczy protokołu Secure Shell (SSH).

Zamiast migracji metodą "lift-and-shift", możesz zmodernizować aplikację, aby w pełni wykorzystać funkcje zabezpieczeń i zgodności zapewniane przez platformę Azure.

Lokalnie możesz użyć nazwy użytkownika i hasła do uwierzytelniania w bazie danych. Na platformie Azure pokazano, jak używać tożsamości zarządzanej maszyny wirtualnej do uwierzytelniania w bazie danych. Ta metoda uwierzytelniania jest bezpieczniejsza i zmniejsza ryzyko naruszenia długotrwałych poświadczeń.

Użycie tożsamości zarządzanej do uwierzytelniania często wymaga zmian kodu w aplikacji. W tym module pokazano, jak uzyskać token dla tożsamości zarządzanej przy użyciu azidentity biblioteki w języku Go. Ta sama biblioteka jest dostępna w zestawach SDK firmy Microsoft.

Tworzenie konta platformy Azure i instalowanie interfejsu wiersza polecenia platformy Azure

Jeśli nie masz konta platformy Azure, możesz już dziś utworzyć bezpłatne konto . Otrzymujesz środki, których możesz użyć do wypróbowania płatnych usług platformy Azure. Nawet po wykorzystaniu środków możesz zachować konto i korzystać z bezpłatnych usług platformy Azure.

Aby uruchomić polecenia w poniższych lekcjach, musisz mieć dostęp do powłoki Bash. Ta powłoka może znajdować się w dowolnym z następujących obszarów:

  • Na komputerze lokalnym. Na przykład użyj systemów macOS, Linux, Podsystem Windows dla systemu Linux (WSL) lub Docker.
  • Na maszynie wirtualnej. Na przykład użyj usługi Multipass lub platformy Azure.
  • W chmurze. Na przykład użyj usługi Azure Cloud Shell lub GitHub Codespaces.

Do ukończenia tego modułu potrzebny jest interfejs wiersza polecenia platformy Azure. Interfejs wiersza polecenia platformy Azure można zainstalować na komputerze lokalnym, postępując zgodnie z instrukcjami w artykule Instalowanie interfejsu wiersza polecenia platformy Azure . Należy również zainstalować usługę Git.

Zasoby