Cześć, zapewne nie jeden raz próbowałeś dobrać poprawny rozmiar maszyny wirtualnej w Azure do potrzeb Twojego projektu. Obecnie w Azure znajdują się 92 różne rozmiary maszyn. Poza podstawową różnicą wynikającą z ilości rdzeni (Core) oraz pamięci różnią się wydajnością podsystemu plików (maksymalną ilością dysków, przepustowością), ilością kart sieciowych itp.
Przy dobieraniu maszyny musimy kierować się kilkoma parametrami:
- Rozmiar maszyny (Core/Pamięć) powinien być zbliżony do rozmiaru maszyny którego szukamy. Może brzmi to dziwnie, ale nie jest to proste. W środowisku op-prem możemy w dowolny sposób określić ilość Core i pamięci, w Azure mamy gotowe szablony – nie możemy płynnie zmieniać ilości poszczególnych wartości.
- Tak więc aby poprawnie dobrać maszynę trzeba wybrać taką, która spełnia minimum ilości pamięci i rdzeni. W przypadku pamięci – nie ma miejsca na kompromis – tu powinniśmy zaokrąglać wartość w górę – aplikacja nie może mieć za mało pamięci.
- W przypadku procesorów powinniśmy wybrać tę samą ilość – aczkolwiek pamiętaj, że Core w Azure jest wydajniejszy niż Core w typowym środowisku on-prem. Za wyjątkiem maszyny Basic_A0 – nie stosujemy współdzielenia fizycznych Core dla Virtualnych Core – co znaczy, że każdy Core w maszynie wirtualnej ma swój dedykowany Core na hoście fizycznym.
- Wymagana wydajność dysków dla danych – tu warto zweryfikować zarówno potrzeby IOPS (ilości operacji dyskowych) jak i przepustowości. Część maszyn ma różne wartości przepustowości dla dysku z ustawionym cache lub bez.
- Wymagana ilość dysków – tu pamiętaj, że w Azure w celu zwiększenia wydajności dysków stosujemy trick polegający na łączeniu większej ilości dysków (na poziomie systemu operacyjnego realizujemy RAID0 – striping). https://docs.microsoft.com/en-us/azure/virtual-machines/virtual-machines-windows-infrastructure-storage-solutions-guidelines#striped-disks
- Wymagana przepustowość sieci. W dokumentacji Azure nie ma wyjaśnienia czym jest wartość podana jako low, moderate, high itp… może ten artykuł w tym Ci pomoże (https://social.msdn.microsoft.com/Forums/windowsmobile/en-US/b29b9356-d176-44bc-832a-f4e1ab184c02/azure-vm-network-bandwidth?forum=WAVirtualMachinesforWindows)
Jako iż powyższy proces jest dość złożony przygotowałem dokument w Excelu, który zawiera wszystkie dostępne obecnie rozmiary maszyn wraz kluczowymi parametrami – ilośc core, pamięci, dysków itp. Dokument ma ustawione filtrowanie dzięki czemu odszukanie maszyny spełniającej nasze wymogi może być łatwiejsze…
Dla wygody pracy przyjąłem ceny w EUR dla regionu Europa Zachodnia (za wyjątkiem maszyn NC, które są dostępne tylko w dwóch regionach USA).
Jako cenę maszyny przyjąłem maszyną z systemem Linux – tak by zobrazować koszt samego wystąpienia (bez systemu). Dla wyceny VM z Windows ceny będą odpowiednio wyższe.
Przykład – nasza maszyna wzorcowa to serwer aplikacji, który posiada 4 CPU i 25 GB RAM
- Odfiltrujmy rozmiary maszyn o pamięci większej lub równej 25 GB
- Następnie odfiltrujmy te, które mają zbliżoną ilość Core, proponuję wybrać zarówno wartości większe jak i mniejsze – czyli np. 2, 4, 6, 8
- Posortujmy wyniki po kolumnie Price (pamiętaj, że to cena przykładowa dla danego regionu – dla weryfikacji ceny skorzystaj z cennika (https://azure.microsoft.com/pl-pl/pricing/details/virtual-machines/linux/)
- W wyniku musimy wybrać maszynę, która spełnia pozostałe wymagania (o których pisałem wcześniej – ilość dysków, kart sieciowych itp).
W tym przypadku maszyny, które pasują do naszego zapytania to A4m_v2, DS12_v2, D12_v2, D12, DS12. Wybór odpowiedniej jest zależny od wymaganej wydajności systemu plików – jeśli nasza aplikacja nie ma tutaj szczególnych wymagań – to wystarczy nam A4m_v2
Dokument Excel znajduje się https://github.com/ChrisPolewiak/azure-toolkit/blob/master/azure-vm-sizes.xlsx.