MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak wdrożyć MongoDB w celu zapewnienia wysokiej dostępności

Wprowadzenie

MongoDB ma świetne wsparcie dla wysokiej dostępności dzięki zestawom ReplicaSets. Jednak wdrożenie zestawu ReplicaSet nie wystarczy dla systemu gotowego do produkcji. To ostatnie wymaga trochę planowania. Wdrożenie to tylko wstępny krok, następnie musimy uzbroić zespoły operacyjne w monitorowanie, ostrzeganie, bezpieczeństwo, wykrywanie anomalii lub awarii, automatyczne przywracanie/przełączanie awaryjne, zarządzanie kopiami zapasowymi i inne narzędzia, aby utrzymać środowisko w stanie nieprzerwanym.

Wymagania wstępne

Przed rozpoczęciem wdrażania MongoDB za pomocą ClusterControl wymagane są pewne przygotowania. Obsługiwane platformy to RedHat/CentOS 6.x/7.x, Ubuntu 12.04/14.04/16.04 LTS i Debian 7.x/8.x Minimalne wymagania dotyczące zasobów systemu operacyjnego to 2 GB pamięci RAM, 2 procesory i 20 GB miejsca na dysku działającym na x86 architektura. Sam ClusterControl może działać na zwykłych maszynach wirtualnych lub hostach typu barebone działających lokalnie, za zaporą sieciową lub na maszynach wirtualnych w chmurze.

Ponadto ClusterControl wymaga otwarcia/włączenia portów używanych przez następujące usługi:
ICMP (odpowiedź/żądanie echa)
SSH (domyślnie 22)
HTTP (domyślnie 80)
HTTPS (domyślnie 443)
MySQL (domyślnie 3306) (wewnętrzna baza danych)
CMON RPC (domyślnie 9500)
CMON RPC TLS (domyślnie 9501)
Zdarzenia CMON (domyślnie 9510)
CMON SSH (domyślnie 9511)
CMON Cloud (domyślnie 9518)

Port przesyłania strumieniowego do tworzenia kopii zapasowych przez netcat (domyślnie 9999)

Najłatwiejszym i najwygodniejszym sposobem instalacji ClusterControl jest użycie skryptu instalacyjnego dostarczonego przez Manynines. Po prostu pobierz skrypt i wykonaj jako użytkownik root lub użytkownik z uprawnieniami sudo root. Jeśli potrzebujesz bardziej ręcznego podejścia, na przykład jeśli twoje serwery są całkowicie bez dostępu do Internetu, możesz postępować zgodnie z instrukcjami zawartymi w dokumentacji ClusterControl.

$ wget http://www.severalnines.com/downloads/cmon/install-cc 
$ chmod +x install-cc
$ ./install-cc   # as root or sudo user

Postępuj zgodnie z instrukcjami kreatora instalacji, w którym zostaniesz poprowadzony przez konfigurację wewnętrznego serwera bazy danych ClusterControl i jego poświadczeń, hasła cmon do użycia ClusterControl i tak dalej. Po zakończeniu instalacji powinien pojawić się następujący wiersz:

Determining network interfaces. This may take a couple of minutes. Do NOT press any key.
Public/external IP => http://{public_IP}/clustercontrol
Installation successful. 

Następnym krokiem jest wygenerowanie klucza SSH, którego użyjemy później do skonfigurowania bezhasłowego SSH. Jeśli masz parę kluczy, której chcesz użyć, możesz pominąć tworzenie nowej.

Możesz użyć dowolnego użytkownika w systemie, ale musi on mieć możliwość wykonywania operacji superużytkownika (sudoer). W tym przykładzie wybraliśmy użytkownika root:

$ whoami
root
$ ssh-keygen -t rsa #generates ssh key

Skonfiguruj bezhasłowe SSH dla wszystkich węzłów, które chcesz monitorować/zarządzać za pomocą ClusterControl. W tym przypadku ustawimy to na wszystkich węzłach w stosie (w tym na samym węźle ClusterControl). W węźle ClusterControl uruchom następujące polecenia, aby skopiować klucze ssh i po wyświetleniu monitu określ hasło roota:

ssh-copy-id [email protected] # clustercontrol
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
...

Następnie możesz sprawdzić, czy działa, uruchamiając następujące polecenie w węźle ClusterControl:

$ ssh [email protected] "ls /root"

Upewnij się, że możesz zobaczyć wynik powyższego polecenia bez konieczności wprowadzania hasła.
Po zakończeniu instalacji powinieneś być w stanie zalogować się do interfejsu internetowego za pomocą

https://<your_vm_name>/clustercontrol/#

