Klastrování databází často zahrnuje konfiguraci a údržbu řady serverů a instancí, to vše se společným účelem. Tím myslíme, že můžete mít různé databázové servery na různých hostitelích, které obsluhují stejná data.
Řekněme například, že máte servery A, B, C a D, rozhodnete se nainstalovat MongoDB na každý, ale později si uvědomíte, že existuje nová verze, kterou byste měli použít. Když máte velký počet serverů a potřebujete aktualizovat verzi MongoDB, jejich ruční konfigurace (jeden po druhém) má spoustu neúspěchů. Tyto překážky mohou zahrnovat; překonfigurování trvá příliš dlouho (proto bude mít váš web dlouhé výpadky) nebo je vaše DB náchylná k některým chybám konfigurace.
Kromě toho vždy existují opakující se úkoly, které byste rádi provedli automaticky, místo abyste podstupovali stále stejné kroky, pokaždé, když chcete provést podobné změny. V určitém okamžiku se také musíme naučit nové moduly, pokud jde o technologický pokrok, které nám mohou pomoci zvýšit výkon clusteru
Zjednodušeně řečeno, potřebujeme automatizační systémy, které dokážou usnadnit všechny zmíněné podniky. Puppet je jedním z nejpreferovanějších softwarových systémů pro dosažení tohoto cíle od té doby:
- Konfigurace a nasazení clusteru MongoDB je snadné a rychlejší.
- Opakující se úkoly lze snadno automatizovat tak, že se automaticky provádějí později.
- Celou infrastrukturu clusteru lze společně spravovat z jediné platformy.
- Snadné zřizování pro nové uzly v cloudovém, hybridním nebo fyzickém prostředí.
- Říďte změny a události napříč shlukem uzlů.
- Během několika minut objevte zdroje, které vám pomohou snadno provádět různé úkoly.
- Dobře se škáluje od 1 do 200 000 uzlů.
- Podporováno řadou platforem
Co je Puppet?
Puppet je jazyk, který se používá k uvedení stroje do požadovaného stavu, nebo spíše je to motor, který se používá k interpretaci a aplikaci některých definovaných instrukcí na obsluhující systém. Stejně jako Ansible je i Puppet nástroj pro správu konfigurace používaný k automatizaci a provádění úloh databázového clusteru. Je však pokročilejší a dobře zavedený vzhledem k tomu, že je nejstarší, a proto má mnoho nově integrovaných funkcí, díky kterým by byl sofistikovanější než ostatní. Jedním z hlavních důvodů, proč osobně preferuji Puppet, je možnost, kterou mi dává konfigurovat velké množství uzlů propojených společně s vyrovnávači zátěže, síťovými zařízeními nebo firewally. Puppet se často používá ve velkých podnicích se složitým prostředím.
Jak loutka funguje
Puppet využívá techniku idempotence, která mu pomáhá řídit určitý stroj od okamžiku jeho vytvoření a po celou dobu jeho životního cyklu i při změnách konfigurace. Hlavní výhodou tohoto je, že stroj je aktualizován v průběhu několika let, spíše než aby byl stavěn několikrát od nuly. V případě aktualizace Puppet zkontroluje aktuální stav cílového stroje a změny se projeví pouze v případě, že dojde ke konkrétní změně v konfiguraci.
Idempotence
Pracovní postup idempotence je uveden níže:
Mistr loutek shromažďuje podrobnosti týkající se aktuálního stavu cílového počítače a porovnává je s podrobnostmi konfigurace na úrovni stroje a poté vrací podrobnosti, které jsou odeslány do konverzní vrstvy.
Konverzní vrstva porovná načtenou konfiguraci s nově definovanými podrobnostmi konfigurace a poté vytvoří katalog, který se odešle cílovým agentům Puppet, v tomto případě cílovým uzlům, pro které mají být změny aplikovány.
Změny konfigurace se poté aplikují na systém, aby jej převedly do požadovaného stavu. Poté, co byly změny implementovány, Puppet agent odešle zprávu zpět do Puppet master, která je zdokumentována pro definování nového stavu systému jako dodaného katalogu.
Základní součásti loutky
-
Zdroje pro loutku
Toto jsou klíčové modelovací komponenty konkrétního stroje, jejichž popisy uvedou stroj do požadovaného stavu.
-
Poskytovatelé
Poskytovatelé jsou konkrétní zdroje používané k přidávání balíčků do systému, např. mňam a apt-get. Existují výchozí poskytovatelé, ale když potřebujete nějaké balíčky, můžete přidat další.
-
Manifest
Jedná se o kolekci zdrojů, které jsou definovány buď ve funkci nebo ve třídě spojené dohromady za účelem konfigurace cílového systému.
Struktura by měla být
resource:{‘module’: attribute => value }
Například při instalaci mongodb můžeme mít soubor manifestu nazvaný Mongodb.pp s následujícím obsahem:
package {‘mongodb’: ensure => installed }
-
Moduly
Toto je klíčový stavební blok Puppet, který je v podstatě sbírkou zdrojů, šablon a souborů. Mohou být distribuovány v jakémkoli operačním systému, a proto mohou být použity vícekrát se stejnou konfigurací.
-
Šablony
Šablony se používají k definování přizpůsobeného obsahu a variabilního vstupu. Používají syntaxi Ruby, tedy pokud chcete definovat port, který chcete poslouchat:
Listen <% [email protected]_number %>
Proměnná číslo_portu je v tomto případě definována v manifestu, který odkazuje na tuto šablonu.
-
Statické soubory
Toto jsou obecné soubory, které mohou být vyžadovány k provádění konkrétních úkolů. Jsou umístěny v adresáři souborů libovolného modulu.
Instalace loutky
Pro účely učení si nainstalujeme a nakonfigurujeme loutku do virtuálního stroje, který si vytvoříme na našem lokálním stroji. Nejprve si budete muset nainstalovat virtualbox a vagrant. Po instalaci otevřete nový terminál a vytvořte adresář Puppet pravděpodobně na ploše a spusťte příkaz $ vagrant init. Tím vytvoříte virtuální stroj a označíte jej za tulák. Poté se můžeme přihlásit do tohoto stroje příkazem $ vagrant ssh.
Pokud se zobrazí obrazovka podobná té níže, váš počítač je v provozu.
V opačném případě, pokud jste na serveru, můžete tento krok ignorovat a pokračovat přidáním loutkového balíčku jako níže.
Přidejte balíček loutky pomocí příkazu
$ wget https://apt.puppetlabs.com/puppet5-release-xenial.deb
A pak balíček rozbalte a nainstalujte pomocí
$ sudo dpkg -i puppet5-release-xenial.deb
Potřebujeme aktualizovat naše repozitáře, abychom spustili
$ sudo apt-get update
Nainstalujte loutkového agenta spuštěním
$ sudo apt-get install puppet-agent
Po dokončení instalace můžeme potvrdit kontrolou verze. Možná se budete muset odhlásit ze svého virtuálního počítače, aby byla cesta Puppet přidána do prostředí, pak spusťte $ puppet --version, nebo pokud jste se neodhlásili, spusťte $ /opt/puppetlabs/bin/puppet --version. Pokud získáte číslo verze jako 5.5.14, instalace byla úspěšná.
Po instalaci MongoDB pomocí Mongodb.pp, který jsme vytvořili výše, můžeme jednoduše napsat nějakou úlohu pro nastavení databázových produktů a také přidat uživatele do této databáze.
‘Mongodb_database’ se používá k vytváření a správě databází v rámci MongoDB
mongodb_database{‘products’:
ensure => present,
tries => 10
}
‘Mongodb_user lze použít k vytváření a správě uživatelů v databázi MongoDB.‘
Chcete-li přidat uživatele do databáze ‚produktů‘
mongodb_user {userprod:
username => ‘prodUser’,
ensure => present,
password_hash => mongodb_password(‘prodUser’, ‘passProdser’),
database => prodUser,
roles => [‘readWrite’, ‘dbAdmin’],
tries => 10
}
Závěr
V tomto blogu jsme se dozvěděli, co je Puppet, výhody s ním spojené a jeho pracovní architekturu. Puppet je o něco složitější než ostatní nástroje pro správu (jako je Chef a Ansible), ale má spoustu modulů, které lze použít k řešení problémů se správou databází. V další části probereme, jak připojit vzdálené stroje, aby je bylo možné překonfigurovat pomocí definovaných souborů manifestu.