Wybór najlepszego typu wolumenu Amazon EBS do samodzielnego wdrożenia bazy danych

26 października 2022

Wybór najlepszego typu wolumenu Amazon EBS do samodzielnego wdrożenia bazy danych

Istnieje wiele powodów, dla których warto wybrać usługi zarządzane AWS do uruchamiania bazy danych w chmurze. Czasami jednak usługa zarządzana może nie być właściwym wyborem, a samozarządzająca się instancja bazy danych jest najlepsze dla Twojej organizacji. Ostatecznie, gdy Twoja organizacja podejmie tę decyzję, wybór odpowiednich komponentów dla samodzielnie zarządzanej bazy danych (DB) jest ważnym krokiem do zapewnienia, że nie tylko działa zgodnie z Twoimi oczekiwaniami, ale także jest zoptymalizowana pod względem kosztów.

Amazon Elastic Block Store (EBS) oferuje szeroki wybór ofert wolumenów, ale wybór odpowiedniego typu wolumenu Amazon EBS dla bazy danych nie musi być trudny. W tym poście omówimy kilka rozważań i uzasadnień wyboru najbardziej odpowiedniego typu wolumenu Amazon EBS do uruchamiania samozarządzających się workloadów w AWS.

Zrozumienie wolumenów Amazon EBS

 

W przypadku workloadów w AWS zalecane są dwa typy wolumenów Amazon EBS:

  • Dyski półprzewodnikowe (SSD): zoptymalizowane pod kątem workloadów transakcyjnych obejmujących częste operacje odczytu/zapisu przy małym rozmiarze wejścia/wyjścia (I/O), gdzie dominującym atrybutem wydajności jest liczba operacji we/wy na sekundę (IOPS).
  • Dyski twarde (HDD): Zoptymalizowane pod kątem dużych workloadów strumieniowych, w których dominującym atrybutem wydajności jest przepustowość.

Na potrzeby tego postu skupiamy się na typach woluminów SSD, ponieważ są one bardziej odpowiednie do workloadów bazy danych. Poniżej znajduje się krótki wykres przedstawiający niektóre kluczowe możliwości oferowane przez typy woluminów SSD. Więcej szczegółów można znaleźć na stronie dokumentacji EBS.

Wybor najlepszego typu wolumenu Amazon EBS do samodzielnego wdrozenia bazy danych

Specyfikacje dysków SSD General Purpose EBS i dysków Provisioned IOPS SSD

Na pierwszy rzut oka powyższej tabeli może wydawać się oczywiste, że io2 lub io2 Block Express to najlepszy wybór do uruchomienia bazy danych. Wstępne założenie jest takie, że wszystkie bazy danych wymagają wysokiego IOPS i potencjalnie dużej przepustowości typu woluminu. Większość od razu wybierze opcję io2 lub io2 Block Express dla dowolnego workloadu IOPS lub workloadu o dużej przepustowości. Zanim podejmiemy decyzję, ważne jest, aby zrozumieć niektóre kluczowe atrybuty każdego z typów woluminów.

Typ woluminu gp2 jest najczęściej wdrażany w szerokim zakresie przypadków użycia, takich jak woluminy systemowe, środowiska programistyczne i testowe oraz inne aplikacje o niskich opóźnieniach. gp2 to typ woluminu, który wiąże swoją wydajność z rozmiarem woluminu i oferuje podstawową wydajność 3 IOPS na GiB aprowizowanego rozmiaru woluminu. W przypadku wolumenów poniżej 1000 GiB, GPS oferuje możliwość zwiększenia do 3000 IOPS na podstawie opisanego tutaj salda typu burst credit. Wydajność przepustowości jest obliczana na podstawie rozmiaru woluminu do limitu przepustowości 250 MiB/s i jest opisana tutaj.