Po pierwszym zalogowaniu zobaczysz okno z opcjami rozpoczęcia pierwszego wdrożenia lub importu istniejącego klastra.

ClusterControl Wdróż i zaimportuj istniejący klaster

Konfiguruj repozytoria

Zanim zaczniemy wdrażanie, przyjrzyjmy się systemowi zarządzania pakietami. Proces wdrażania ClusterControl obsługuje cały proces instalacji klastra. Obejmuje to dostosowania systemu operacyjnego oraz pobieranie i instalację pakietu. Jeśli węzły Twojej bazy danych mają ograniczony dostęp do Internetu i nie możesz pobrać pakietów bezpośrednio z węzła, możesz utworzyć repozytorium pakietów bezpośrednio na hoście ClusterControl.

Repozytorium pakietów ClusterControl

Istnieją trzy sposoby zarządzania pakietami MongoDB w ClusterControl.

Użyj repozytoriów dostawców

Zainstaluj oprogramowanie, konfigurując i korzystając z ulubionego repozytorium oprogramowania dostawcy bazy danych. ClusterControl zainstaluje najnowszą wersję tego, co jest przechowywane w repozytorium MongoDB.

Nie konfiguruj repozytoriów dostawców

Zainstaluj oprogramowanie, korzystając z istniejącego repozytorium oprogramowania już skonfigurowanego w systemie operacyjnym. Użytkownik musi ręcznie skonfigurować repozytorium oprogramowania w każdym węźle bazy danych, a ClusterControl użyje tego repozytorium do wdrożenia pakietu. Jest to dobre, jeśli węzły bazy danych działają bez połączeń internetowych, a Twoja firma ma zewnętrzny system pakietów z pakietami MongoDB.

Użyj repozytoriów lustrzanych (utwórz nowe repozytorium)

Utwórz i zdubluj repozytorium obecnego dostawcy, a następnie wdróż przy użyciu lokalnego zdublowanego repozytorium. Pozwala także „zamrozić” najnowsze wersje pakietów oprogramowania używanych do udostępniania klastra bazy danych dla określonego dostawcy (tj. Używaj tylko pakietów Percona).

ClusterControl automatyzuje tworzenie wewnętrznego repozytorium pakietów

Wdróż zestaw replik

ClusterControl obsługuje MongoDB/Percona Server dla MongoDB 3.x ReplicaSet. Aby rozpocząć wdrażanie nowego klastra, przejdź do opcji wdrażania w prawym górnym rogu. Podczas instalowania węzłów bazy danych zawsze używaj czystych i minimalnych maszyn wirtualnych. W razie potrzeby istniejące zależności pakietów mogą zostać usunięte. Nowe pakiety zostaną zainstalowane, a istniejące pakiety można usunąć podczas udostępniania węzła w wymaganym oprogramowaniu.

Pierwszym krokiem procesu wdrażania jest dostarczenie poświadczeń ssh odpowiednich dla hostów, na których wdrażasz klaster. Ponieważ ClusterControl używa bezhasłowego ssh do łączenia się i konfigurowania hostów, wymagany jest klucz ssh.

Kreator wdrażania klastra MongoDB ClusterControl

Zaleca się używanie konta nieuprzywilejowanego użytkownika do logowania się do hostów, aby można było podać hasło sudo w celu ułatwienia zadań administracyjnych. Jeśli konto użytkownika nie wyświetla monitu o hasło sudo, nie jest to konieczne. Masz również możliwość wyłączenia iptables i AppArmor lub SELinux na hoście, aby uniknąć problemu z początkowym wdrożeniem.

Na następnym ekranie możesz wybrać instalację plików binarnych MongoDB z MongoDB Inc lub z Percony. Tutaj również musisz określić swoje konto użytkownika administracyjnego MongoDB i hasło, ponieważ wymagane są zabezpieczenia na poziomie użytkownika.

Kreator wdrażania ClusterControl MongoDB, zestaw replik

Na tym ekranie możesz również zobaczyć, który szablon konfiguracji jest używany. ClusterControl wykorzystuje szablony plików konfiguracyjnych, aby zapewnić powtarzalne wdrożenia. Szablony są przechowywane na hoście ClusterControl i można je edytować bezpośrednio za pomocą wiersza poleceń lub za pomocą interfejsu użytkownika ClusterControl. Możesz także skorzystać z repozytoriów dostawców, jeśli chcesz, lub wybrać własne repozytorium. Dodatkowo możesz automatycznie utworzyć nowe repozytorium na hoście ClusterControl. Pozwala to na zamrożenie wersji MongoDB, którą ClusterControl wdroży w bieżącej wersji. Po przeprowadzeniu odpowiedniej konfiguracji tutaj, kliknij Wdróż, aby kontynuować.

