Maszyny Wirtualne – kilka słów na początek

Jednymi z podstawowych usług dostępnymi w ramach modelu Infrastructure as a Service (IaaS) są maszyny wirtualne. Najczęściej wykorzystuje się je do replikacji działających środowisk np. na serwerach znajdujących się w jakiejś firmie (on premise) na ich chmurowe odpowiedniki. W przeciwieństwie do usług Platform as a Service (PaaS) cała konfiguracja leży po stronie zamawiającego.

Podczas tworzenia nowej maszyny wskazuje się na jeden z dostępnych w markecie systemów operacyjnych (do wyboru mamy m.in. Windows, Windows Server lub całą masa systemów Linux’owych), a następnie po wstępnej konfiguracji jesteśmy już w stanie połączyć się da maszynki za pomocą pulpitu zdalnego (Remote Desktop) lub klienta ssh. W markecie można znaleźć rownież specjalnie przygotowane obrazy pod instalację konkretnych usług czy aplikacji, takich jak np. Docker, SQL Server czy np. MongoDB.

Rozwiązanie to idealnie sprawdza się przy wspomniamych już powyżej migracjach istniejącychrozwiązań, gdzie cała konfiguracja została już zautomatyzowana za pomocą wszelkiego rodzaju skryptów czy plików konfiguracyjnych. Oczywiście dalej istnieje możliwość wyklikania wszystkiego od nowa za pośrednictwem portalu, aczkolwiek rozwiązanie to jest mało eleganckie, a ponadto sprawdza się tylko w przypadku pojedynczych maszyn.

Maszyny wirtualne w chmurze? Jak to działa?

Każda maszyna wirtualna jest zbiorem wybranych usług Azure’owych tworzących pewien ekosystem. Maszynka zmajduje się w obrębie jakiejś, niewidocznej na zewnątrz, sieci wirtualnej (Virtual Network), dzięki czemu możemy się do niej dostać tylko i wyłącznie za pośrednictwem wystawionego publicznego adresu IP. 

Gdzie przechowywany jest obraz?

Zainstalowany system operacyjny, wraz z danymi, przechowywany jest pod postacią pliku *.vhd (Virtual Hard Disk) w magazynie danych Azure Storage. Każda maszyna wirtualna zawiera dokładnie jeden dysk systemowy (OS disk). Mamy możliwość podłączenia kilku dodatkowych dysków (secondary disks) wykorzystywanych przede wszystkim do przechowywania danych. Pliki *.vhd zapisywane są pod postacią stronicowych obiektów blob (page blobs). Jest to specjalny rodzaj obiektów zoptymalizowany pod kątem operacji odczytu i zapisu. Należy pamiętać, że nie można podłączyć jednego pliku *.vhd do wielu maszyn wirtualnych równocześnie.

No dobrze, ale co w sytuacji gdy mam jakiś zbiór danych, który powinien być współdzielony pomiędzy kilkoma maszynami? Tworzy się wtedy dodatkowy magazyn danych – ważne, żeby to był standardowy magazyn, a nie Premium – wewnątrz którego powinna być dostępna usługa systemu plików (Azure File Storage). Każda tego typu usługamoże zostać zmapowana na nową partycję na dowolnym komputerze, dzięki czemu każda z maszyn będzie miała bieżący dostęp do danych.

Od jakiegoś czasu do większości (jak nie wszystkich) maszyn wirtualnych zaczęto dodawać dodatkowe dyski SSD (Physical SSD on Host). Wykorzystywane są one głównie do stronicowania plików (System Paging File) oraz do przechowywania danych tymczasowych (temporary disk).

W przypadku systemów operacyjnych z rodziny Windows tego typu dysk będzie widoczny jako dodatkowa partycja D, natomiast w przypadku systemów Linux’owych będzie można się do niego dostać za pomocą ścieżki /dev/sdb1. Tego typu dysk można wykorzystać na dane tymczasowe, które w razie czego możemy utracić.

Z czego tak naprawdę składa się maszyna wirtualna?

Udało mi się znaleźć, w dokumentacji Microsoft’u, ciekawy diagram przedstawiający wspomiany powyżej ekosystem maszyny wirtualnej. Na obrazku zaznaczono wszystkie połączenia pomiędzy samą maszyną, a pozostałymi usługami. Diagram wraz z linkiem do dokumentacji zamiszczam poniżej:

Ekosystem maszyny wirtualnej wewnątrz chmury Azure
Ekosystem maszyny wirtualnej wewnątrz chmury Azure. Źródło: link

Warto wspomnieć, że stan każdej maszyny wirtualnej jest kontrolowany za pośrednictwem dodatkowych usług monitorujących.

Co możemy na takiej maszynie zainstalować?

No dobrze, ale czy można zainstalować każdy system operacyjny, nawet starego MS DOS’a? Najwcześniejsze oprogramowanie, wywodzące się spod szylda Microsoft’u, to Windows Server 2008 R2. Można również zainstalować Windows Server 2012 R2 oraz Windows Server 2016. Jeżeli chodzi o samego Windowsa to najstarszym dostępnym systemem jest Windows 7.

Gdzieś słyszałem, że istnieje możliwość zainstalowania Windows Server 2003, aczkolwiek należy w tym przypadku podpisać jakąś specjalną umowę o obsłudze klienta z Microsoft’em oraz wgrać system przy pomocy swojego obrazu. Żadnego systemu sprzed ery Windows Server 2003 nie jesteśmy już w stanie zainstalować. Jeżeli nie ma wymaganej przez nas wersji systemu operacyjnego, przykro mi, ale dalej nie pójdziemy.

