sql >> Databáze >  >> NoSQL >> MongoDB

Jak nasadit MongoDB pro vysokou dostupnost

Úvod

MongoDB má skvělou podporu pro vysokou dostupnost prostřednictvím ReplicaSets. Nasazení ReplicaSet však pro systém připravený na produkci nestačí. To druhé vyžaduje trochu plánování. Nasazení je jen počátečním krokem, poté potřebujeme vyzbrojit operační týmy monitorováním, upozorněním, zabezpečením, detekcí anomálií nebo selhání, automatickou obnovou/failover, správou zálohování a dalšími nástroji, abychom udrželi prostředí v chodu.

Předpoklady

Než budete moci začít s nasazením MongoDB s ClusterControl, je třeba provést určité přípravy. Podporované platformy jsou RedHat/CentOS 6.x/7.x, Ubuntu 12.04/14.04/16.04 LTS a Debian 7.x/8.x Minimální požadavky na zdroje OS jsou 2 GB RAM, 2 CPU a 20 GB místa na disku běžící na x86 architektura. Samotný ClusterControl může běžet na běžných virtuálních počítačích nebo barebone hostitelích běžících on-prem, za firewallem nebo na cloudových virtuálních počítačích.

ClusterControl navíc vyžaduje, aby byly otevřeny/povoleny porty používané následujícími službami:
ICMP (ozvěna odpověď/požadavek)
SSH (výchozí je 22)
HTTP (výchozí je 80)
HTTPS (výchozí je 443)
MySQL (výchozí je 3306) (interní databáze)
CMON RPC (výchozí je 9500)
CMON RPC TLS (výchozí je 9501)
Události CMON (výchozí je 9510)
CMON SSH (výchozí je 9511)
CMON Cloud (výchozí je 9518)

Port streamování pro zálohy přes netcat (výchozí je 9999)

Nejjednodušší a nejpohodlnější způsob instalace ClusterControl je použití instalačního skriptu poskytovaného společností Somenines. Jednoduše si stáhněte skript a spusťte jej jako uživatel root nebo uživatel s oprávněním sudo root. Pokud potřebujete manuálnější přístup, například pokud jsou vaše servery zcela bez přístupu k internetu, můžete postupovat podle pokynů uvedených v dokumentaci ClusterControl.

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

Postupujte podle instalačního průvodce, kde budete provedeni nastavením interního databázového serveru ClusterControl a jeho přihlašovacích údajů, hesla cmon pro použití ClusterControl atd. Po dokončení instalace byste měli dostat následující řádek:

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

Dalším krokem je vygenerování klíče SSH, který později použijeme k nastavení SSH bez hesla. Pokud máte pár klíčů, který byste chtěli použít, můžete přeskočit vytváření nového.

V systému můžete použít libovolného uživatele, ale musí mít schopnost provádět operace superuživatele (sudoer). V tomto příkladu jsme vybrali uživatele root:

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

Nastavte SSH bez hesla pro všechny uzly, které chcete sledovat/spravovat prostřednictvím ClusterControl. V tomto případě to nastavíme na všech uzlech v zásobníku (včetně samotného uzlu ClusterControl). V uzlu ClusterControl spusťte následující příkazy pro zkopírování klíčů ssh a zadání hesla uživatele root na výzvu:

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

Poté můžete ověřit, zda funguje spuštěním následujícího příkazu v uzlu ClusterControl:

$ ssh [email protected] "ls /root"

Ujistěte se, že vidíte výsledek výše uvedeného příkazu, aniž byste museli zadávat heslo.
Po dokončení instalace byste měli být schopni se přihlásit do webového rozhraní pomocí

https://<your_vm_name>/clustercontrol/#

Po prvním přihlášení se zobrazí okno s možnostmi, jak začít s prvním nasazením nebo importovat existující cluster.

ClusterControl Nasazení a import existujícího clusteru

Konfigurovat úložiště