Wdróż sharding

ClusterControl może również wdrażać klastry podzielone na fragmenty. Obsługiwane są dwie metody realizacji tego zadania. Po pierwsze, możesz przekonwertować istniejący zestaw replik MongoDB w klaster dzielony, jak pokazano poniżej.

ClusterControl Wdróż fragmenty MongoDB

Po kliknięciu przycisku „Konwertuj na odłamek” pojawi się monit o dodanie co najmniej jednego serwera konfiguracyjnego (w środowiskach produkcyjnych należy dodać trzy) oraz routera, znanego również jako proces „mongos”. Ostatnim etapem jest wybranie szablonów konfiguracji MongoDB dla serwera konfiguracyjnego i routera, a także katalogu danych. Na koniec kliknij wdrażanie. Po zakończeniu pojawi się w widoku klastrów baz danych. Pokaże twoje zdrowie odłamków zamiast pojedynczych instancji. W razie potrzeby można również dodać dodatkowe odłamki.

Konwertuj na fragment

Jeśli napotkasz problemy ze skalowaniem, możesz skalować ten zestaw replik, dodając więcej elementów pomocniczych lub skalując w poziomie przez fragmentowanie. Istniejący zestaw ReplicaSet można przekonwertować na klaster podzielony na fragmenty, ale jest to długi proces, w którym można łatwo popełniać błędy. W ClusterControl zautomatyzowaliśmy ten proces, w którym automatycznie dodajemy serwery konfiguracyjne, routery shard i włączamy sharding.

Aby przekonwertować zestaw replik do klastra podzielonego na fragmenty, możesz go po prostu wyzwolić za pomocą listy rozwijanej akcji:

ClusterControl Konwertuj na fragment

Zaplanuj zasady tworzenia kopii zapasowych

Istotne jest, aby zachować kopię zapasową bazy danych oraz aby baza danych miała dobry i łatwy proces tworzenia kopii zapasowych. ClusterControl obsługuje w pełni spójne tworzenie kopii zapasowych i przywracanie zestawu replik MongoDB lub klastra podzielonego na fragmenty.

Kopie zapasowe można wykonywać ręcznie lub można je zaplanować. Obsługiwana jest centralizacja kopii zapasowych, przy czym kopie zapasowe są przechowywane w systemie plików kontrolera, w tym w katalogach zamontowanych w sieci, lub przesyłane do wstępnie skonfigurowanego dostawcy chmury — obecnie obsługiwanymi dostawcami są Google Cloud Platform, Amazon Web Services i Microsoft Azure. Pozwala to w pełni wykorzystać zaawansowane funkcje zarządzania cyklem życia dostarczane przez Amazon i Google, takie jak między innymi niestandardowe harmonogramy przechowywania, długoterminowa archiwizacja i szyfrowanie w spoczynku.

Przechowywanie kopii zapasowych jest konfigurowalne; możesz zachować kopię zapasową przez dowolny okres czasu lub nigdy nie usuwać kopii zapasowych. Szyfrowanie AES256 służy do zabezpieczenia kopii zapasowych przed nieuczciwymi elementami.

W celu szybkiego przywrócenia kopii zapasowych można przywrócić bezpośrednio do klastra kopii zapasowych - ClusterControl obsługuje pełny proces przywracania od uruchomienia do odzyskiwania klastra, usuwając z tego procesu podatne na błędy ręczne kroki.

Włącz raporty operacyjne

Dzięki ClusterControl możesz zaplanować raporty w różnych środowiskach, takie jak „Codzienny raport systemowy”, „Raport aktualizacji pakietu”, „Raport zmiany schematu”, a także „Kopie zapasowe” i „Dostępność”. Raporty te pomogą Ci zapewnić bezpieczeństwo i sprawność środowiska. Zobaczysz również zalecenia, jak naprawić luki. Raporty w formacie HTML można wysyłać pocztą elektroniczną do SysOps, DevOps, a nawet menedżerów, którzy chcieliby otrzymywać regularne aktualizacje statusu dotyczące stanu danego systemu.

Doradcy ds. wydajności

Doradcy udzielają konkretnych porad dotyczących rozwiązywania problemów w obszarach takich jak wydajność, bezpieczeństwo, zarządzanie logami, konfiguracja, przestrzeń dyskowa i inne. ClusterControl zawiera listę wstępnie zdefiniowanych doradców, których zadaniem jest śledzenie stanu różnych metryk i stanu baz danych. W razie potrzeby tworzony jest alert. Można je rozszerzyć za pomocą skryptów ręcznych. Aby uzyskać więcej informacji, zapoznaj się z naszym najnowszym blogiem „Jak zautomatyzować analizę obciążenia bazy danych za pomocą doradców wydajności ClusterControl”.

