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

Automatyzacja MongoDB za pomocą SaltStack

Wdrażanie bazy danych dla wielu serwerów staje się bardziej złożone i czasochłonne wraz z dodawaniem nowych zasobów lub wprowadzaniem zmian. Ponadto istnieje prawdopodobieństwo wystąpienia błędów ludzkich, które mogą prowadzić do katastrofalnych skutków za każdym razem, gdy system jest konfigurowany ręcznie.

Narzędzie do automatyzacji wdrażania bazy danych umożliwi nam wdrożenie bazy danych na wielu serwerach, od środowisk programistycznych po produkcyjne. Wyniki zautomatyzowanego wdrożenia są niezawodne, wydajniejsze i przewidywalne, poza dostarczaniem informacji o bieżącym stanie węzłów, które można dalej wykorzystać do planowania zasobów, które będziesz musiał dodać do swoich serwerów. Dzięki dobrze zarządzanemu wdrożeniu poprawia się produktywność zarówno zespołów programistycznych, jak i operacyjnych, co pozwala firmie rozwijać się szybciej, osiągać więcej, a dzięki łatwemu częstemu wdrażaniu ogólna konfiguracja oprogramowania będzie ostatecznie lepsza i będzie działać niezawodnie dla użytkowników końcowych.

MongoDB można wdrożyć ręcznie, ale zadanie to staje się coraz bardziej kłopotliwe, gdy trzeba skonfigurować klaster złożony z wielu elementów hostowanych na różnych serwerach. Dlatego musimy zdecydować się na użycie narzędzia motoryzacyjnego, które może nam oszczędzić stresu. Niektóre z dostępnych narzędzi, których można użyć, to Puppet, Chef, Ansible i SaltStack.

Główne korzyści z wdrożenia MongoDB za pomocą dowolnego z tych narzędzi to:

  1. Oszczędność czasu. Wyobraź sobie, że masz 50 węzłów dla swojej bazy danych i musisz zaktualizować wersję MongoDB dla każdego. To zajmie ci wieki przechodząc przez ten proces. Jednak za pomocą automatycznego narzędzia wystarczy napisać kilka instrukcji i wydać polecenie, aby wykonać resztę aktualizacji za Ciebie. Deweloperzy będą wtedy mieli czas na pracę nad nowymi funkcjami, zamiast naprawiania ręcznych wdrożeń.
  2. Mniejsza liczba błędów, a co za tym idzie satysfakcja klienta. Dokonywanie nowych aktualizacji może powodować błędy w systemie bazy danych, zwłaszcza jeśli konfiguracja musi być wykonana ręcznie. Dzięki narzędziu takiemu jak SaltStack usunięcie ręcznych kroków zmniejsza liczbę błędów ludzkich, a częste aktualizacje o nowe funkcje zaspokoją potrzeby klientów, dzięki czemu organizacja będzie konkurencyjna.
  3. Niższy koszt konfiguracji. Dzięki narzędziu do wdrażania każdy może wdrożyć, nawet sam, ponieważ sam proces będzie znacznie łatwiejszy. Wyeliminuje to potrzebę wykonywania pracy przez ekspertów i zmniejszy liczbę błędów

Co to jest SaltStack

SaltStack to narzędzie do zdalnego wykonywania o otwartym kodzie źródłowym i system zarządzania konfiguracją opracowany w języku Python.

Funkcje zdalnego wykonywania są używane do uruchamiania poleceń na różnych komputerach równolegle z elastycznym systemem kierowania. Jeśli na przykład masz 3 serwery i chcesz zainstalować MongoDB na każdym, możesz uruchomić polecenia instalacji na tych komputerach jednocześnie z węzła głównego.

Jeśli chodzi o zarządzanie konfiguracją, interfejs klient-serwer jest ustanowiony w celu ułatwienia i bezpiecznego przekształcenia elementów infrastruktury w pożądany stan.

Architektura SaltStack

Podstawowym modelem konfiguracji SaltStack jest klient-serwer, w którym serwer może być określany jako nadrzędny, a klienci jako podrzędni. Master wydaje polecenia, a raczej instrukcje jako system kontrolny, które muszą być wykonane przez klientów/sługusów będących kontrolowanymi systemami.

Komponenty worka na sól

Z czego wykonany jest SaltStack

  1. Mistrz :Odpowiedzialny za wydawanie instrukcji niewolnikom i zmianę ich do pożądanego stanu po wykonaniu.
  2. Sługa :Jest to kontrolowany system, który musi zostać przekształcony w jakiś pożądany stan.
  3. Ziarna soli :  są to statyczne dane lub metadane dotyczące stwora i zawierają informacje, takie jak model, numer seryjny, pojemność pamięci i system operacyjny. Są one zbierane, gdy minion po raz pierwszy łączy się z serwerem. Mogą być używane do celowania w określoną grupę sługusów w związku z pewnym aspektem. Na przykład możesz uruchomić polecenie stwierdzające, zainstaluj MongoDB na wszystkich komputerach z systemem operacyjnym Windows.
  4. EModuły/instrukcje wykonania :Są to polecenia ad hoc wydawane jednemu lub większej liczbie docelowych minionów i wykonywane z wiersza poleceń.
  5. Filary :są zmiennymi zdefiniowanymi przez użytkownika, które są rozprowadzane wśród minionów. Służą do:konfiguracji minionów, bardzo wrażliwych danych, dowolnych danych i zmiennych. Nie wszystkie sługusy są dostępne dla wszystkich filarów, można ograniczyć, które filary są dla określonej grupy sługusów.
  6. Pliki stanu . Jest to rdzeń systemu stanu soli (SLS) i reprezentuje stan, w jakim system powinien się znajdować. Jest to odpowiednik poradnika w przypadku Ansible, biorąc pod uwagę, że są one również w formacie YAML, tj.
