Usługa Elastic Compute Cloud jest typu IaaS. Możliwe jest uruchomienie EC2 z systemem Linux, Windows lub macOS oraz bootstraping usługi poprzez implementację startowego skryptu konfiguracyjnego dla środowiska wraz z jednorazową jego interpretację przy starcie systemu. Do zainstalowanego środowiska możemy mieć dostęp przez m.in. porty 22, 23, 80, 443, 3389, czyli protokoły: SSH, FTP, SFTP, HTTP, HTTPS, RDP. Są to najpopularniejsze protokoły komunikacji dla stosu TCP/IP, jednakże zaimplementowanych usług komunikacji między usługą AWS EC2, a użytkownikiem lub innym systemem może być więcej, w zależności od dokonanej konfiguracji w systemie. O polityce dostępu dla ruchu przychodzącego i wychodzącego do działającej instancji decydują reguły określone i zawarte w tzw. security groups. Takich grup może być zdefiniowanych kilka i każda z nich może być przypisana do dowolnej instancji usługi EC2 w ramach jednego regionu, oznacza to, że w pojedyncza instancja usługi może mieć zdefiniowane więcej niż jedną sucurity group. Z usługą EC2 mogą blisko współpracować inne usługi takie jak EBS, EFS. W zależności od wymagań względem wdrażanego systemu na platformie AWS istnieje wiele rodzajów instancji EC2:
- General – zapewnia równomierną alokację zasobów pomiędzy prędkością procesora, pojemnością pamięci RAM i przepustowością sieci. Sprawdza się dla implementacji web serwerów, serwerów aplikacji, mikroserwisów, serwerów gier, średniej wielkości magazynów danych.
- Compute Optimized – dostarcza instancję zorientowaną na dużą moc obliczeniową procesora. Sprawdza się w przypadku wdrożenia systemu o dużym zapotrzebowaniu na tego typu zasób. Procesy wsadowe, transkodowanie mediów, wysokowydajne web serwery, HPC, modelowanie w dziedzinach naukowych, dedykowane serwery gier, silniki serwerów, uczenie maszynowe, aplikacje wymagające dużej mocy obliczeniowej to przykłady zadań, dla których ten rodzaj instancji usługi EC2 będzie odpowiedni.
- Memory Optimized – zapewnia odpowiednio dużą ilość pamięci RAM na potrzeby aplikacji. Sprawdza się w przypadku dużych zbiorów danych przetwarzanych w pamięci operacyjnej, wykorzystywania pamięci podręcznej w pamięci RAM oraz analizy big data w czasie rzeczywistym.
- Accelerated Computing- wspomaga sprzętowo tradycyjne przetwarzanie poprzez zastosowanie koprocesorów przyspieszających procesy obliczeniowe w skali niewykonalnej dla klasycznej architektury sprzętowej CPU. Akcelerację stosuje się w zaawansowanych pod względem wydajności obliczeniach zmiennoprzecinkowych, przetwarzaniu grafiki, poszukiwaniu wzorców w danych, generatywnej AI (odpowiadanie na pytania, generowanie kodu, obrazu i dźwięku, rozpoznawanie mowy), aplikacjach HPC stosowanych na dużą skalę w przemyśle farmaceutycznym, analizach sejsmicznych, prognozowaniu pogody, modelowaniu finansowym.
- Storage Optimized – zapewnia wydajną architekturę dla sekwencyjnych operacji zapisu i odczytu danych zgromadzonych w sposób trwały i w bardzo dużej ilości. Te operacje dostępu cechują się niskimi opóźnieniami i wysoką wartością parametru IOPS, czyli dużą liczbą procesów odczytu i zapisu na zbiorze danych przypadającym na 1 sekundę. Wartość IOPS jest ściśle związana z możliwościami sprzętowymi pamięci nieulotnej. Opisana architektura ma zastosowanie dla baz danych SQL, baz danych czasu rzeczywistego, baz danych noSQL, analityki w czasie rzeczywistym np. w Apache Spark.
- HPC Optimized – termin HPC (high-performance computing) oznacza wysokowydajne przetwarzanie, które osiąga się poprzez agregację mocy obliczeniowej wielu komputerów na sposób fizyczny przy jednoczesnym udostępnieniu tych zasobów, tak aby były widoczne jako pojedynczy komputer na sposób logiczny. Konfiguracje HPC są szczególnie korzystne gdy dysponuje się licznym zapleczem sprzętowym, a więc w centrach danych oraz u dostawców usług w chmurze. Opisana konfiguracja w usłudze EC2 znajdzie zastosowanie w uczeniu głębokim oraz w dużych i złożonych symulacjach wymagających wyjątkowo wydajnych zasobów obliczeniowych.
Procesy wsadowe są to powtarzalne cyklicznie operacje na dużych zbiorach danych, niewymagające działań ze strony użytkownika np. kopie zapasowe, sortowanie, filtrowanie. Są wysoko niewydajne, dlatego zaleca się ich przeprowadzanie w czasie o niskim natężeniu ruchu w systemie np. w godzinach nocnych, podczas gdy użytkownicy nie korzystają z systemu lub nie korzystają z niego inne procesy, bądź systemy.
Bazy danych czasu rzeczywistego umożliwiają działania na strumieniu danych w czasie rzeczywistym najczęściej zaraz po jego utworzeniu. Działania te mogą obejmować przechowywanie, przetwarzanie lub/i modyfikację danych w strumieniu.
Do aktywnej usługi EC2 można połączyć się protokołem SSH, pod warunkiem że usługa ma przypisany publiczny adres IPv4 oraz security groups działające poprzez analogię na zasadzie firewalla pozwalają na dostęp do instancji przez port 22. Od 2024 r. publiczny adres IPv4 jest przypisywany do instancji EC2 już podczas jej uruchomienia i jest to usługa dodatkowo płatna oraz wymagana.
Gdy podczas próby nawiązania komunikacji z EC2 poprzez SSH:
- przekraczamy dostępny czas na połączenie z usługą to należy sprawdzić konfigurację security group dla SSH, analogicznie należy postąpić w przypadku próby połączenia przez protokół HTTP/HTTPS oraz inne. Generalnie zachowanie usługi polegające na utworzeniu nieskończonej pętli oczekiwania na połączenie z nią sugeruje w sposób jednoznaczny problem z security groups albo z personalnym lub korporacyjnym firewallem.
- otrzymamy komunikat
ssh command not found
, oznacza to brak w systemie aplikacji do przeprowadzenia połączenia SSH. Można pobrać taką aplikację i dla systemu Windows i wcześniejszych będzie to program PuTTY, natomiast w Windows 11 połączenia SSH są możliwe z poziomu klasycznej powłoki systemu albo powłoki PowerShell. - otrzymamy komunikat connection refused to oznacza, że połączenie SSH po stronie klienta działa prawidłowo, problem występuje natomiast po stronie serwera, a dokładniej konfiguracji systemu zainstalowanego w usłudze EC2.
- otrzymamy komunikat
Permission denied
to oznacza, że zarówno połączenie SSH działa prawidłowo, jak i że wsparcie SSH ze strony środowiska uruchomionego na EC2 działa prawidłowo. Problem polega najprawdopodobniej na uwierzytelnieniu użytkownika spowodowanej niepoprawnym plikiem certyfikatu bezpieczeństwa .pem lub niepoprawnym plikiem .ppk zawierającym klucz prywatny i publiczny. Oba pliki należy wygenerować w systemie AWS na stronie konfiguracji usługi EC2 i użyć ich podczas procesu logowania do SSH (plik .ppk dla PuTTy lub plik .pem w pozostałych caseach) - zatrzymaliśmy i uruchomiliśmy ponownie instancję EC2 to do instancji został przypisany nowy, publiczny adres IPv4 i należy go zaktualizować podczas nowych prób połączenia poprzez SSH lub inne protokoły.
- dokonaliśmy konfiguracji w instancji EC2 i mamy problem z połączeniem. W takim przypadku należy uwzględnić wymagany, minimalny czas potrzebny na uruchomienie konfiguracji w systemach AWS.
źródła:
https://www.udemy.com/course/aws-certified-developer-associate-dva-c01/?couponCode=ST21MT121624