Typ wolumenu gp3 został wydany 1 grudnia 2020 roku, aby zapewnić klientom AWS typ wolumenu dokładnie dopasowany do ich potrzeb. Woluminy te zapewniają podstawową wydajność 3000 IOPS i 125 MiB/s niezależnie od rozmiaru woluminu. Dzięki wolumenom gp3 AWS umożliwia klientom modyfikowanie zarówno IOPS, jak i przepustowości każdego wolumenu, aby dopasować się do danego wymagania workloadu. Szczegółowe informacje na temat właściwych proporcji wielkości woluminu do liczby IOPS i przepustowości można znaleźć tutaj.

Następnie omówimy aprowizowaną rodzinę typów woluminów IOPS SSD. Ogólnie rzecz biorąc, io1, io2 i io2 Block Express zostały stworzone, aby zapewnić klientom typ wolumenu, który został zaprojektowany dla bardzo intensywnych workloadów we/wy, przy czym pojedynczy wolumen może być skalowany powyżej 16 000 IOPS. Podczas gdy wolumeny gp2 i gp3 mają zapewniać co najmniej 90% swojej wydajności przez 99% roku, wolumeny io1, io2 i io2 Block Express mają zapewniać 90% swojej wydajności przez 99,9% roku.

Kluczową różnicą między io1 a io2 jest to, że te ostatnie (i io2 Block Express) mają 99,999% trwałości. Przekłada się to na około 0,001% rocznego wskaźnika awarii, w porównaniu do 0,1%-0,2% wskaźnika awarii typów objętości gp2, gp3 lub io1. W dalszej części tego postu dowiemy się, dlaczego może to być ważna kwestia.

W przypadku woluminów io2, w zależności od regionu i typu instancji, do którego podłączasz, zostanie wdrożony wolumin io2 lub io2 Block Express. Wszelkie nowe lub istniejące woluminy io2 dołączone do instancji Amazon EC2 X2idn, X2iedn, R5b i C7g są automatycznie uruchamiane na woluminach io2 Block Express i io2 Block Express we wszystkich regionach, w których te instancje są dostępne. io2 Block Express obsługuje standardowe funkcje io2, takie jak Multi-Attach i Elastic Volumes, ale kluczowa różnica między io2 a io2 Block Express polega na tym, że ta ostatnia ma możliwość zapewnienia większego rozmiaru woluminu i większej gęstości IOPS. Szczegóły dotyczące io1, io2 i io2 Block Express można znaleźć na stronie dokumentacji.

Uwagi dotyczące wyboru odpowiedniego typu wolumenu Amazon EBS

Teraz, gdy rozumiemy możliwości różnych typów woluminów SSD, które są zwykle brane pod uwagę podczas uruchamiania samozarządzającej się bazy danych, ważne jest, aby zrozumieć, w jaki sposób wymagania dotyczące workloadu bazy danych i funkcji odgrywają ogromną rolę w wyborze woluminów.

Jak wspomnialiśmy wcześniej, tylko dlatego, że na pierwszy rzut oka wolumen io1 lub io2 ma wyższą zdolność IOPS na wolumin, nie oznacza to, że nie możemy osiągnąć podobnej zdolności IOPS przy użyciu innego i potencjalnie bardziej opłacalnego typu woluminu.

Załóżmy na przykład, że masz następujący zestaw wymagań dla swojej aplikacji bazodanowej:

  • 8000 IOPS
  • Wymagania dotyczące milisekund latencji
  • Przepustowość 125 MiB/s
  • Minimalna ilość wolnego miejsca 150 GB

Istnieje kilka typów woluminów, które będą w stanie obsłużyć tę bazę danych pod względem wydajności. Przyjrzyjmy się każdemu z nich i omówmy zalety i wady:

gp2: Aby uzyskać 8000 IOPS z wolumenu gp2, musielibyśmy zapewnić wolumen co najmniej 2,67-TiB (8000/3 IOPS na GB = 2,67 TiB) przy koszcie 266,70 USD miesięcznie (2667 GB * 0,10 USD).

gp3: wolumin 150 GB udostępniony przy 8000 IOPS i przepustowości 125 MiB/s przy koszcie 37,00 USD miesięcznie (150 GB * 0,08 USD) + (5000 płatnych IOPS * 0,005 USD). Pierwsze 3000 IOPS są dostarczane bezpłatnie jako część linii bazowej wolumenu gp3.

