Powrót do bloga

Jak skonfigurować i zoptymalizować MongoDB na Ubuntu w chmurze publicznej

Jak skonfigurować i zoptymalizować MongoDB na Ubuntu w chmurze publicznej

Firmy generują mnóstwo danych, co utrudnia ich obsługę i zarządzanie nimi. Tradycyjnie branża od dziesięcioleci korzysta z systemów RDBMS, ale wraz z pojawieniem się Big Data w XXI wieku, bazy danych NoSQL (Not only SQL) pojawiły się na rynku z myślą o niestrukturyzowanych i semistrukturyzowanych danych na dużą skalę.

W tym wpisie zamierzam skonfigurować klaster MongoDB.

MongoDB to darmowa i otwartoźródłowa dokumentowa baza danych NoSQL, która jest szeroko stosowana ze względu na wysoki poziom skalowalności i elastyczności, jaki zapewnia.

Aby wdrożyć MongoDB produkcyjnie, zaleca się korzystanie z zestawów replik (Replica Sets). Zestawy replik są odpowiednikiem konfiguracji Master/Slave w świecie relacyjnym dla MongoDB, ale w przeciwieństwie do niej są bardzo bezproblemowe w konfiguracji, ponieważ wszystko jest wbudowane. Więcej informacji na temat zestawów replik można znaleźć w definicji procesu replikacji w TutorialsPoint’s.

Planowanie klastra serwerów chmurowych MongoDB

Zamierzam utworzyć klaster składający się z 3 węzłów. Ważne jest, aby przydzielić im równe zasoby, ponieważ każdy z nich może stać się serwerem głównym (tj. master). Węzły te lub maszyny mogą działać na dowolnym systemie operacyjnym, ale w tym samouczku użyję systemu Ubuntu 18.04 LTS. Informacje o tym, jak podłączyć i skonfigurować preinstalowany obraz z biblioteki CloudSigma’s, można znaleźć w tym samouczku.

Ponieważ głównym celem stosowania zestawu replik (Replica Set) jest to, aby klaster przetrwał awarię pojedynczego węzła, bezcelowe byłoby, gdyby wszystkie serwery znajdowały się na tym samym hoście fizycznym. Na szczęście CloudSigma oferuje rozwiązanie o nazwie grupy dostępności. Oznacza to, że można nakazać systemowi pogrupowanie wszystkich trzech serwerów w różne grupy. Dzięki temu nigdy nie będą one znajdować się na tym samym hoście fizycznym. Więcej informacji na ten temat oraz o innych funkcjach bezpieczeństwa i ciągłości działania można znaleźć tutaj.

Ważne jest również użycie 64-bitowej wersji systemu Linux. Powód jest prosty: MongoDB nie działa dobrze na systemach 32-bitowych (więcej o tym tutaj).

Instalacja MongoDB w chmurze

Ta sekcja jest dość prosta. Możesz użyć jednego ze wstępnie skonfigurowanych obrazów Ubuntu 18.04 lub zainstalować go samodzielnie.

Konfiguracja procesora (CPU), pamięci RAM i dysku jest kwestią bardzo indywidualną i zależy od obciążenia. W przypadku mniejszej instalacji procesor 4 GHz, 4 GB pamięci RAM i dysk 10 GB (na system) powinny być wystarczające. Podczas podłączania dysków upewnij się, że używasz VirtIO. Jeśli użyjesz IDE, wydajność znacznie spadnie. Ponadto, ponieważ tworzysz zestaw replik (Replica Set), wszystkie węzły (i serwery aplikacji) muszą znajdować się w tej samej sieci VLAN.

W przeciwieństwie do wielu innych dostawców chmury, nie ma potrzeby konfigurowania pamięci masowej z RAID10 lub podobnym rozwiązaniem w celu poprawy wydajności. Jak donosi wielu naszych klientów, uzyskasz niesamowitą wydajność od samego początku, korzystając zarówno z dysków SSD, jak i magnetycznych w CloudSigma.

Nadal zalecam przechowywanie danych MongoDB na osobnym dysku. Powodem jest po prostu to, że w pewnym momencie może zajść potrzeba optymalizacji systemu plików, której nie chciałbyś przeprowadzać na całym systemie plików.