Než začneme nasazovat, podívejme se na systém správy balíčků. Proces nasazení ClusterControl podporuje celý proces instalace clusteru. To zahrnuje úpravy OS a stahování a instalaci balíčků. Pokud mají vaše databázové uzly omezený přístup k internetu a nemůžete stahovat balíčky přímo z uzlu, můžete vytvořit úložiště balíčků přímo na hostiteli ClusterControl.

Úložiště balíčků ClusterControl

Existují tři způsoby, jak udržovat balíčky MongoDB v ClusterControl.

Používejte úložiště dodavatelů

Nainstalujte software nastavením a používáním oblíbeného softwarového úložiště dodavatele databáze. ClusterControl nainstaluje nejnovější verzi toho, co je uloženo v úložišti MongoDB.

Nenastavujte úložiště dodavatelů

Nainstalujte software pomocí již existujícího softwarového úložiště již nastaveného v operačním systému. Uživatel musí ručně nastavit softwarové úložiště na každém databázovém uzlu a ClusterControl použije toto úložiště pro nasazení balíčků. To je dobré, pokud databázové uzly běží bez připojení k internetu a vaše společnost má externí systém balíčků s balíčky MongoDB.

Použít zrcadlená úložiště (vytvořit nové úložiště)

Vytvořte a zrcadlte úložiště aktuálního dodavatele a poté jej nasaďte pomocí místního zrcadleného úložiště. Umožňuje také „zmrazit“ nejnovější verze softwarových balíčků používaných k poskytování databázového clusteru pro konkrétního dodavatele (tj. používat pouze balíčky Percona).

ClusterControl automatizuje vytváření interního úložiště balíčků

Nasadit ReplicaSet

ClusterControl podporuje MongoDB/Percona Server pro MongoDB 3.x ReplicaSet. Chcete-li začít s nasazením nového clusteru, přejděte na možnost nasazení v pravém horním rohu. Při instalaci uzlů databáze vždy používejte čisté a minimální virtuální počítače. V případě potřeby mohou být stávající závislosti balíčků odstraněny. Nové balíčky budou nainstalovány a stávající balíčky mohou být odstraněny při zřízení uzlu s požadovaným softwarem.

Úplně prvním krokem procesu nasazení je poskytnutí přihlašovacích údajů ssh vhodných pro hostitele, na kterých nasazujete svůj cluster. Protože ClusterControl používá k připojení a konfiguraci vašich hostitelů ssh bez hesla, je vyžadován klíč ssh.

Průvodce nasazením clusteru MongoDB ClusterControl

Pro přihlášení k hostitelům je vhodné použít neprivilegovaný uživatelský účet, takže pro usnadnění administrativních úkolů lze zadat heslo sudo. Pokud uživatelský účet nevyzve k zadání hesla sudo, není to nutné. Máte také možnost zakázat iptables a AppArmor nebo SELinux na hostiteli, abyste se vyhnuli problému s počátečním nasazením.

Na následující obrazovce si můžete vybrat instalaci binárních souborů MongoDB od MongoDB Inc nebo od Percona. Zde také musíte zadat svůj administrativní uživatelský účet MongoDB a heslo, protože je vyžadováno zabezpečení na úrovni uživatele.

Průvodce nasazením MongoDB ClusterControl, ReplicaSet

Na této obrazovce můžete také vidět, která konfigurační šablona se používá. ClusterControl používá šablony konfiguračních souborů k zajištění opakovatelných nasazení. Šablony jsou uloženy na hostiteli ClusterControl a lze je upravovat přímo pomocí příkazového řádku nebo prostřednictvím uživatelského rozhraní ClusterControl. Můžete se také rozhodnout používat úložiště dodavatelů, pokud si přejete, nebo si vybrat své vlastní úložiště. Kromě toho můžete automaticky vytvořit nové úložiště na hostiteli ClusterControl. To umožňuje zmrazit verzi MongoDB, kterou ClusterControl nasadí do aktuální verze. Jakmile zde provedete příslušnou konfiguraci, pokračujte kliknutím na tlačítko Nasadit.

