Spis treści
Maszyna wirtualna (nazywana też virtual machine, w skrócie VM) to cyfrowy komputer, który można uruchomić na dowolnym urządzeniu – laptopie, serwerze, czy w chmurze. Tutaj przeczytasz więcej na temat tego, czym są maszyny wirtualne, jak działają i w jakim celu się ich używa.
Chmury publiczne oferują platformy maszyn wirtualnych. Oznacza to, że możesz dowolnie skonfigurować instancję i na żądanie uruchomić zasoby na maszynach fizycznie należących do dostawcy, w wybranej przez Ciebie lokalizacji, ponieważ centra danych znajdują się na całym świecie. W przypadku Google Cloud są połączone siecią światłowodową o prędkości przesyłu do 10 Tbs, a fizyczne serwerownie tworzą zony i regiony – klastry pozwalające zachować wysoką dostępność infrastruktury nawet w obliczu awarii w serwerowni dostawcy.
W chmurze Google usługą maszyn wirtualnych jest Google Compute Engine.
Co to jest Google Compute Engine?
Google Compute Engine to usługa w modelu IaaS – czyli infrastruktura jako usługa. W modelu IaaS maszyny należą do usługodawcy, a użytkownik może korzystać z udostępnionych usług chmurowych i zasobów. To infrastruktura online – bez konieczności budowy własnej serwerowni i obsługi fizycznych maszyn.
Google Compute Engine (w skrócie GCE) to usługa maszyn wirtualnych – tych samych, z których korzysta Google do utrzymywania i rozwijania własnych projektów. Za pośrednictwem platformy, z poziomu przeglądarki internetowej, dostarcza użytkownikom zasoby maszyn znajdujących się w fizycznych centrach danych Google Cloud.
Do czego możesz wykorzystać Google Compute Engine? Między innymi do:
- hostowania plików strony internetowej,
- hostowania aplikacji i/lub jej backendu,
- jako serwer gier mobilnych,
- utrzymania systemu automatycznego licytowania powierzchni online (real-time bidding),
- przetwarzania wsadowego Hadoop,
- renderowania grafik i multimediów,
- transkodowania wideo,
- prowadzenia symulacji finansowych,
- prowadzenia symulacji genetycznych (np. sekwencjonowania DNA),
- trenowania modeli uczenia maszynowego czy sztucznej inteligencji.
Na maszynach w chmurze możemy zrobić właściwie wszystko, co na własnych, fizycznych maszynach. A tak właściwie to… nawet więcej dzięki dostępowi do maszyn o przeróżnej, nawet bardzo wysokiej specyfikacji.
Rodzaje maszyn wirtualnych w Google Compute Engine
Google dzieli typy maszyn wirtualnych na cztery główne kategorie:
- Maszyny ogólnego przeznaczenia, o dobrym stosunku ceny do wydajności (general purpose). Są odpowiednie do typowych obciążeń, takich jak obsługa baz danych, środowisk programistycznych i testowych, aplikacji internetowych czy gier mobilnych. Są to maszyny z rodzin E2, N2, N2D, N1 oraz Tau T2D.
- Maszyny zoptymalizowane pod kątem pamięci (ultra-high memory). Oferują najwyższy poziom konfiguracji pamięci – do 12 TB na jedną instancję. Są przystosowane do obsługi obciążeń intensywnie korzystających z pamięci, np. baz SAP HANA czy prowadzenia analityki in-memory. To maszyny oznaczone jako M2 i M1.
- Dedykowane intensywnym obciążeniom (compute-optimized). To instancje zapewniające największą wydajność na rdzeń, które mogą być wykorzystane do prowadzenia obliczeń HPC, jako serwery gier czy serwery API o niskim opóźnieniu. Są to maszyny z rodziny C2.
- Wydajne maszyny dedykowane wymagającym aplikacjom i dużym obciążeniom (accelerator-optimized). Maszyny te zostały zaprojektowane z myślą o największych obciążeniach, takich jak uczenie maszynowe czy obliczenia o wysokiej wydajności. Wykorzystują procesor graficzny NVIDIA® Ampere A100 Tensor Core, który ma kilkadziesiąt razy większą wydajność obliczeniową niż typowy procesor. To maszyny o symbolu A2.
Dostępne instancje są wstępnie skonfigurowane, by nie poświęcać dużo czasu na ustawianie ich parametrów. Użytkownik ma jednak szerokie możliwości konfiguracji – zmiany vCPU, dodania GPU lub TPU, zwiększenia lub zmniejszenia pamięci, doboru dysków czy systemu operacyjnego.
Karty graficzne GPU w Google Compute Engine
Google Compute Engine udostępnia też karty graficzne GPU, które można dodawać do maszyn wirtualnych z rodzin N1 i A2. Procesorów graficznych można używać, aby przyspieszyć obsługę określonych obciążeń w instancjach, na przykład uczenia maszynowego, przetwarzania pokładów danych czy renderowania 3D.
W Google Compute Engine obecnie dostępne są karty:
- NVIDIA® A100,
- NVIDIA® T4,
- NVIDIA® V100,
- NVIDIA® P100,
- NVIDIA® P4,
- NVIDIA® K80.
MIGs – zarządzane grupy instancji
Utworzone instancje GCE można połączyć w zarządzaną grupę (Managed Instance Group), by obsługiwać je jak pojedynczą jednostkę i zautomatyzować procesy związane z utrzymaniem infrastruktury.
Managed Instance Groups pozwalają zachować wysoką dostępność infrastruktury dzięki automatycznemu sprawdzaniu stanu i prowadzeniu napraw (autohealing) lub, w przypadku wyłączenia instancji, tworzenia VM zastępczej o identycznej specyfikacji. Managed Instance Groups zapewniają też skalowanie poprzez tworzenie lub usuwanie maszyn wirtualnych w odpowiedzi na obciążenie. Dbają o prawidłowe równoważenie ruchu oraz o wprowadzanie aktualizacji. Poziom dostępności można też zwiększyć, tworząc MIG pomiędzy instancjami uruchomionymi w różnych regionach Google Cloud.
Większe bezpieczeństwo z confidential computing
Warto zaznaczyć, że dane w usłudze Google Compute Engine są szyfrowane i jedynie upoważnione osoby mają do nich dostęp. Nawet pracownicy Google Cloud, którzy prowadzą utrzymanie fizycznej infrastruktury, nie mają opcji wglądu w dane znajdujące się na serwerach. Infrastruktura Google jest szczelnie zabezpieczona i cyklicznie poddawana niezależnym audytom.
Ci, którym zależy na jeszcze większym bezpieczeństwie, mogą skorzystać z opcji confidential computing. To technologia, która umożliwia szyfrowanie najbardziej wrażliwych danych w chmurze w czasie rzeczywistym, podczas ich przetwarzania. Funkcjonalność jest też w stanie odpowiednio szybko wykryć i zatrzymać ataki APT (advanced persistent thread). Technologia wykorzystuje nowoczesne procesory, między innymi AMD EPYC™ drugiej generacji.
Maszyny confidential computing mają wysoką wydajność, porównywalną do maszyn z rodziny N2D.
Role i poziom dostępu w Google Compute Engine – panel IAM
IAM to centrum zarządzania dostępem do zasobów w Google Cloud. Z poziomu panelu można przyznawać role poszczególnym użytkownikom chmury, grupom użytkowników oraz usługom (w przypadku usług mowa o service account). Świadome zarządzanie ustawieniami w IAM pozwoli zabezpieczyć projekt na bazowym poziomie, a stosowanie zasady principle of least priviledge (przyznawania minimalnego niezbędnego poziomu uprawień) zapobiegnie ludzkim błędom czy zminimalizuje skutki włamań.
Poziom dostępu dla użytkowników – role w IAM GCE
Google Cloud posiada zestaw kilkudziesięciu predefiniowanych ról dla usług Google Compute Engine. Użytkownikowi można przyznać rolę z listy, zmodyfikować, dostosowując zakres dostępu lub utworzyć całkowicie nową rolę.
Niżej znajduje się lista najczęściej używanych ról w IAM dla usługi Google Compute Engine:
- Compute Admin – ma pełny dostęp do usługi GCE.
- Compute Instance Admin – ma możliwość tworzenia, edycji i usuwania instancji oraz dysków. Jeśli użytkownik ma zarządzać maszynami GCE weryfikującymi się jako service account, należy przyznać mu też rolę Service Account User. Jeśli w organizacji jest osoba, która obsługuje instancje w grupie MIG, ale nie zarządza połączeniem czy zabezpieczeniami między nimi, można przyznać jej dostęp za pomocą roli Instance Admin w obszarze grupy maszyn lub poszczególnych VM.
- Compute Image User – przyznanie tej roli na poziomie projektu daje użytkownikowi możliwość wyświetlania listy obrazów i tworzenia na ich podstawie instancji czy dysków stałych.
- Compute Network Admin – może tworzyć, edytować i usuwać zasoby sieciowe z wyłączeniem zapór firewall i certyfikatów SSL (może jedynie wyświetlać informacje o regułach zapór sieciowych, SSL czy instancjach w celu zyskania efemerycznego adresu IP). Compute Network Admin nie ma możliwości tworzenia, uruchamiania, zatrzymywania czy usuwania instancji.
- Compute Viewer – ma dostęp jedynie do odczytywania i pobierania informacji o zasobach Compute Engine, bez możliwości wglądu w przechowywane/przetwarzane w usłudze dane. Przykładowo, rola może przydać się osobie, która ma opracować listę używanych w projekcie dysków.
- Compute Public IP Admin – rola daje pełną kontrolę nad publicznymi adresami IP w usłudze.
- Compute OS Admin Login – daje możliwość logowania się do instancji Compute Engine jako administrator.
Listę wszystkich predefiniowanych ról wraz z zakresem dostępu znajdziesz w dokumentacji Google: Compute Engine IAM roles and permissions.
Konta usług w Google Compute Engine
Za każdym razem, gdy tworzysz w chmurze instancję GCE, w panelu IAM pojawia się konto usługi – service account. To konto, za pomocą którego usługa weryfikuje swoją tożsamość i może wykonywać akcje w ramach przyznanych uprawnień.
Nowe projekty, w ramach których włączono Google Compute Engine API, otrzymują domyślne konto usługi GCE o adresie e-mail NUMER_PROJEKTU-compute@developer.gserviceaccount.com.
Żeby infrastruktura działała płynnie, nowo utworzone konto otrzymuje dość szeroki zakres dostępu, dlatego dobrze jest zmienić jego konfigurację niedługo po uruchomieniu. Do konta usługi, którą weryfikuje się maszyna wirtualna, można przypisać każdą z ról dostępnych w IAM, ale proponujemy trzymać się zasady przyznawania najniższego poziomu dostępu.
W koncie service account znajduje się też dodatkowa warstwa zabezpieczająca – Access Scopes. Access Scopes to lista zakresu dostępu VM do pozostałych zasobów chmury. Taka lista obowiązuje dla konkretnej instancji i tylko w okresie jej istnienia. Dla niektórych usług można zdefiniować poziom dostępu – na przykład przyznać rolę edytora czy przeglądającego.
Jeśli uruchamiasz coś po raz pierwszy w Google Compute Engine, a aplikacja nie może połączyć się z inną usługą chmurową, możliwe, że posiada za mały zakres uprawnień lub dostęp do usługi jest zablokowany na poziomie Access Scopes.
Uruchamianie maszyny wirtualnej – tutorial wideo
W nagraniu poniżej Kacper opisuje, jak skonfigurować i uruchomić maszynę wirtualną w GCE oraz jak ją następnie edytować i w jaki sposób usunąć:
A niżej znajduje się kilka porad dotyczących uruchamiania maszyn wirtualnych w chmurze Google:
- Maszyny wirtualne to rdzeń usługi. Konfigurując instancję, należy znaleźć złoty środek pomiędzy liczbą rdzeni a pamięcią RAM. Maszyna nie powinna być ani za mocna (bo koszt będzie za wysoki), ani za słaba (bo nie zapewni dostępności aplikacji). Konfigurację instancji można później zmienić, po zatrzymaniu jej pracy.
- Rozpoczynając pracę w Compute Engine, należy utworzyć nowy projekt, który posłuży do zgrupowania zasobów w swego rodzaju prywatnej przestrzeni. Instancje uruchomione w tym samym projekcie będą się nawzajem widzieć, ale nie będą widziały instancji spoza tego projektu. Domyślnie komunikacja między projektami jest wyłączona, ale można ją włączyć na kilka sposobów (na przykład z użyciem serwera DNS, który umożliwi rozwiązywanie nazw maszyn wirtualnych na prywatny adres IP, co ułatwi konfigurację i łączenie).
- Instancja uruchamia się z dyskiem blokowym boot, który jest zoptymalizowany pod kątem wydajności. Po wyłączeniu maszyny nadal przechowuje zapisane pliki. Natomiast po usunięciu instancji dysk ginie, a wraz z nim jego zawartość. Podczas konfiguracji maszyny można ustawić opcję, by po usunięciu maszyny wirtualnej dysk boot nie był kasowany.
- Do takiej maszyny możesz dodać też nieulotny dysk – Persistent disk. Po usunięciu maszyny taki dysk nie jest usuwany i możesz zamontować go w innej instancji.
- Przy Compute Engine znajduje się tez Load Balancer – rozproszona usługa, która umożliwia równoważenie obciążenia pomiędzy dostępnymi instancjami. Pośredniczy pomiędzy klientem aplikacji a pulą maszyn, przesyłając pakiety do aktywnych „zdrowych” instancji za pośrednictwem sieci Google Cloud.
- Wszystkie przytoczone zasoby można kontrolować za pomocą interfejsu HTTP JSON API, dokładnie w takim samym zakresie jak z poziomu interfejsu graficznego konsoli Google Cloud. Dzięki temu możemy dość łatwo tworzyć aplikacje i skrypty kontrolujące tworzenie zasobów w GCE, na przykład w celu automatyzacji niektórych działań.
Opłaty za Google Compute Engine i zniżki
W Compute Engine, podobnie jak w pozostałych usługach chmurowych, rozliczenie odbywa się na podstawie zużycia. W przypadku platformy maszyn wirtualnych GCE, koszty naliczane są w ujęciu sekundowym. Finalna cena jest uzalezniona nie tylko od czasu pracy maszyny, ale też od jej specyfikacji, rodzaju dysku czy poziomu wykorzystania sieci. Przewidywany koszt użycia usługi można obliczyć w kalkulatorze na stronie Google Cloud.
Free Tier – miesięczne odnawialne limity
Google Cloud oferuje miesięczne odnawialne limity na wykorzystanie niektórych usług chmurowych.
Wśród nich znajduje się Compute Engine:
- z maszyną e2-micro w regionach us-west1 (Oregon), us-central1 (Iowa) oraz us-east1 (Soutch Carolina),
- do instancji przypisany jest dysk o pojemności 30 GB miesięcznie,
- miesięcznie 5 GB przestrzeni na przechowywanie snapshotów w regionach us-west1 (Oregon), us-central1 (Iowa), us-east1 (South Carolina), asia-east1 (Taiwan) oraz europe-west1 (Belgia)
- oraz 1 GB ruchu wychodzącego (egress) miesięcznie z regionów w Ameryce Pólnocnej do wszystkich destynacji z wyłączeniem Chin i Australii.
Dostępne zasoby nie są wysokie, ale wystarczające, by małym kosztem (albo nawet za darmo) uruchomić niewymagającą aplikację. Limity Free Tier są bezpłatne również podczas korzystania z darmowych kredytów czy regularnego użytkowania chmury.
Maszyny z wywłaszczeniem Spot VMs
Google do rozwoju własnych produktów również angażuje moc maszyn Compute Engine. Zasoby, których nie wykorzysta, udostępnia użytkownikom chmury w ramach Spot VMs.
Spot VMs (do niedawna pod nazwą Preemptible VMs) to instancje o żywotności do 24 godzin. Nie są polecane do utrzymania aplikacji o wysokiej dostępności, ale dobrze sprawdzają się w przypadku prowadzenia sporadycznych działań wymagających dużych nakładów mocy obliczeniowej – np. trenowania modeli machine learning czy prowadzenia zaawansowanej analityki.
Jako Spot VMs można ustawić maszynę o dowolnej specyfikacji, również maszynę z kartami GPU czy maszynę confidential computing. Model instancji z wywłaszczeniem pozwala zaoszczędzić do 91% przy zachowaniu takiej samej wydajności, co w przypadku standardowo działających maszyn.
Recommender – inteligentne podpowiedzi oszczędności
Usługa Compute Engine monitoruje poziom wykorzystania procesora i pamięci i przygotowuje inteligentne rekomendacje oszczędności, bazując na danych z ostatniego okresu. Zakładka Recommendations jest widoczna w górnym panelu konsoli Google Cloud.
Funkcjonalność Recommender może zaproponować między innymi:
- zmianę instancji na maszynę z mniejszym procesorem, jeśli obecne wykorzystanie jest niższe,
- zmianę na typ maszyny z większą pamięcią RAM, jeśli w ostatnim okresie aplikacja wymagała większej ilości zasobów,
- możliwość kupna zniżki committed use discount w przypadku stałego miesięcznego zużycia.
Zniżki za zobowiązanie do zużycia – committed use discounts
Commitment use discount (w skrócie CUD, a w wolnym tłumaczeniu rabat za zobowiązanie zużycia) to jeden ze sposobów na zmniejszenie kosztów za korzystanie z mocy obliczeniowej i pamięci maszyn wirtualnych Google Cloud. Bardzo dobrze sprawdza się w projektach, które korzystają z usług Google Cloud przez dłuższy czas.
Zniżka CUD polega na określeniu zobowiązania na stałe miesięcznie użycie zasobów chmury na okres roku lub trzech lat.
Wysokość zniżki zależy od kilku czynników – m.in. od wybranej rodziny maszyn, wskazanej wysokości miesięcznego zużycia vCPU, pamięci RAM, regionu czy okresu trwania zobowiązania. Jeśli do zniżki chcesz dołączyć GPU lub lokalny dysk SSD, konieczne jest wskazanie i zarezerwowanie zasobów w trakcie konfiguracji committed use discount – a GPU i SSD również będą miały wpływ na wysokość rabatu CUD. Zniżka może wynosić do 70% dla maszyn typu memory-optimized oraz do 57% dla pozostałych rodzin maszyn.
Tutaj przeczytasz więcej o zniżkach CUD: Committed use discounts – czym są i jak działają zniżki za stałe zużycie w Google Cloud?
Zniżki za długotrwałe użycie – sustained use discounts
Committed use discount nie jest jedyną zniżką, jaka funkcjonuje wśród usług chmury Google; obok CUD jest też SUD – sustained use discount, czyli rabat za długie użytkowanie.
Zniżki sustained use discounts są przyznawane automatycznie, a im dłużej (nieprzerwanie) działają maszyny w ciągu miesiąca, tym wyższa zniżka. Gdy zasoby są używane dłużej niż przez 1/4 miesiąca, Compute Engine przydziela rabat na każdą minutę pracy instancji – do 30% dla maszyn N1 i do 20% dla maszyn N2. Zniżka SUD nie dotyczy maszyn z rodziny E2 i A2.
Nie jest możliwe jednoczesne korzystanie i ze zniżki committed use discount, i z sustained use discount dla tych samych zasobów. Jednak zasoby, które nie zakwalifikowały się do rabatu CUD, automatycznie otrzymują rabat za długotrwałe użytkowanie SUD.
Dowiedz się więcej:
- Google Cloud – skalowalna infrastruktura w chmurze
- Jak partner Google Cloud wspiera w procesie migracji do chmury?
Korzystaj z Google Compute Engine przy wsparciu specjalistów
Jesteś zainteresowany rozwijaniem aplikacji z wykorzystaniem maszyn wirtualnych w chmurze Google? Możesz skorzystać ze wsparcia partnera FOTC. Certyfikowani inżynierowie i architekci pomogą Ci w zaplanowaniu infrastruktury i prawidłowej konfiguracji usług oraz odpowiedzą na wszelkie wątpliwości w trakcie bieżącego użycia chmury. FOTC gwarantuje ponadto wsparcie finansowe w procesie migracji do chmury Google oraz zniżki w przypadku długotrwałej współpracy.