Podobnie tutaj ma się sprawa linuxa. Jeżeli jest potrzebny jakieś starszy system np. Ubuntu w wersji 12.04, przykro mi, ale go tutaj nie zainstalujesz.  Znajdziesz tutaj najbardziej znane i stosunkowo młode dystrybucje Linux’a, takie jak: Ubuntu (od wersji 14.04), Debian, OpenSUSE, CentOS (od wersji 6.3), Red Hat czy nawet Red Hat Enterprise (6.7, 7.1).

Jak widać największą restrykcją jest instalacja starszego systemu operacyjnego. Nie ma szans na zainstalowanie legendarnego Windows XP czy Windows 2000. Jeżeli Twoje aplikacje wymagają tego typów systemów operacyjnych to może nadszedł już czas aby zaktualizować swoje oprogramowanie?

Poza samymi systemami operacyjnymi można zainteresować się gotowymi, dostępnymi w markecie, paczkami z oprogramowaniem, w zależności od potrzeb np.:  serwery web aplikacji (Nginx, Apache Tomcat), serwery baz danych (Microsoft SQL Server, MySQL), środowiskama Big Data (Cloudera, Hortonworks Data Platform) czy nawet gotowymi środowiskami programistycznymi (np. Visual Studio 2017 na Windows Server czy NodeJS Web Stack na Ubuntu). W markecie znajdują się również gotowe wdrożenia dla oprogramowania antywirusowego (ESET, Kaspersky).

Ile w ogóle kosztują maszyny wirtualne?

Jeżeli jesteś szczegółowo zainteresowany ile kosztują poszczególne maszyny to odsyłam do oficjalnych cenników dostępnych na stronie Microsoft Azure. W przypadku systemów z rodziny Windows sprawdź ten adres, jeżeli zaś jesteś zainteresowany systemami wywodzącymi się od Linux’a to zapraszam do kliknięcia w ten link.

Warto wspomnieć, że ceny maszyn wirtualnych z systemem windows zawierają już w sobie koszty licencji samego oprogramowania. W celu zmniejszenia kosztów mamy opcję wprowadzenia swojego własnego klucza licencyjnego.

Pozostałe ograniczenia

Kolejnymi restrykcjami, z jakimi można się spotkać podczas tworzenia maszyny są m.in:

  • maksymalny rozmiar dysku wirtualnego *.vhd, o ile się nie mylę wynosi on obecnie 4TB,
  • liczba dysków – rozróżnia się to na podstawie serii np. maszynki z serii A mogą mieć aż do 16 dysków po 4TB każdy,
  • nazewnictwo (dysków), nie możemy korzystać z partycji C:/ (została ona zarezerwowana jako OS disk). Warto zwrócić uwagę, czy zainstalowana na maszynie aplikacja nie wykorzystuje tej partycji, Może to później może wprowadzić różnego rodzaju ograniczenia i problemy,
  • nazwa komputera może mieć maksymalnie 15 znaków,
  • hasło powinno zawierać wielkie i małe litery, znaki specjalne oraz cyfry (wystarczy aby spełnione były 3 kryteria z 4). Ponadto hasło nie powinno być krótsze niż 12 znaków oraz nie dłuższe niż 123,
  • nazwa użytkownika jest w dużej mierze dowolna, należy tylko wystrzegać się loginów zabronionych/zarezerwowanych, których to listę przedstawiam poniżej:
Lista zabronionych nazw użytkowników
Lista zabronionych nazw użytkowników. Źródło: link

Więcej informacji na temat ograniczeń oraz dostępnych funkcjonalności można znaleźć pod tym adresem.

Którą serią wybrać?

Maszyny wirtualne możemy podzielić na 6 grup, w zależności od zastosowań:

  • Maszyny powszechnego użytku – seria B, Dsv3, Dv3, DSv2, Dv2, DS, D, Av2, A0 – maszyny zrównoważone pod kątem procesora oraz pamięci. Wykorzystywane podczas rozwoju oprogramowania przez testerów i programistów. Na tym etapie ruch sieciowy nie powinien być jeszcze wysoki, a same bazy danych przechowują dane w ilości pozwalającej na dalszy development,
  • Optymalizacja pod kątem obliczeń – seria F, Fsv2, Fs – charakteryzują się bardzo dużą mocą procesora w stosunku do pamięci – wykorzystywane jako serwery sieci Web lub serwery aplikacji,
  • Optymalizacja pod kątem pamięci – seria ESv3, Ev3, M, GS, G, DS, Dv2, D – posiadają wysoki współczynnik pamięci do procesora – znajdują zastosowanie jako serwery dla relacyjnych baz danych oraz wszelkich operacji wykonywanych w pamięci,
  • Optymalizacja pod kątem magazynu danych – seria Ls – cechują się dużą przepustowością dysku oraz operacjami I/O. Idealnie nadają się do problemów natury big data oraz noSQL’owych baz danych,
  • Możliwość wykorzystania procesora graficznego (GPU) – seria NC, ND – maszyny wirtualne przystosowane do renderowania wszelkich plików multimedialnych, takich jak grafiki czy pliki video,
  • Maszyny o bardzo wysokiej wydajności obliczeniowej – seia H-A8 11 – maszyny z najlepszymi, najszybszymi i najbardziej wydajnymi procesorami, pozwalającymi za uzyskanie naprawdę wysokiej przepustowości.

Seria zakończona literką s wspiera dyski SSD.

Żeby nie zaspyać Was dzisiaj informacjami myslę, że wystarczy 🙂 Następnym razem zabierzemy się już za wdrażanie maszyn do chmury.