Wśród różnych doradców dotyczących wydajności systemu operacyjnego można znaleźć poniższe informacje dotyczące MongoDB.

MongoDB doradcy shardingu
używane połączenia
sprawdzanie replikacji
okno replikacji

Wdrażanie w chmurze

Począwszy od wersji 1.6, ClusterControl umożliwia tworzenie zestawów replik MongoDB 3.4 w chmurze. Obsługiwane platformy chmurowe to Amazon AWS, Google Cloud i Microsoft Azure.

Kreator przeprowadzi Cię przez proces tworzenia maszyny wirtualnej i ustawienia MongoDB w jednym miejscu.

ClusterControl wdraża zestaw MongoDB ReplicaSet w chmurze

Proces pozwala wybrać parametry systemu operacyjnego, w tym konfigurację sieci. Nie ma potrzeby kopiowania kluczy SSH, zostaną one dodane automatycznie. Po zakończeniu zadania zobaczysz swój klaster na głównym pulpicie nawigacyjnym. Od teraz możesz zarządzać swoim klastrem MongoDB jak każdym innym w ClusterControl.

ClusterControl wdraża MongoDb RelicaSet w chmurze, ustawienia sieci maszyny wirtualnej

Wskazówki dotyczące bezpieczeństwa

W tym momencie nowy klaster powinien już działać. Zanim zezwolisz użytkownikom i procesom aplikacji na dostęp do danych, musisz zdefiniować ustawienia zabezpieczeń klastra. W naszych poprzednich blogach zgłaszaliśmy obawy dotyczące domyślnej konfiguracji zabezpieczeń. Oto kilka głównych rzeczy, które należy wziąć pod uwagę przed przekazaniem nowego klastra innym zespołom.

Zmień porty domyślne - domyślnie MongoDB połączy się ze standardowymi portami:27017 dla MongoDB ReplicaSets lub Shard Routers, 27018 dla shardów i 27019 dla serwerów konfiguracyjnych. Używanie standardowych portów nie jest zalecane, ponieważ upraszcza to możliwość ataku hakerów.

Włącz uwierzytelnianie - bez uwierzytelnienia użytkownicy mogą logować się bez hasła. Włącz uwierzytelnianie we wszystkich swoich środowiskach (programowanie, certyfikacja i produkcja).

security:
    Authentication: on

Używaj silnych haseł - w razie potrzeby użyj generatora haseł, aby wygenerować złożone hasła.

Dodaj plik klucza replikacji - przy włączonym pliku klucza uwierzytelnianie strumienia replikacji będzie szyfrowane.

Zaszyfruj swoje kopie zapasowe - ClusterControl umożliwia szyfrowanie kopii zapasowych.

Aby dowiedzieć się więcej, mamy bloga na temat zabezpieczania MongoDB.

Włącz automatyczne przywracanie klastra

Ostatnią, ale nie mniej ważną funkcją do włączenia, byłoby automatyczne odzyskiwanie węzłów i klastrów.

ClusterControl może pracować dla Ciebie jako członek rozszerzonego zespołu DBA 24/7. Są tutaj dwie główne funkcje. Automatyczne odzyskiwanie węzłów i automatyczne odzyskiwanie klastrów.

Gdy włączone jest automatyczne odzyskiwanie węzłów, ClusterControl zareaguje na problemy z węzłami, aw przypadku awarii podejmie próbę odzyskania poszczególnych węzłów. Ma to na celu rozwiązanie problemów takich jak proces, który działa z pamięcią lub usługą, która wymaga uruchomienia po awarii zasilania, niezależnie od tego, co powoduje problem z wyłączeniem usługi.

Opcja odzyskiwania klastra jest jeszcze bardziej wyrafinowana. W razie potrzeby dokona przełączenia.

W takim przypadku wycofanie wszelkich zmian, które nie zostały zreplikowane do urządzeń podrzędnych, zostaną umieszczone w folderze „wycofania”, więc przywrócenie go należy do administratora.

Aby skonfigurować automatyczne odzyskiwanie węzła i klastra, wystarczy włączyć je w głównym panelu.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tworzenie, odczytywanie, aktualizowanie i usuwanie danych przy użyciu Node.js — Mongoose

  2. MongoDB — A co z wartością dziesiętną?

  3. Dlaczego kierunek indeksu ma znaczenie w MongoDB?

  4. Spring Data MongoDB:Projekcje i agregacje

  5. Mongodb - agregacja $push, jeśli warunkowa