Nasadit sdílení

ClusterControl může také nasadit sdílené clustery. Podporovány jsou dva způsoby, jak toho dosáhnout. Nejprve můžete převést existující MongoDB ReplicaSet na Sharded Cluster, jak je znázorněno níže.

ClusterControl Deploy MongoDB fragmenty

Po kliknutí na „Convert to Shard“ se zobrazí výzva k přidání alespoň jednoho konfiguračního serveru (pro produkční prostředí byste měli přidat tři) a routeru, známého také jako proces „mongos“. Poslední fází je výběr konfiguračních šablon MongoDB pro konfigurační server a router a také datový adresář. Nakonec klikněte na nasadit. Po dokončení se zobrazí v zobrazení clusterů databáze. Místo jednotlivých instancí zobrazí zdraví vašeho střepu. Je také možné přidat další úlomky podle potřeby.

Převést na fragment

Pokud náhodou narazíte na problémy se škálováním, můžete tuto sadu ReplicaSet škálovat buď přidáním dalších sekundárních prvků, nebo škálováním pomocí dělení. Existující sadu ReplicaSet můžete převést na sdílený cluster, ale jedná se o dlouhý proces, při kterém můžete snadno dělat chyby. V ClusterControl jsme tento proces zautomatizovali, kam automaticky přidáváme servery Config, shard routery a povolujeme sharding.

Chcete-li převést sadu ReplicaSet na sdílený cluster, můžete ji jednoduše spustit pomocí rozbalovací nabídky akcí:

ClusterControl Převést na fragment

Naplánovat zásady zálohování

Je nezbytné udržovat zálohu databáze a zajistit, aby vaše databáze měla dobrý a snadný proces zálohování. ClusterControl podporuje plně konzistentní zálohování a obnovu vaší sady replik MongoDB nebo sdíleného clusteru.

Zálohy lze provádět ručně nebo je lze naplánovat. Je podporována centralizace záloh, se zálohami uloženými buď v souborovém systému Controller, včetně síťových adresářů, nebo nahrány k předem nakonfigurovanému poskytovateli cloudu – aktuálně podporovanými poskytovateli jsou Google Cloud Platform, Amazon Web Services a Microsoft Azure. To vám umožní plně využít pokročilé funkce správy životního cyklu poskytované společnostmi Amazon a Google pro takové funkce, jako jsou mimo jiné vlastní plány uchovávání, dlouhodobá archivace a šifrování v klidu.

Uchovávání záloh je konfigurovatelné; můžete si vybrat, zda chcete zálohu uchovat na jakékoli časové období nebo nikdy zálohy neodstranit. Šifrování AES256 se používá k zabezpečení vašich záloh proti podvodným prvkům.

Pro rychlou obnovu lze zálohy obnovit přímo do zálohovacího clusteru – ClusterControl se stará o celý proces obnovy od spuštění až po obnovu clusteru a odstraňuje z procesu manuální kroky náchylné k chybám.

Povolit provozní zprávy

Pomocí ClusterControl můžete naplánovat zprávy napříč prostředími, jako jsou „Daily System Report“, „Package Upgrade Report“, „Schema Change Report“ a také „Zálohy“ a „Dostupnost“. Tyto zprávy vám pomohou udržet vaše prostředí bezpečné a funkční. Uvidíte také doporučení, jak mezery opravit. Zprávy ve formátu HTML lze zasílat e-mailem SysOps, DevOps nebo dokonce manažerům, kteří by rádi dostávali pravidelné aktualizace stavu o stavu daného systému.

Poradci pro výkon

