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

Przewodnik po wdrożeniu i utrzymaniu MongoDB za pomocą Puppet:część 1

Klastrowanie baz danych często obejmuje konfigurowanie i utrzymywanie wielu serwerów i instancji, a wszystko to w wspólnym celu. Rozumiemy przez to, że możesz mieć różne serwery baz danych na różnych hostach, które obsługują te same dane.

Na przykład, powiedzmy, że masz serwery A, B, C i D, decydujesz się zainstalować MongoDB na każdym, ale później zdajesz sobie sprawę, że jest nowa wersja, której powinieneś użyć. Gdy masz dużą liczbę serwerów i musisz zaktualizować wersję MongoDB, ręczne ich konfigurowanie (jeden po drugim) ma wiele niedogodności. Te niepowodzenia mogą obejmować; ponowna konfiguracja trwa zbyt długo (stąd Twoja witryna będzie miała długi czas przestoju) lub sprawia, że ​​baza danych jest podatna na pewne błędy konfiguracji.

Poza tym zawsze są powtarzające się zadania, które chciałbyś, aby były wykonywane automatycznie, zamiast przechodzić te same kroki w kółko, za każdym razem, gdy chcesz dokonać podobnych zmian. W pewnym momencie musimy również nauczyć się nowych modułów w zakresie postępu technologicznego, które mogą pomóc nam zwiększyć wydajność klastra

W uproszczeniu potrzebujemy systemów automatyki, które ułatwią wszystkie wymienione przedsięwzięcia. Puppet jest jednym z najbardziej preferowanych systemów oprogramowania do osiągnięcia tego celu, ponieważ:

  • Skonfigurowanie i wdrożenie klastra MongoDB jest łatwe i szybsze.
  • Powtarzające się zadania można łatwo zautomatyzować, tak aby były wykonywane automatycznie później.
  • Cała infrastruktura klastra może być wspólnie zarządzana z jednej platformy.
  • Łatwe udostępnianie nowych węzłów w chmurze, środowisku hybrydowym lub fizycznym.
  • Organizuj zmiany i zdarzenia w klastrze węzłów.
  • Odkryj zasoby w ciągu kilku minut, które mogą pomóc w łatwym wykonywaniu różnych zadań.
  • Dobrze skaluje się od 1 do 200 tys. węzłów.
  • Obsługiwane przez wiele platform

Co to jest Marionetka?

Puppet to język używany do doprowadzenia maszyny do pożądanego stanu, a raczej silnik używany do interpretacji i zastosowania pewnych zdefiniowanych instrukcji do systemu obsługującego. Podobnie jak Ansible, Puppet jest również narzędziem do zarządzania konfiguracją, używanym do automatyzacji i wykonywania zadań klastra bazy danych. Jest jednak bardziej zaawansowany i dobrze ugruntowany, biorąc pod uwagę, że jest najstarszy, a więc wiele nowych zintegrowanych funkcji, które uczyniłyby go bardziej wyrafinowanym niż inne. Jednym z głównych powodów, dla których osobiście wolę Puppet, jest możliwość konfiguracji dużej liczby węzłów połączonych za pomocą systemów równoważenia obciążenia, urządzeń sieciowych lub zapór ogniowych. Puppet jest często używany w dużych przedsiębiorstwach o złożonych środowiskach.

Jak działa Marionetka

Puppet wykorzystuje technikę idempotentności, która pomaga zarządzać określoną maszyną od momentu jej utworzenia i przez cały cykl życia, nawet przy zmianach konfiguracji. Główną zaletą jest to, że maszyna jest aktualizowana przez wiele lat, a nie jest budowana wielokrotnie od zera. W przypadku aktualizacji Puppet sprawdza aktualny stan maszyny docelowej, a zmiany zostaną zastosowane tylko wtedy, gdy nastąpi konkretna zmiana w konfiguracji.

Idempotencja

Przepływ pracy idempotentności pokazano poniżej:

Master Puppet zbiera szczegóły dotyczące bieżącego stanu maszyny docelowej i porównuje je ze szczegółami konfiguracji na poziomie maszyny, a następnie zwraca szczegóły, które są wysyłane do warstwy konwersji.

Warstwa konwersji porównuje pobraną konfigurację z nowo zdefiniowanymi szczegółami konfiguracji, a następnie tworzy katalog, który jest wysyłany do docelowych agentów Puppet, w tym przypadku węzłów docelowych, dla których mają zostać zastosowane zmiany.

Zmiany konfiguracji są następnie stosowane do systemu w celu przekształcenia go do pożądanego stanu. Po wprowadzeniu zmian agent Puppet wysyła raport z powrotem do głównego narzędzia Puppet, który jest udokumentowany w celu zdefiniowania nowego stanu systemu jako dostarczonego katalogu.

