Podstawy pracy z Amazon EC2
Jeśli słyszeliście o AWS, prawdopodobnie słyszeliście o EC2. W poniższym artykule znajdziecie instrukcje jak się w nim poruszać i jakie daje nam możliwości. To pierwszy z kilku artykułów, które planujemy opublikować w tym temacie. Na początek przedstawię kilka istotnych informacji, z którymi warto się zapoznać przed uruchomieniem pierwszego serwera.
W poniższym artykule przedstawię Wam informacje o instancjach EC2 oferowanych przez Amazon Web Services. Na początku krótka informacja, czym jest EC2. Skrót ten oznacza Elastic Compute Cloud, czyli elastyczną chmurę publiczną. Instancje EC2, to nic innego jak serwery wirtualne typu VPS. Mogą one być uruchamiane na współdzielonych zasobach sprzętowych lub na serwerach dedykowanych wyłącznie dla nas (za które oczywiście trzeba więcej zapłacić).
Jako że interfejs AWS nie wspiera języka polskiego, niektóre nazwy będziemy używać w oryginalnej formie, używanej przez Amazona.
Typy instancji
W AWS EC2 mamy kilka typów instancji.
General Purpose – Ten typ instancji ma wypośrodkowane parametry i wykorzystujemy je, gdy nie zależy nam, aby żaden z parametrów był dominujący. Do tego typu instancji należą:
- T2 - używane głównie w małych projektach lub jako środowiska testowe. Instancje tego typu korzystają z tzw. kredytów CPU, przez co nie powinny być używane w większych projektach informatycznych, ponieważ po wyczerpaniu kredytów CPU zmniejszają swoją wydajność. Przykładowo dla instancji t2.micro, kiedy CPU nie jest wykorzystywane więcej niż w 20%, to zbierane jest 6 kredytów na godzinę. Natomiast kiedy CPU jest wykorzystywane w ponad 20%, to te kredyty są zużywane. Kredyty przechowywane są do 24 godzin.
- M5 i M4 – Najnowsza generacja instancji tego typu to M5. Jest dobrze zoptymalizowana pod kątem mocy obliczeniowej, pamięci i zasobów sieciowych. M5 różni się od M4 mocą procesora oraz lepiej zoptymalizowanym dyskiem EBS. Wydajność tych serwerów jest stała i nie opiera się na kredytach CPU tak jak jest to w typie instancji t2.
Compute optimized to instancje zoptymalizowane pod kątem mocy obliczeniowej. Należą do nich:
- C4 i C5 – Ich duża moc obliczeniowa pozwala być idealnym rozwiązaniem przy tworzeniu wydajnych serwery sieciowe, modelowanie naukowe, przetwarzanie wsadowe, analiza rozproszona.
Memory optimized to typ instancji stworzony dla firm, dla których istotna jest pamięć RAM.
- X1, X1e,R4 – Wykorzystywane są głównie do wysoko wydajnych baz danych. Największa instancja x1e.32xlarge posiada aż 3940 GB pamięci RAM DDR4. Jest ona certyfikowana przez SAP do współpracy z Business Suite S/4HANA, Business Suite on HANA (SoH), Business Warehouse on HANA (BW), and Data Mart Solutions on HANA w chmurze AWS.
GPU graphics i GPU compute to instancje, w których istotną rolę spełniają procesory graficzne GPU.
- G3 - to GPU graphics. Zapewnia procesory graficzne GPU wraz z wysoką wydajnością procesora, dużą pamięcią i dużą szybkością sieci. Doskonale nadają się do aplikacji wymagających wysokiej wydajności akceleracji grafiki, takich jak wizualizacje 3D, renderowanie 3D, kodowanie wideo, czy rzeczywistość wirtualna.
- P2 i P3 - to GPU compute. Zapewnia układy GPU ogólnego przeznaczenia, wysoką wydajność procesora, dużą pamięć oraz dużą szybkość sieci. Są polecane dla aplikacji wymagających dużej mocy obliczeniowej np. uczenie maszynowe, wysokowydajne bazy danych, obliczeniowa mechanika płynów, obliczenie finansowe, analiza sejsmiczna, dynamika płynów, modelowanie molekularne, genomika.
Do specjalnego rodzaju instancji należą GPU instances oraz FPGA instances (na zdjęciu jako Accelerated Computing), które oprócz dużej mocy obliczeniowej,posiadają dodatkowy instance storage, czyli dysk SSD.
- G2 – to pierwsza ze wspomnianych wyżej instancji. Oprócz posiadania GPU posiada dodatkowy storage w postaci dysków SSD.
- F1 – to druga ze szczególnych instancji. Oferują dostosowywane przyspieszenie sprzętowe dzięki programowalnego układu logicznego FPGA.
Storage optimized – instancje zoptymalizowane pod kątem wydajności dysku.
- D2,I2,H1,H3 – idealne dla aplikacji z dużymi wymaganiami co do I/O i do wielkości storage’u. D2 jest zalecany do uruchamiania dużych hurtowni danych lub równoległych systemów plików.
To, co warto jeszcze wiedzieć, przed planowaniem infrastruktury, to że nie każdy typ instancji dostępny jest w każdym regionie. W niektórych regionach mogą istnieć instancje, które nie znajdują się na wymienionej stronie.
Pamiętajcie, że Amazon Web Services dynamicznie się zmienia. Może się okazać, że w dniu, gdy czytacie ten artykuł, niektóre ze wspomnianych instancji nie są już dostępne.
Aby mieć pewność najlepiej sprawdzić na stronie https://aws.amazon.com/ec2/instance-types/ , na której znajdziecie więcej informacji na temat poszczególnych instancji.
Sposoby rozliczania
Jak już wspominałem w Amazon EC2 posiadamy możliwość uruchomienia serwerów na urządzeniu współdzielonym lub na takim, które jest dla nas dedykowane i fizycznie oddzielone od reszty klientów.
W zależności od sposobu rozliczania korzystania z instancji wyróżniamy instancje:
- On-demand - instancje uruchamiane na żądanie.
- Reserved instances - instancje zarezerwowane. Ten rodzaj instancji gwarantuje nam dostępność zasobów, które chcemy wykorzystywać. W tego typu rozliczeniu, kiedy serwer będzie działał bez przerwy zaoszczędzimy znaczną ilość pieniędzy w stosunku do tego, gdybyśmy uruchomili serwery na żądanie. W tym przypadku zobowiązujemy się do 12 lub 36 miesięcy korzystania z instancji.
- Spot instances - są to instancje pozwalające zaoszczędzić nawet 90% w porównaniu do instancji na żądanie. Są one uruchamiane na zasadach zbliżonych do licytacji. Niestety tego typu instancje nie są zawsze dostępne i Amazon może je zabrać w każdej chwili, dając 2 minuty na zakończenie procesów i zachowanie wyników pracy danej maszyny. W przypadku kiedy Amazon zabierze nam serwery, nie poniesiemy żadnych kosztów pracy za ostatnią godzinę. Tego typu instancje dobrze się nadają np. do przetwarzania zadań z kolejek.
- Dedicated instances - instancje dedykowane. Uruchamiane na dedykowanych i wykorzystywanych tylko przez nas urządzeniach. Są one fizycznie odizolowane od innych klientów.
Koszty w AWS (a zwłaszcza ich optymalizacja) to temat na osobny artykuł. Jeśli jednak chcielibyście je oszacować, możecie do tego użyć dedykowanego narzędzia, które znajdziecie tutaj: https://calculator.s3.amazonaws.com/index.html.
Zarządzanie chmurą Amazon Web Services
AWS daje nam kilka możliwości zarządzania swoimi usługami. W zależności od tego jak jest nam wygodniej, możemy z niego korzystać za pomocą:
- AWS Management Console, czyli panelu dostępnego przez przeglądarkę. To najlepsze rozwiązanie dla niezaawansowanych użytkowników.
- Command Line Interface CLI , czyli interfejs wiersza poleceń.
- Software Development Kits SDKs, czyli zestaw bibliotek pozwalający zarządzać za pomocą różnych języków oprogramowania np. Java, Node.js, Python, PHP, C++, czy ostatnio dodany Go.
Zanim zaczniesz tworzyć EC2
Do utworzenia maszyny wirtualnej, wymagana jest wcześniej skonfigurowana wirtualna infrastruktura sieciowa.Do uruchomienia instancji w EC2, wymagane jest, aby skonfigurowane były:
- VPC(Virtual Private Cloud) – pozwala stworzyć wirtualna sieć w AWS
- Subnet, czyli podsieć w VPC
- Internet Gateway, czyli bramka internetowa w VPC
- Route table, czyli tabela routingu
- Security group, czyli grupa bezpieczeństwa
- Network ACL, czyli polityka bezpieczeństwa
Domyślnie AWS dostarcza wszystkie wymienione komponenty, jednak dobrą praktyką jest utworzenie własnych.
Na co warto zwrócić uwagę
Poniżej wymienię funkcjonalności AWS, na które warto zwrócić uwagę przy tworzeniu maszyn wirtualnych w EC2. Są to:
- Typ instancji - każdy typ instancji przeznaczony jest do różnych środowisk. Należy pamiętać, aby w środowiskach produkcyjnych nie korzystać z typu T2, ze względu na kredyty CPU. Chociaż w niektórych przypadkach (np. środowiska testowe) mogą być one odpowiednie.
- Placement Groups – funkcjonalność, dzięki której maszyny wirtualne będą w jednej "Availability Zone"(pisaliśmy o nich w artykule poświęconym S3 https://www.kylos.pl/blog/amazon-s3/) . Dzięki temu, pomiędzy serwerami będą niskie opóźnienia w komunikacji sieciowej.
- Security group - przed uruchomieniem serwera warto przygotować odpowiednią grupę bezpieczeństwa, która zezwoli tylko na wybrany ruch sieciowy (a nie cały) . Security group przypisujemy do danej instancji EC2.
- Obraz AMI – obraz systemu operacyjnego, jaki będzie używany do uruchomienia serwera.
- Typ dysku EBS – Jego rodzaje to General Purpose SSD (gp2), Provisioned IOPS SSD (io1), Throughput Optimized HDD (st1), Cold HDD (sc1). Przed wybraniem dysku należy zastanowić się, czy bardziej potrzebujemy IOPS, czy większą przepustowość.
Pod tym linkiem znajduje się szczegółowy opis parametrów każdego z typów dysków: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html
Zawsze przed uruchomieniem serwera, należy odpowiedzieć sobie na wiele pytań. Najważniejsze z nich to, do czego dokładnie będzie on wykorzystywany? Inne to np. „Czy potrzebuję dużą przepustowość sieci między innymi serwerami w chmurze?” albo „Jak będzie wyglądać obciążenie dysku?” Zwiększenie rozmiaru dysku, czy zmiana typu instancji będzie dość prosta, ale już zmiana typu dysku, czy dołączenie do "Placement Groups" jest bardziej problematyczne.
Niestety w jednym artykule nie da się wystarczająco opisać wszystkich funkcjonalności używanych w EC2 i warto jeszcze zapoznać się ze szczegółowymi opisami na stronie Amazon AWS. Aby ułatwić Wam pracę, wkrótce opublikujemy artykuł, w którym pokażemy proces tworzenia Amazon EC2.
Kylos jako APN Select Consulting Partner, może Ci w tym pomóc.
Posiadamy duże doświadczenie w migracjach do chmury i budowaniu infrastruktury.
Dowiedz się więcej