Zatímco MongoDB strávil téměř deset let dosažením vyspělosti (první vydání v únoru 2009), tato technologie je pro ty, kdo mají zkušenosti s konvenčními prostředími relačních databází (RDBMS), trochu záhadou. Integrace NoSQL do stávajícího prostředí bez hlubokých znalostí může být náročná. Není neobvyklé vidět MongoDB běžící podél MySQL nebo jiné databáze RDBMS.
Zkušenosti s RDBMS mohou pomoci porozumět některým procesům, ale musíte vědět, jak převést své odborné znalosti do světa NoSQL. Správa produkčních prostředí zahrnuje kroky, jako je nasazení, sledování provozuschopnosti a výkonu, udržování zabezpečení systému, správa HA, zálohování a tak dále. RDBMS i NoSQL jsou životaschopné možnosti, ale existují mezi nimi specifické kritické rozdíly, které musí mít uživatelé na paměti při implementaci nebo správě MongoDB. Technologie se rychle mění a my se musíme rychle přizpůsobit.
Když je MongoDB náhle vaší zodpovědností, nástroje pro správu zaručují, že databáze MongoDB, které spravujete, jsou stabilní a bezpečné. Použití předdefinovaných procesů a automatizace vám může nejen ušetřit čas, ale také ochránit před běžnými chybami. Platforma pro správu, která systematicky řeší všechny různé aspekty životního cyklu databáze, bude robustnější než spojování několika bodových řešení.
Srdcem ClusterControl je jeho automatizační funkce, která vám umožňuje automatizovat databázové úlohy, které musíte pravidelně provádět, jako je nasazování nových databází, přidávání a škálování nových uzlů, správa záloh, vysoká dostupnost a převzetí služeb při selhání, změny topologie, upgrady a další. ClusterControl poskytuje naprogramované zabezpečení a zachovává integritu vaší databázové infrastruktury. Navíc díky ClusterControl již uživatelé MongoDB nepodléhají uzamčení dodavatele; něco, co v poslední době mnozí zpochybňovali. Z jediné konzole můžete zdarma nasadit a importovat různé verze MongoDB a dodavatele. Uživatelé MongoDB často musí používat směs nástrojů a domácích skriptů, aby dosáhli svých požadavků, a je dobré vědět, že je najdete v jednom produktu zkombinované.
V tomto článku vám ukážeme, jak nasadit a spravovat MongoDB 4.0 automatizovaným způsobem. Zde najdete postup:
- Instalace ClusterControl
- Proces nasazení MongoDB
- Nasaďte nový cluster
- Import stávajícího clusteru
- Škálování MongoDB
- Čtení měřítka (replicaSet)
- Škálování zápisu (sharding)
- Zabezpečení MongoDB
- Monitorování a trendy
- Zálohování a obnovení
Instalace ClusterControl
Chcete-li začít s ClusterControl, potřebujete vyhrazený virtuální počítač nebo hostitele. Požadavky na VM a podporované systémy jsou popsány zde. Základní virtuální počítač může začínat na 2 GB, 2 jádrech a na disku 20 GB úložného prostoru, a to buď on-prem, nebo v cloudu.
Instalace je dobře popsána v dokumentaci, ale v podstatě jde o stažení instalačního skriptu, který vás provede průvodcem. Skript průvodce nastaví interní databázi, nainstaluje potřebné balíčky, úložiště a provede další nezbytná vylepšení. Pro prostředí internetového zámku můžete použít proces instalace offline.
ClusterControl vyžaduje přístup SSH k hostitelům databáze a monitorování může být založené na agentech nebo bez agentů. Management je bez agenta.
Nastavení SSH bez hesla do všech cílových uzlů (ClusterControl a všech databázových hostitelů) zahrnuje spuštění následujících příkazů na serveru ClusterControl:
$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes
Nasazení a škálování MongoDB
Nasazení nového clusteru MongoDB 4.0
Jakmile vstoupíme do rozhraní ClusterControl, první věcí, kterou musíte udělat, je nasadit nový cluster nebo importovat existující. Nová verze 1.7.1 zavádí podporu pro verzi 4.0. Nyní můžete nasadit/importovat a spravovat MongoDB v4.0 s podporou připojení SSL.
Vyberte možnost „Deploy Database Cluster“ a postupujte podle zobrazených pokynů.
ClusterControl Deploy Database ClusterPři výběru MongoDB musíme zadat uživatele, klíč nebo heslo a port pro připojení pomocí SSH k našim serverům. Potřebujeme také název našeho nového clusteru a pokud chceme, aby ClusterControl nainstaloval odpovídající software a konfigurace za nás.
Po nastavení přístupových informací SSH musíme zadat údaje pro přístup k naší databázi. Můžeme také určit, které úložiště použít. Konfigurace úložiště je důležitým aspektem pro databázové servery a clustery. Při nasazování databázového serveru/klastru pomocí ClusterControl můžete mít tři typy úložiště:
- Používejte úložiště dodavatele
Provision software nastavením a používáním preferovaného úložiště softwaru dodavatele databáze. ClusterControl nainstaluje nejnovější verzi toho, co poskytuje úložiště dodavatele databáze. - Nenastavujte úložiště dodavatelů
Poskytujte software pomocí již existujícího úložiště softwaru již nastaveného na uzlech. 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í. To je dobré, pokud databázové uzly běží bez připojení k internetu. - Použít zrcadlená úložiště (vytvořit nové úložiště)
Vytvořte a zrcadlte úložiště aktuálního dodavatele databáze a poté jej nasaďte pomocí místního zrcadleného úložiště. To vám umožní „zmrazit“ aktuální verze softwarových balíčků.
V dalším kroku musíme přidat naše servery do clusteru, který se chystáme vytvořit. Při přidávání našich serverů můžeme zadat IP nebo název hostitele. V druhém případě musíme mít server DNS nebo jsme přidali naše servery MongoDB do souboru místního rozlišení (/etc/hosts) našeho ClusterControl, aby mohl přeložit odpovídající název, který chcete přidat. V našem příkladu nasadíme ReplicaSet se třemi servery, jedním primárním a dvěma sekundárními. Je možné nasadit pouze 2 uzly MongoDB (bez arbitra). Výhradou tohoto přístupu není automatické převzetí služeb při selhání, protože nastavení se 2 uzly je citlivé na rozdělení mozku. Pokud dojde k výpadku primárního uzlu, je nutné ruční převzetí služeb při selhání, aby se druhý server stal primárním. Automatické převzetí služeb při selhání funguje dobře se 3 a více uzly. Doporučuje se, aby sada replik měla lichý počet hlasujících členů. Tolerance chyb pro sadu replik je počet členů, kteří se mohou stát nedostupnými, a přesto v sadě ponechat dostatek členů pro zvolení primární volby. Tolerance chyb pro tři členy je jedna, pro pět jsou dva atd.
Na stejné stránce si můžete vybrat z různých verzí MongoDB:
ClusteControl Deploy MongoDB verze 4.0Když je vše nastaveno, stiskněte tlačítko nasazení. Stav vytváření našeho nového clusteru můžete sledovat z monitoru aktivity ClusterControl. Po dokončení úlohy můžeme vidět náš cluster na hlavní obrazovce ClusterControl a v zobrazení topologie.
Zobrazení topologie ClusterControlJak můžeme vidět na obrázku, jakmile máme vytvořený cluster, můžeme na něm provádět několik úkolů, jako je převod sady replik na fragment nebo přidání uzlů do clusteru.
Škálování ClusterControlImportovat nový klastr
Máme také možnost spravovat existující cluster jeho importem do ClusterControl. Takové prostředí lze vytvořit pomocí ClusterControl nebo jinými metodami, jako je instalace dockeru.
Import ClusterControl MongoDBNejprve musíme zadat přihlašovací údaje SSH pro přístup k našim serverům. Poté zadáme přístupové údaje do naší databáze, datový adresář serveru a verzi. Přidáme uzly podle IP nebo názvu hostitele stejným způsobem jako při nasazení a stiskneme Importovat. Po dokončení úlohy jsme připraveni spravovat náš cluster z ClusterControl.
Škálování MongoDB
Jedním ze základních kamenů MongoDB je to, že je vytvořen s ohledem na vysokou dostupnost a škálování. Škálování lze provést buď vertikálně přidáním více zdrojů na server, nebo horizontálně s více uzly. Horizontální škálování je to, v čem je MongoDB dobrý, a nejde o nic víc než o rozložení zátěže na více strojů. Ve skutečnosti využíváme více levných hardwarových krabic namísto upgradu na dražší vysoce výkonný server. MongoDB nabízí škálování čtení i zápisu a my vám odhalíme rozdíly mezi těmito dvěma strategiemi. Zda zvolit škálování čtení nebo zápisu, vše závisí na pracovní zátěži vaší aplikace:pokud má vaše aplikace tendenci číst častěji než zapisuje data, pravděpodobně budete chtít využít možnosti škálování čtení MongoDB.
S ClusterControl je přidání dalších serverů do clusteru snadným krokem. Můžete to udělat z GUI nebo CLI. Pro pokročilejší uživatele můžete použít ClusterControl Developer Studio a napsat základní podmínku zdrojů pro horizontální rozšíření clusteru.
MongoDB ReplicaSetSharding
Shardingové řešení MongoDB je podobné stávajícím shardovacím frameworkům pro jiná hlavní databázová řešení. Využívá typického vyhledávacího řešení, kde je sharding definován pomocí shard-key a rozsahy jsou uloženy v konfigurační databázi. MongoDB pracuje se třemi komponentami, aby našel správný shard pro vaše data. Typické shardované prostředí MongoDB vypadá takto:
Sdílení MongoDBPrvní použitou komponentou je shard router zvaný mongos. Všechny operace čtení a zápisu musí být odeslány do směrovače shardů, takže všechny fragmenty fungují jako jediná databáze pro klientskou aplikaci. Směrovač shardu směruje dotazy na příslušné fragmenty pomocí Configserveru.
Převést ClusterControl na ShardSpráva fragmentů je v MongoDB opravdu snadná. Shardy můžete přidávat a odebírat online a router shard MongoDB se automaticky přizpůsobí tomu, co mu přikážete. Pokud se chcete dozvědět více do hloubky o tom, jak nejlépe spravovat shardy, přečtěte si náš blogový příspěvek o správě shardů MongoDB.
Zabezpečení MongoDB
Související zdroje ClusterControl pro MongoDB MongoDB Automation &Management with ClusterControlMongoDB přichází s velmi malým zabezpečením hned po vybalení:například ověřování je ve výchozím nastavení zakázáno. Jinými slovy:ve výchozím nastavení má kdokoli práva root k jakékoli databázi. Jednou ze změn, které MongoDB použil ke zmírnění rizik, byla změna výchozí vazby na 127.0.0.1. To brání tomu, aby byl vázán na externí IP adresu, ale většina lidí, kteří jej instalují, to přirozeně vrátí. ClusterControl odstraňuje lidskou chybu a poskytuje přístup k sadě bezpečnostních funkcí, které automaticky chrání vaše databáze před hackery a dalšími hrozbami. Již dříve jsme zveřejnili krátké video s bezpečnostními tipy.
Nová verze ClusterControl nabízí podporu SSL pro připojení MongoDB. Povolení SSL přidává další úroveň zabezpečení pro komunikaci mezi aplikacemi (včetně ClusterControl) a databází. Klienti MongoDB otevírají šifrovaná připojení k databázovým serverům a ověřují identitu těchto serverů před přenosem jakýchkoli citlivých informací.
Chcete-li povolit připojení SSL, musíte použít nejnovějšího klienta s9s. Můžete jej nainstalovat pomocí
wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
chmod 755 install-s9s-tools.sh
./install-s9s-tools.sh
Nebo postupujte podle jiných možných způsobů instalace popsaných zde.
Jakmile budete mít nainstalované nástroje s9s (min. verze 1.7-93.1), můžete použít příznak --enable-ssl k povolení připojení SSL.
Příklad níže:
[[email protected] ~]# s9s cluster --cluster-id=3 --enable-ssl --log
This is an RPC V2 job (a job created through RPC V2).
The job owner is 'admin'.
Accessing '/.runtime/jobs/jobExecutor' to execute...
Access ok.
Stopping the cluster
node1:27017: Node is already stopped by the user.
node2:27017: Node is already stopped by the user.
node3:27017: Node is already stopped by the user.
Checking/generating (expire 1000 days) server and CA certificate.
node1:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node1:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node1:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node1:/etc/mongod.conf'.
node1:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node2:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node2:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node2:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node2:/etc/mongod.conf'.
node2:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node3:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node3:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node3:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node3:/etc/mongod.conf'.
node3:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
Starting the cluster
node3:27017: Doing some preparation for starting the node.
node3:27017: Disable transparent huge page and its defrag according to mongo suggestions.
node3:27017: Checking file permissions and ownership.
node3:27017: Starting mongod MongoDb server with command:
ulimit -u 32000 -n 32000 && runuser -s /bin/bash mongod '-c mongod -f /etc/mongod.conf'
node3:27017: Verifing that 'mongod' process is started.
SSL setup done.
ClusterControl provede všechny potřebné kroky včetně vytvoření certifikace na všech uzlech clusteru. Takové certifikáty lze později udržovat na kartě Správa klíčů.
Správa klíčů ClusterControlMonitorování
Při práci s databázovými systémy byste měli být schopni je monitorovat. To vám umožní identifikovat trendy, plánovat upgrady nebo vylepšení nebo efektivně reagovat na jakékoli problémy nebo chyby, které mohou nastat.
Přehled ClusterControl MongoDBNový ClusterControl 1.7.1 přidává monitorování ve vysokém rozlišení pro MongoDB. Používá Prometheus jako úložiště dat s dotazovacím jazykem PromQL. Seznam řídicích panelů zahrnuje řídicí panely MongoDB Server, MongoDB ReplicaSet, Přehled systému a Přehled clusteru. ClusterControl instaluje agenty Prometheus, konfiguruje metriky a udržuje přístup ke konfiguraci exportérů Prometheus prostřednictvím svého GUI, takže můžete lépe spravovat konfiguraci parametrů, jako jsou příznaky kolektorů pro exportéry (Prometheus). Co lze v poslední době sledovat, jsme podrobně popsali v článku Jak monitorovat MongoDB pomocí Prometheus &ClusterControl.
ClusterControl MongoDB SCUMM DashboardsUpozornění
Jako provozovatel databáze potřebujeme být informováni, kdykoli se v naší databázi vyskytne něco kritického. Mezi tři hlavní metody v ClusterControl pro získání výstrahy patří:
- e-mailová upozornění
- integrace
- poradci
E-mailová upozornění můžete nastavit na uživatelské úrovni. Přejděte do Nastavení> E-mailová upozornění. Kde si můžete vybrat mezi kritičností a typem upozornění, které se má odeslat.
Další metodou je použití integračních služeb. Jde o předání konkrétní kategorie událostí jiné službě, jako jsou vstupenky ServiceNow, Slack, PagerDuty atd., abyste mohli vytvořit pokročilé způsoby oznamování a integrace v rámci vaší organizace.
ClusterControl Integration ServicesPoslední možností je zapojit sofistikovanou analýzu metrik v sekci Advisor, kde můžete vytvářet inteligentní kontroly a spouštěče. Příkladem může být předpověď využití místa na disku nebo škálování clusteru přidáním uzlů, když zátěž dosáhne přednastavené úrovně.
Poradci ClusterControl pro MongoDBZálohování a obnovení
Nyní, když máte repliku MongoDB nastavenou a spuštěnou a máte své monitorování na místě, je čas na další krok:ujistěte se, že máte zálohu svých dat.
ClusterControl Vytvořit zásady zálohováníClusterControl poskytuje rozhraní pro správu záloh MongoDB s podporou plánování a kreativních sestav. Poskytuje vám dvě možnosti metod zálohování.
- Mongodump
- Konzistentní zálohování Mongodb
Mongodump vypíše všechna data ve formátu Binary JSON (BSON) do zadaného umístění. Mongorestore může později použít soubory BSON k obnovení vaší databáze. Konzistentní záloha ClusterControl MongoDB zahrnuje transakce z oplogu, které byly prováděny při vytváření zálohy.
ClusterControl Backup EncryptionDobrá strategie zálohování je kritickou součástí každého systému správy databází. ClusterControl nabízí mnoho možností pro zálohování a obnovu/obnovu.
Řízení plánu zálohování ClusterControlUchovávání záloh ClusterControl 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.