Nasazení databáze pro větší počet serverů se při přidávání nových zdrojů nebo provádění změn stává složitější a časově náročnější. Kromě toho existuje pravděpodobnost lidských chyb, které mohou vést ke katastrofickým následkům, kdykoli je systém konfigurován ručně.
Nástroj pro automatizaci nasazení databáze nám umožní nasadit databázi na více serverech, od vývojových až po produkční prostředí. Výsledky z automatizovaného nasazení jsou spolehlivé, efektivnější a předvídatelnější, kromě toho, že poskytují informace o aktuálním stavu vašich uzlů, které lze dále použít k plánování zdrojů, které budete muset přidat na své servery. Díky dobře řízenému nasazení se zvyšuje produktivita vývojových i provozních týmů, což umožňuje podniku rychleji se vyvíjet, dosahovat více a díky snadnému častému nasazování bude celkové nastavení softwaru nakonec lepší a spolehlivě fungovat pro koncové uživatele.
MongoDB lze nasadit ručně, ale úkol se stává stále obtížnějším, když musíte nakonfigurovat cluster mnoha členů hostovaných na různých serverech. Musíme se proto rozhodnout použít automobilový nástroj, který nám ušetří stres. Některé z dostupných nástrojů, které lze použít, zahrnují Puppet, Chef, Ansible a SaltStack.
Hlavní výhody nasazení MongoDB pomocí kteréhokoli z těchto nástrojů jsou:
- Úspora času. Představte si, že máte 50 uzlů pro vaši databázi a pro každý potřebujete aktualizovat verzi MongoDB. Tímto procesem budete muset projít celé věky. S automatickým nástrojem však budete muset napsat několik pokynů a vydat příkaz, který provede zbytek aktualizace za vás. Vývojáři pak budou mít čas pracovat na nových funkcích, místo aby opravovali ruční nasazení.
- Snížené množství chyb a tím spokojenost zákazníků. Provádění nových aktualizací může způsobit chyby v databázovém systému, zejména pokud je třeba konfiguraci provést ručně. S nástrojem, jako je SaltStack, odstranění ručních kroků omezuje lidské chyby a časté aktualizace s novými funkcemi vyřeší potřeby zákazníků, čímž udrží organizaci konkurenceschopnou.
- Nižší náklady na konfiguraci. S nástrojem pro nasazení může kdokoli nasadit i vy, protože samotný proces bude mnohem jednodušší. Tím se odstraní potřeba práce odborníků a sníží se chybovost
Co je SaltStack
SaltStack je open-source nástroj pro vzdálené spouštění a systém správy konfigurace vyvinutý v Pythonu.
Funkce vzdáleného provádění se používají ke spouštění příkazů na různých počítačích paralelně s flexibilním systémem zaměřování. Pokud máte například 3 serverové stroje a chtěli byste nainstalovat MongoDB pro každý, můžete na těchto strojích spustit instalační příkazy současně z hlavního uzlu.
Pokud jde o správu konfigurace, je vytvořeno rozhraní klient-server, které usnadňuje a bezpečně převádí komponenty infrastruktury do požadovaného stavu.
Architektura SaltStack
Základním modelem nastavení pro SaltStack je klient-server, kde server může být označován jako hlavní a klienti jako podřízené. Master vydává příkazy nebo spíše instrukce jako řídicí systém, který je třeba provést klienty/přisluhovači, což jsou řízené systémy.
Součásti SaltSack
Z čeho je SaltStack vyroben
- Mistr :Zodpovídá za vydávání pokynů otrokům a jejich změnu do požadovaného stavu po provedení.
- Minion :Je to řízený systém, který je třeba převést do nějakého požadovaného stavu.
- Zrnka soli : toto jsou statická data nebo metadata týkající se miniona a představují informace, jako je model, sériové číslo, kapacita paměti a operační systém. Jsou shromažďovány, když se minion poprvé připojí k serveru. Mohou být použity pro cílení na určitou skupinu minionů ve vztahu k nějakému aspektu. Můžete například spustit příkaz s uvedením instalace MongoDB pro všechny počítače s operačním systémem Windows.
- Eprovádění modulů/pokynů :Jedná se o ad hoc příkazy vydávané jednomu nebo více cílovým minionům a jsou prováděny z příkazového řádku.
- pilíře :jsou uživatelem definované proměnné distribuované mezi miniony. Používají se pro:konfiguraci minionů, vysoce citlivá data, libovolná data a proměnné. Ne všichni minioni jsou přístupní všem pilířům, je možné omezit, které pilíře jsou pro určitou skupinu minionů.
- Stavové soubory . Toto je jádro systému Salt state System (SLS) a představuje stav, ve kterém by se systém měl nacházet. V případě Ansible je to ekvivalent k playbooku vzhledem k tomu, že jsou také ve formátu YAML, tj.
#/srv/salt/mongodbInstall.sls (file root)
install_mongodb: (task id)
pkg.installed: (state declaration)
-name:mongodb (name of package to install)
-
Nejlepší soubor :Používá se k mapování skupiny počítačů a definování, které stavové soubory mají být použity. tj.
#/srv/salt/top.sls
base:
‘minion1’:
-mongodb
-
Salt Proxy : Toto je funkce, která umožňuje ovládat zařízení, která nemohou spustit standardní salt-minion. Patří mezi ně síťová zařízení s API běžícím na proprietárním OS, zařízení s omezením CPU a paměti nebo zařízení, na kterých nelze spustit přisluhovače z bezpečnostních důvodů. Pro zjišťování, ovládání, vzdálené spouštění a správu stavu těchto zařízení musí být použit proxy server Junos.
Instalace SaltStack
Můžeme použít příkaz pip k instalaci SaltStack jako
$ pip install salt
Pro potvrzení instalace spusťte příkaz $ salt --version a měli byste získat něco jako sůl 2019.2.2 (Fluor)
Před připojením k masteru bude minion vyžadovat minimální konfiguraci master IP adresy a minion id, které bude master používat jako referenci. Tyto konfigurace lze provést v souborech /etc/salt/minion.
Potom můžeme spouštět master v různých režimech, které jsou démony nebo v režimu ladění. V případě démona budete mít $salt-master -d a pro režim ladění $salt-master -l debug. Před spuštěním budete muset přijmout klíč miniona spuštěním $ salt-key -a nameOfMinion. Chcete-li zobrazit seznam dostupných klíčů, spusťte $ salt-key -l
V případě miniona jej můžeme spustit pomocí $salt-minion -l debug.
Chceme-li například vytvořit soubor ve všech minionech z mastera, můžeme spustit příkaz
$ salt ‘’*” file.touch ‘/tmp/salt_files/sample.text
Všechny uzly budou mít ve složce salt_files nový soubor sample.text. Možnost * se používá k označení všech minionů. Abychom například uvedli všechny přisluhovače s id jménem s řetězcem minion, použijeme výraz regulárního výrazu, jak je uvedeno níže
$ salt “minion*” file.touch ‘/tmp/salt_files/sample.text
Chcete-li zobrazit metadata shromážděná pro daného miniona, spusťte:
$salt ‘minion1’ grains.items.
Nastavení MongoDB pomocí SaltStack
Můžeme vytvořit databázi s názvem myAppdata se souborem setDatabase.sls s obsahem níže
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}
Spuštění jednoho serveru 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'
Nastavení clusteru MongoDB pomocí 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
Závěr
Stejně jako ClusterControl je SaltStack automatizační nástroj, který lze použít ke zjednodušení úloh nasazení a provozu. Automatizační nástroj snižuje počet chyb, zkracuje dobu konfigurace a poskytuje spolehlivější výsledky.