io1: Aby uzyskać 8000 IOPS z wolumenu io1, musimy utrzymać stosunek 50:1 IOPS do pamięci masowej. W związku z tym potrzebny będzie wolumen 160 GB przy koszcie 540,00 USD miesięcznie (160 GB * 0,125 USD) + (8000 IOPS * 0,065 USD).

io2: wolumin 150 GB z 8000 IOPS przy koszcie 538,75 USD miesięcznie (150 GB * 0,125 USD) + (8000 IOPS * 0,065 USD).

W przykładzie dwa woluminy, które wyróżniają się jako potencjalni zwycięzcy to gp3 i io2. gp3 wyróżnia się, ponieważ może być bardzo opłacalnym woluminem dla tego workloadu. io2 wyróżnia się wysoką trwałością i gwarancjami wyższej wydajności. gp2 nie jest tutaj najlepszym wyborem, ponieważ aby osiągnąć żądaną liczbę operacji we/wy na sekundę, musisz przeznaczyć wielkość woluminu, aby osiągnąć żądaną wydajność. Ponadto io2 jest lepszym wyborem niż io1 ze względu na to, że nie trzeba zwiększać woluminu, a także zapewnia dodatkową trwałość (99,999%) w niższej cenie.

Zanim przejdziemy do innych rozważań, weźmy bardziej ekstremalny przykład, w którym workload może wymagać setek tysięcy IOPS w klastrze systemów.

W tym scenariuszu załóżmy, że otrzymałeś następujące wymagania:

  • 4 węzłowa baza danych Oracle Database 19c z Oracle ASM
  • 320,000 IOPS
  • Przepustowość 2800 Mib/s
  • 48 TB dostępnej pamięci
  • Czasy odpowiedzi w milisekundach

Przy takim zestawie wymagań istnieje wiele możliwości wdrożenia tego rozwiązania. Oracle Automatic Storage Management (ASM) świetnie sprawdza się w dystrybucji plików bazy danych na wielu woluminach, dlatego postaramy się rozmieścić dane tak równomiernie, jak to możliwe, w każdym z czterech węzłów. Przestrzegamy dobrych praktyk Oracle i konfigurujemy co najmniej cztery woluminy na węzeł.

W naszych testach przeprowadziliśmy test współczynnika odczytu/zapisu 70:30 na naszych czterech węzłach serwera Oracle dla typów woluminów io2 Block Express i gp3. Zobaczmy, jak wygląda konfiguracja z typami woluminów io2 i gp3.

W przypadku io2 udostępniamy cztery woluminy na węzeł z alokacją 3 TB. Każdy wolumen jest udostępniany na poziomie 22 250 IOPS. Daje to klasterowi łącznie 356 000 IOPS, co zapewnia nam wystarczającą liczbę IOPS przy 90% IOPS przez 99,9% czasu.

W przypadku gp3 mamy również elastyczność, aby zapewnić IOPS do 16 000 IOPS na wolumin. W tym przykładzie, aby równomiernie rozdzielić 48-TB pamięci między cztery węzły w klastrze, używamy sześciu woluminów na węzeł, po 2 TB każdy. Aby osiągnąć 356 000 IOPS, każdy wolumen zapewnia 14 834 IOPS, co daje łącznie 356 016 IOPS.

W obu scenariuszach, w odniesieniu do wcześniej wspomnianych instancji zoptymalizowanych pod kątem EBS, wdrażamy r5b.12xlarge, który daje nam maksymalnie 130 000 IOPS na instancję.

Przyjrzyjmy się teraz poniższemu podziałowi cen dla każdej z tych opcji za pomocą kalkulatora cen AWS (zastrzeżenie: wszystkie ceny obowiązują w chwili pisania tego tekstu i używają publicznych cen us-east-2, Twoje ceny mogą się różnić):