Poradci poskytují konkrétní rady, jak řešit problémy v oblastech, jako je výkon, zabezpečení, správa protokolů, konfigurace, úložný prostor a další. ClusterControl přichází se seznamem předdefinovaných poradců, kteří mají sledovat stav různých metrik a stav vašich databází. V případě potřeby se vytvoří upozornění. Lze je rozšířit pomocí ručních skriptů. Pro více informací sledujte náš nedávný blog „Jak automatizovat analýzu pracovního zatížení databáze pomocí ClusterControl Performance Advisors“.

Mezi různými poradci pro výkon operačního systému můžete najít níže týkající se MongoDB.

MongoDB poradci sharding
použitá připojení
kontrola replikace
okno replikace

Nasazení v cloudu

Počínaje verzí 1.6 vám ClusterControl umožňuje vytvářet MongoDB 3.4 ReplicaSets v cloudu. Podporované cloudové platformy jsou Amazon AWS, Google Cloud a Microsoft Azure.

Průvodce vás provede vytvořením virtuálního počítače a nastavením MongoDB, to vše na jednom místě.

ClusterControl nasazení MongoDB ReplicaSet v cloudu

Tento proces vám umožní vybrat parametry OS včetně nastavení sítě. SSH klíče není potřeba kopírovat, budou přidány automaticky. Po dokončení úlohy uvidíte svůj cluster na hlavním panelu. Od této chvíle můžete svůj MongoDB cluster spravovat jako kterýkoli jiný v ClusterControl.

ClusterControl nasazení MongoDb RelicaSet v cloudu, nastavení sítě VM

Bezpečnostní tipy

V tomto okamžiku by měl být váš nový cluster v provozu. Než uživatelům a aplikačním procesům povolíte přístup k datům, musíte definovat nastavení zabezpečení clusteru. V našich předchozích blozích jsme vyjádřili obavy ohledně výchozí konfigurace zabezpečení. Zde jsou některé z hlavních věcí, které musíte zvážit, než předáte svůj nový cluster jiným týmům.

Změnit výchozí porty - ve výchozím nastavení se MongoDB naváže na standardní porty:27017 pro MongoDB ReplicaSets nebo Shard Routers, 27018 pro shardy a 27019 pro Config servery. Použití standardních portů se nedoporučuje, protože to zjednodušuje možnost hackerského útoku.

Povolit ověřování - bez ověření se uživatelé mohou přihlásit bez hesla. Povolte ověřování ve všech svých prostředích (vývoj, certifikace a produkce).

security:
    Authentication: on

Používejte silná hesla - v případě potřeby použijte ke generování složitých hesel generátor hesel.

Přidat replikační soubor klíče - s povoleným souborem klíčů bude autentizace replikačního streamu šifrována.

Zašifrujte své zálohy - ClusterControl vám umožňuje šifrovat zálohy.

Pro další čtení máme blog o tom, jak zabezpečit MongoDB.

Povolit automatické obnovení clusteru

Poslední, ale neposlední funkcí, kterou lze povolit, by bylo automatické obnovení uzlů a clusteru.

ClusterControl pro vás může pracovat jako člen rozšířeného 24/7 DBA týmu. Jsou zde dvě hlavní funkce. Automatické obnovení uzlu a automatické obnovení clusteru.

Když je povolena automatická obnova uzlu, ClusterControl bude reagovat na problémy s uzly a v případě selhání se pokusí obnovit jednotlivé uzly. Jde o řešení věcí, jako je proces, který běží v paměti nebo služba, která vyžaduje spuštění po výpadku napájení, ať už je příčinou problému s výpadkem služby cokoli.

Možnost obnovení clusteru je ještě sofistikovanější. V případě potřeby provede přepnutí.

V takovém případě bude vrácení všech změn, které nejsou replikovány na podřízené jednotky, umístěno do složky „rollback“, takže je na správci, aby ji obnovil.

Chcete-li nastavit automatické obnovení uzlu a clusteru, stačí je povolit na hlavním panelu.


  1. Režimy importu mongoimportu

  2. MongoDB Regex, index a výkon

  3. Redis nenačte data z mezipaměti

  4. Ochrana vašich dat pomocí ClusterControl