Podstawowe komponenty lalek

  1. Zasoby marionetek

    Są to kluczowe elementy modelowania konkretnej maszyny, których opisy doprowadzą maszynę do pożądanego stanu.

  2. Dostawcy

    Dostawcami są określone zasoby służące do dodawania pakietów do systemu, m.in. mniam i apt-get. Istnieją domyślni dostawcy, ale w razie potrzeby można dodać więcej.

  3. Manifest

    Jest to zbiór zasobów, które są zdefiniowane w funkcji lub klasie połączone razem w celu skonfigurowania systemu docelowego.

    Struktura powinna być

    resource:{‘module’:
    	attribute => value
    }

    Na przykład instalując mongodb możemy mieć plik manifestu o nazwie Mongodb.pp o następującej zawartości:

    package {‘mongodb’:
    		ensure => installed
         }
  4. Moduły

    Jest to kluczowy element konstrukcyjny Puppet, który jest zasadniczo zbiorem zasobów, szablonów i plików. Mogą być dystrybuowane w dowolnym systemie operacyjnym, dzięki czemu mogą być używane wielokrotnie w tej samej konfiguracji.

  5. Szablony

    Szablony służą do definiowania niestandardowych treści i zmiennych danych wejściowych. Używają składni Ruby, tj. jeśli chcesz zdefiniować port do nasłuchiwania:

    Listen <% [email protected]_number %>

    W tym przypadku zmienna numer_portu jest zdefiniowana w manifeście, który odwołuje się do tego szablonu.

  6. Pliki statyczne

    Są to ogólne pliki, które mogą być wymagane do wykonania określonych zadań. Znajdują się one w katalogu plików dowolnego modułu.

Instalacja marionetek

Na potrzeby nauki zainstalujemy i skonfigurujemy marionetkę na maszynie wirtualnej, którą stworzymy na naszej lokalnej maszynie. Przede wszystkim będziesz musiał zainstalować wirtualną skrzynkę i włóczęgę. Po zainstalowaniu otwórz nowy terminal i utwórz katalog Puppet prawdopodobnie na swoim pulpicie i uruchom polecenie $ vagrant init. Spowoduje to utworzenie maszyny wirtualnej i oznaczenie jej jako włóczęga. Następnie możemy zalogować się do tej maszyny za pomocą polecenia $ vagrant ssh.

Jeśli pojawi się ekran podobny do poniższego, oznacza to, że Twój komputer jest gotowy do pracy.

W przeciwnym razie, jeśli jesteś na serwerze, możesz zignorować ten krok i przejść od dodawania pakietu marionetek, jak poniżej.

Dodaj pakiet marionetek za pomocą polecenia

$ wget https://apt.puppetlabs.com/puppet5-release-xenial.deb

A następnie rozpakuj pakiet i zainstaluj za pomocą

$ sudo dpkg -i puppet5-release-xenial.deb

Musimy zaktualizować nasze repozytoria, więc uruchamiamy

$ sudo apt-get update

Zainstaluj agenta marionetek, uruchamiając

$ sudo apt-get install puppet-agent

Po zakończeniu instalacji możemy potwierdzić, sprawdzając wersję. Może być konieczne wylogowanie się z maszyny wirtualnej, aby dodać ścieżkę Puppet do środowiska, a następnie uruchom $ puppet --version lub, jeśli się nie wylogowałeś, uruchom $ /opt/puppetlabs/bin/puppet --version. Jeśli otrzymasz numer wersji, taki jak 5.5.14, instalacja się powiodła.

Po zainstalowaniu MongoDB za pomocą Mongodb.pp, które stworzyliśmy powyżej, możemy po prostu napisać zadanie konfiguracji produktów bazodanowych, a także dodać użytkownika do tej bazy danych.

„Mongodb_database” służy do tworzenia i zarządzania bazami danych w MongoDB

mongodb_database{‘products’:
	ensure => present,
            tries => 10
}

„Mongodb_user może być używany do tworzenia i zarządzania użytkownikami w bazie danych MongoDB”.

Aby dodać użytkownika do bazy danych „produktów”

mongodb_user {userprod:
  username => ‘prodUser’,
  ensure => present,
  password_hash => mongodb_password(‘prodUser’, ‘passProdser’),
  database => prodUser,
  roles => [‘readWrite’, ‘dbAdmin’],
  tries  => 10
}

Wniosek

Na tym blogu dowiedzieliśmy się, czym jest Puppet, jakie są zalety z nim związane oraz jak działa architektura. Puppet jest nieco bardziej złożony niż inne narzędzia do zarządzania (takie jak Chef i Ansible), ale zawiera wiele modułów, które można wykorzystać do rozwiązywania problemów związanych z zarządzaniem bazami danych. W następnej części omówimy, jak podłączyć zdalne maszyny, aby można je było ponownie skonfigurować przy użyciu zdefiniowanych plików manifestu.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Dlaczego nie zaleca się używania funkcji przechowywanych po stronie serwera w MongoDB?

  2. Jak zatrzymać niekontrolowaną kompilację indeksu w MongoDB?

  3. usuń _id z wyniku mongo

  4. Wykorzystanie buforowanych danych podczas sortowania przepełnienia przekracza wewnętrzny limit

  5. Jak zainicjować bazę danych mongo za pomocą docker-compose?