Wybor najlepszego typu wolumenu Amazon EBS do samodzielnego wdrozenia bazy danych

Jak widać z powyższej tabeli, pomiędzy tymi dwoma rozwiązaniami występuje znaczna różnica cenowa. Który z nich jest odpowiedni dla Twojego workloadu? Trudno będzie to stwierdzić na podstawie prostych wymagań przedstawionych na początku tego ćwiczenia, więc tutaj w grę wchodzą dodatkowe kwestie.

Dodatkowe uwagi dotyczące wyboru typu wolumenu Amazon EBS

Gdy zaczniesz oceniać, które wdrożenie typu woluminowego ma dla Ciebie sens, powinieneś zacząć brać pod uwagę inne czynniki przy podejmowaniu decyzji. Kilka kwestii, które mogą mieć wpływ na proces podejmowania decyzji, przedstawiono na poniższej liście; nie jest to jednak w żadnym wypadku lista wyczerpująca:

  • Replikacja bazy danych: Czy baza danych będzie korzystać z wbudowanych mechanizmów replikacji danych do innej strefy dostępności (AZ) lub innego regionu?
  • Wydajność: Czy potrzebujesz dodatkowej wydajności io2 lub io2 Block Express? A może wydajność gp3 będzie wystarczająca?
  • Typ instancji bazy danych: Czy potrzebujesz instancji typu bursting lub z dedykowaną przepustowością?

Replikacja

Rozłóżmy kwestię replikacji bazy danych. Jeśli baza danych wymaga wdrożenia drugiego (zduplikowanego) zestawu infrastruktury w innej strefie dostępności w celu wdrożenia o wysokiej dostępności, to czy opłacanie zduplikowanego zestawu woluminów io2 w każdej strefie dostępności (AZ) ma sens? Pamiętaj, że io2 zapewnia 100 razy większą trwałość niż wolumin gp3 (99,8–99,9% w porównaniu do 99,999% trwałości); jednak, ponieważ zapewniasz wysoką dostępność bazy danych w innej strefie dostępności, czy płacenie dodatkowej kwoty za wolumeny io2 w jednej lub obu strefach dostępności ma sens dla Twojej firmy? W większości przypadków posiadanie zreplikowanej kopii bazy danych w innej strefie dostępności nie tylko zapewnia większą dostępność bazy danych, ale także zmniejsza ryzyko utraty danych z powodu skorelowanych awarii.

Wydajność

Wydajność z pewnością odgrywa bardzo ważną rolę w wyborze najbardziej odpowiedniego typu woluminu dla Twojego workloadu. Zrozumienie charakterystyki wymagań dotyczących workloadu ma kluczowe znaczenie dla zapewnienia wydajnego działania aplikacji w firmie. Zgodnie z dokumentacją AWS różnice w opóźnieniach między io2 (submilisekunda) a gp3 (jednocyfrowa milisekunda) mogą mieć wpływ na twój wybór. Chociaż może się okazać, że wolumeny gp3 mogą zapewnić podobną wydajność IOPS do io2 Block Express (jak widać w naszym przykładzie powyżej), różnica polega na tym, że io2 i io2 Block Express zapewniają spójne czasy odpowiedzi poniżej milisekundy, co może być kluczowe w przypadku workloadów o znaczeniu krytycznym.

W naszych testach wykorzystaliśmy syntetyczny generator workloadów dla Oracle o nazwie Silly Little Oracle Benchmark (SLOB), który jest popularnym narzędziem używanym do symulacji workloadów w bazach danych Oracle. Wyniki tego testu były zaskakująco podobne, ponieważ oba typy wolumenów osiągnęły czasy odpowiedzi poniżej milisekundy w czasie trwania testu, a także z łatwością osiągnęły pożądane IOPS i wymagania dotyczące przepustowości.