#/srv/salt/mongodbInstall.sls (file root)

install_mongodb: (task id)

pkg.installed: (state declaration)

-name:mongodb  (name of package to install)
  1. Główny plik :Służy do mapowania grupy komputerów i określania, które pliki stanu mają zostać zastosowane. tj.

#/srv/salt/top.sls

  base:

   ‘minion1’:

     -mongodb
  1. Salt Proxy :  Jest to funkcja umożliwiająca kontrolowanie urządzeń, na których nie można uruchomić standardowego stworka solnego. Obejmują one sprzęt sieciowy z interfejsem API działającym na zastrzeżonym systemie operacyjnym, urządzenia z ograniczeniami procesora i pamięci lub takie, które nie mogą uruchamiać minionów ze względów bezpieczeństwa. Serwer proxy Junos musi być używany do wykrywania, kontroli, zdalnego wykonywania i zarządzania stanem tych urządzeń.

Instalacja SaltStack

Możemy użyć polecenia pip, aby zainstalować SaltStack jako 

$ pip install salt

Aby potwierdzić instalację, uruchom polecenie $ salt --version i powinieneś otrzymać coś takiego jak salt 2019.2.2 (Fluor)

Przed połączeniem się z masterem minion będzie wymagał minimalnej konfiguracji adresu IP mastera i identyfikatora miniona, które będą używane przez mastera do odniesienia. Te konfiguracje można wykonać w plikach /etc/salt/minion.

Możemy wtedy uruchomić master w różnych trybach, czyli w trybie demona lub debugowania. W przypadku demona będziesz mieć $salt-master -d, a dla trybu debugowania $salt-master -l debug. Będziesz musiał zaakceptować klucz stwora przed jego uruchomieniem, uruchamiając $ salt-key -a nameOfMinion. Aby wyświetlić listę dostępnych kluczy, uruchom $ salt-key -l

W przypadku stwora możemy uruchomić go za pomocą $salt-minion -l debug.

Na przykład, jeśli chcemy utworzyć plik we wszystkich stworach z mastera, możemy uruchomić polecenie 

$ salt ‘’*” file.touch ‘/tmp/salt_files/sample.text

Wszystkie węzły będą miały nowy plik sample.text w folderze salt_files. Opcja * jest używana w odniesieniu do wszystkich minionów. Aby określić na przykład wszystkie stwory o identyfikatorze zawierającym sługę ciągu, użyjemy wyrażenia regularnego, jak poniżej 

$ salt “minion*” file.touch ‘/tmp/salt_files/sample.text

Aby zobaczyć metadane zebrane dla danego stwora, uruchom:

$salt ‘minion1’ grains.items.

Konfigurowanie MongoDB z SaltStack

Możemy stworzyć bazę danych o nazwie myAppdata z setDatabase.sls z zawartością poniżej

classes:

- service.mongodb.server.cluster

parameters:

   _param:

     mongodb_server_replica_set: myAppdata

     mongodb_myAppdata_password: myAppdataPasword

     mongodb_admin_password: cloudlab

     mongodb_shared_key: xxx

   mongodb:

     server:

       database:

         myAppdata:

           enabled: true

           password: ${_param:mongodb_myAppdata_password}

           users:

           -  name: myAppdata

              password: ${_param:mongodb_myAppdata_password}

Uruchamianie pojedynczego serwera MongoDB 

mongodb:

  server:

    enabled: true

    bind:

      address: 0.0.0.0

      port: 27017

    admin:

      username: admin

      password: myAppdataPasword

    database:

      myAppdata:

        enabled: true

        encoding: 'utf8'

        users:

        - name: 'username'

          password: 'password'

Konfigurowanie klastra MongoDB z SaltStack

mongodb:

  server:

    enabled: true

    logging:

      verbose: false

      logLevel: 1

      oplogLevel: 0

    admin:

      user: admin

      password: myAppdataPasword

    master: mongo01

    members:

      - host: 192.168.100.11

        priority: 2

      - host: 192.168.101.12

      - host: 192.168.48.13

    replica_set: default

    shared_key: myAppdataPasword

Wnioski

Podobnie jak ClusterControl, SaltStack jest narzędziem do automatyzacji, którego można używać w celu ułatwienia wdrażania i zadań operacyjnych. Dzięki narzędziu automatyzacji zmniejsza się liczba błędów, skrócony czas konfiguracji i bardziej wiarygodne wyniki.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB nie uruchamia się po awarii serwera

  2. MongoDB sortuje dokumenty według elementów tablicy

  3. Mongoose:CastError:Cast to ObjectId nie powiodło się dla wartości [object Object] w ścieżce _id

  4. Lista operatorów daty, metod i zmiennych MongoDB

  5. Kiedy używać GridFS w MongoDB?