Mając to na uwadze, najłatwiej jest po prostu dodać ten dysk po skonfigurowaniu serwerów. Na razie skupmy się na instalacji systemu. Jeśli instalujesz go samodzielnie (zamiast korzystać ze wstępnie skonfigurowanych systemów), zalecam naciśnięcie klawisza F4 w menu rozruchowym i wybranie opcji ‘Zainstaluj minimalną maszynę wirtualną’.

Tworzę 3 maszyny, każda o następującej specyfikacji:

  • CPU: 4 GHz
  • RAM: 4 GB
  • SSD: 10 GB (Ubuntu 18.04 LTS), 20 GB (dodatkowy dysk)

Jak wskazano w sekcji dotyczącej dysków SSD, podłączam dysk o rozmiarze 10 GB z zainstalowanym systemem Ubuntu 18.04 LTS.

Ponadto podłączam do niego kolejny pusty dysk o rozmiarze 20 GB do przechowywania danych MongoDB. Rozmiar ten w dużej mierze zależy od sposobu użytkowania, ale w przypadku małego systemu 20 GB powinno prawdopodobnie wystarczyć. Ponieważ jednak czasami trudno jest przewidzieć, ile danych będziesz przechowywać, użyjemy LVM. Pozwoli to na proste dodanie kolejnego dysku w późniejszym czasie i rozszerzenie wolumenu bez konieczności zaczynania od nowa. Alternatywnie można użyć jednego dysku i zwiększyć jego rozmiar później za pomocąresize2fs.

Aby dodać dysk, przejdź do sekcji ‘Drives’, kliknij ikonę ‘Create a new drive’ na górze, nadaj nowemu dyskowi nazwę i ustaw jego rozmiar na 20 GB. Po zapisaniu przejdź do konkretnej maszyny, do której chcesz go podłączyć, i w sekcji dysków w szczegółach tej maszyny kliknij ‘Attach a drive’ i wybierz ten dysk.

Teraz, gdy masz już trzy maszyny, możesz przejść do montowania dodatkowego dysku dodanego do przechowywania danych MongoDB na każdej maszynie. Zalecam dodanie tego dysku jako partycji. Partycjonowanie pozwala systemowi operacyjnemu na oddzielne zarządzanie informacjami w każdym obszarze. Aby dodać dysk jako partycję, najpierw sprawdzę wszystkie dyski podłączone do naszej maszyny. W tym celu wykonam następujące polecenie:

Po wykonaniu tego polecenia otrzymam dane wyjściowe informujące o dyskach i urządzeniach w mojej maszynie.

MongoDB

Na obrazku zaznaczyłem dysk 10 GB jako ten, na którym zainstalowany jest nasz system operacyjny. Następnie widoczny jest kolejny dysk o pojemności 20 GB, który został właśnie podłączony. Lokalizacja dysku to /dev/vdb. Możesz utworzyć partycję na tym dysku za pomocą następujących poleceń:

Otworzy to narzędzie fdisk, czyli narzędzie wiersza poleceń udostępniające funkcje partycjonowania dysku, w którym można tworzyć partycje na naszym dysku. Wyświetli ono monit “Command (m for help):”, w którym należy wpisać n aby utworzyć nową partycję, a następnie po prostu naciskać klawisz Enter, aby zaakceptować wartości domyślne. Po utworzeniu partycji wpisz w aby zapisać zmiany. Będzie to wyglądać następująco:

Utworzono nową partycję 1 typu ‘Linux’ o rozmiarze 20 GiB. Teraz, gdy partycja została utworzona, utwórzmy pulę LVM:

Wpisałem ‘19.5g’, ponieważ rozmiar mojej partycji to 20g. Następnie wykonaj poniższe polecenie, aby poznać nazwę dysku:

Następnie sformatuj dysk przy użyciu systemu plików ext4 za pomocą następującego polecenia:

Następnie utwórzmy miejsce do zamontowania dysku oraz folder, w którym będą przechowywane dane MongoDB.

Aby dodać wpis do fstab dotyczący nowego dysku, który ma zostać zamontowany, możesz bezpośrednio użyć poniższego polecenia:

W tym poleceniu, blkid zwraca identyfikator UUID – unikalny identyfikator uniwersalny (Universally Unique Identifier) każdego dysku. Tutaj wyodrębniam za pomocą grep ten dla dysku MongoDB i łączę ten UUID odpowiednio z lokalizacją folderu montowania, typem systemu plików i innymi opcjami dla dysku. Dodaję tę linię do /etc/fstab. Jeśli tego nie zrobisz, podczas montowania dysku wystąpi błąd. Wpis wygląda następująco:

UUID=”695a62e6-021d-4fc0-945c-cc51a92d86da” /mongodb ext4 auto,noexec,rw,sync,nouser 0 0

Teraz możesz zamontować dysk w lokalizacji /mongodb:

Instalacja MongoDB

Po przygotowaniu systemu przejdźmy do instalacji MongoDB. Chociaż Ubuntu oferuje wersję MongoDB we własnym repozytorium, zalecam korzystanie z oficjalnej wersji MongoDB. Powodem jest to, że repozytorium Ubuntu jest dość mocno opóźnione pod względem wydań, więc jeśli chcesz w pełni wykorzystać możliwości MongoDB, musisz sięgnąć po oficjalne wydania.

Ponieważ MongoDB oferuje własne repozytorium, możesz po prostu dodać je do swojego systemu, a następnie zainstalować MongoDB w normalny sposób. Oto kroki, które należy wykonać:

Najpierw zaimportuj klucz publiczny używany przez system zarządzania pakietami:

Następnie tworzę plik listy. Będzie on zawierał repozytorium, w którym znajduje się MongoDB, aby Twój system mógł go stamtąd pobrać:

Teraz aktualizuję lokalną bazę danych pakietów, aby uwzględnić zmiany.

Teraz mogę po prostu zainstalować pakiet za pomocą następującego polecenia:

Zainstalowałem MongoDB na każdej z maszyn.

Teraz MongoDB działa, a dane na utworzonym dysku są gotowe. Jeśli spodziewane jest duże obciążenie i/lub duża liczba połączeń, może być konieczne zwiększenie wartości ulimit.

Jeśli chcesz uzyskać lepszy wgląd w swoje dane, możesz również zarejestrować się w usłudze MongoDB MMS, która jest bezpłatną usługą monitorowania w chmurze dla MongoDB.

Tworzenie zestawu replik (Replica Set) dla chmury MongoDB

Teraz utwórzmy zestaw replik. Wcześniej musisz upewnić się, że każda z maszyn może komunikować się z pozostałymi. W tym celu dodaj te wpisy w /etc/hosts

W celu weryfikacji możesz spróbować spingować maszyny za pomocą nazwy hosta. Jeśli więc IP mojej maszyny 1 to IP-1, powiedzmy 213.189.123.12, to zamiast pisać

napiszę,

Jeśli aktywowałeś zaporę sieciową (co naprawdę powinieneś zrobić), upewnij się, że węzły mogą wysyłać i odbierać ruch TCP na portach 28017 i 27017 na interfejsie wewnętrznym.

Teraz na każdej z maszyn uruchom usługę mongod za pomocą następujących poleceń.

Na maszynie m1,

Następnie na maszynie m2,

Na maszynie m3,

Tutaj,

mongod to nazwa usługi

dbpath to lokalizacja katalogu naszej bazy danych

replSet to nazwa naszej grupy replikacji. Powinna być taka sama dla każdej z maszyn w tej samej grupie replikacji

bind_ip to nazwa hosta maszyny, na której go uruchamiasz.

Po uruchomieniu usługi mongod przejdź do serwera głównego (w moim przypadku wybrałem m1) i uruchom mongo.

Uruchomi to terminal MongoDB. W terminalu zainicjuj replicaSet za pomocą poniższego polecenia. Utworzy to replicaSet z domyślną konfiguracją:

Teraz dodajmy pozostałe dwie maszyny jako repliki za pomocą następujących poleceń:

Możesz monitorować status za pomocą polecenia:

To naprawdę wszystko. Twój klaster MongoDB powinien już działać w błyskawicznie szybkiej chmurze CloudSigma.

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev jest projektantem kreatywnym w CloudSigma, skupiającym się na spójnej tożsamości biznesowej przy wykorzystaniu tradycyjnych i innowacyjnych kanałów marketingowych. Biegle łączy wizję artystyczną ze strategicznym marketingiem, tworząc wywierające wpływ narracje marki.

Komentarze

Brak komentarzy. Bądź pierwszy.