Syntetyczny load generator to tylko symulacja workloadu, a każdy workload ma swoje własne specyficzne cechy, które utrudniają replikację za pomocą tego generatora. Dlatego uzyskane wyniki są jedynie wskazówką dla konkretnych testów, które zostały przeprowadzone. Ale tutaj właśnie pojawia się moc AWS — jeśli zmienią się wymagania dotyczące wydajności workloadu, możesz zmienić typ woluminu w dowolnym momencie, bez przestojów aplikacji. W sytuacji, gdy zdecydujesz się wdrożyć woluminy gp3, ale później stwierdzisz, że charakterystyka wydajności nie spełnia Twoich potrzeb, możesz łatwo zmodyfikować wolumin i przekonwertować go na io2 lub odwrotnie. Byłoby to trudne i kosztowne do osiągnięcia w implementacji lokalnej.

Typ instancji EC2

Ważne jest, aby zrozumieć, że typy instancji Amazon EC2 mogą również odgrywać kluczową rolę w osiąganiu maksymalnej wydajności podłączonych woluminów Amazon EBS. Podczas wdrażania wolumenów Amazon EBS dla workloadów produkcyjnych zaleca się wdrażanie instancji zoptymalizowanych pod kątem Amazon EBS. Wykresy dostępne na stronie instancji zoptymalizowanych pod kątem Amazon EBS pokazują możliwości dotyczące przepustowości Amazon EBS, przepustowości w MB/s oraz możliwości IOPS Twoich instancji. Mniejsze typy instancji, które są oznaczone gwiazdką na wymienionych powyżej instancjach zoptymalizowanych pod kątem Amazon EBS, mają wydajność typu burstable. Tych instancji należy generalnie unikać do użytku produkcyjnego, chyba że w pełni rozumiesz swoje workloady.

Podsumowanie

W tym poście omówiliśmy, jak wybrać najlepszy wolumin pamięci masowej EBS dla samodzielnie zarządzanej bazy danych. Przeanalizowaliśmy rodzaje wolumenów EBS i co należy wziąć pod uwagę przy wyborze odpowiedniego wolumenu EBS. Ponadto dokonaliśmy przeglądu określonych atrybutów wydajności i kosztów dla woluminów EBS gp2, gp3 oraz io1, io2 i io2 Block Express. Na koniec przyjrzeliśmy się przykładom testów wydajności i tego, jak typ instancji EC2 odgrywa kluczową rolę w wydajności wolumenu EBS.

W sytuacji, gdy wydajność workloadów bazy danych ma priorytet nad kosztami, tylko najszybsze i najbardziej trwałe typy woluminów mogą spełnić te wymagania. Ale to nie znaczy, że są to jedyne typy woluminów, które należy wziąć pod uwagę. Ponieważ AWS daje tak wiele możliwości wyboru, wybór odpowiednich komponentów infrastruktury odgrywa kluczową rolę w zapewnieniu, że możesz nie tylko znaleźć równowagę między ceną a wydajnością, ale także spełnić wymagania i cele biznesowe. Ważne jest, aby wziąć pod uwagę inne wymagania, aby zmniejszyć ryzyko wyboru określonego typu wolumenu.

Po uruchomieniu workloadu, sprawdź narzędzie AWS Compute Optimizer, aby zidentyfikować potencjalne obszary, w których możesz mieć niedostateczną lub nadmierną alokację. Jest to ważny krok, aby upewnić się, że używasz najbardziej optymalnych typów woluminów i instancji obliczeniowych dla Twojego workloadu.

Case Studies
Referencje

Firma Hostersi pozwoliła nam osadzić ogólne zagadnienia programu Well Architected Framework w kontekście naszej firmy. Oszczędziło nam to wiele czasu i pozwoliło znaleźć lepiej dopasowane rozwiązania do specyfiki naszego biznesu. WAF był świetnym katalizatorem do wprowadzenie szeregu zmian w obszarze niezawodności, szybkości i bezpieczeństwa edrone. 

Piotr Stachowicz
CTO
W skrócie o nas
Specjalizujemy się w dostarczaniu rozwiązań IT w obszarach projektowania infrastruktury serwerowej, wdrażania chmury obliczeniowej, opieki administracyjnej i bezpieczeństwa danych.