GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nasadit MongoDB Sharded Cluster na CentOS 7

Sharding je proces MongoDB pro ukládání datové sady na různých počítačích. Umožňuje provádět horizontální měřítko dat a rozdělit všechna data mezi nezávislé instance. Sdílení vám umožňuje přidávat další počítače na základě růstu dat do vašeho zásobníku.

Sharding a replikace

Pojďme to zjednodušit. Když máte sbírky hudby, „Sharding“ uloží a uchová vaše hudební sbírky v různých složkách v různých instancích nebo sadách replik, zatímco „Replication“ pouze synchronizuje vaše hudební sbírky s jinými instancemi.

Tři komponenty Sharding

Úlomek - Slouží k uložení všech dat. A v produkčním prostředí je každý útržek sadami replik. Poskytuje vysokou dostupnost a konzistenci dat.

Konfigurační server - Používá se k ukládání metadat clusteru a obsahuje mapování sady dat clusteru a fragmentů. Tato data používá mongos/query server k doručování operací. V produkci se doporučuje používat více než 3 instance.

Mongos/směrovač dotazů - Toto jsou pouze mongo instance běžící jako aplikační rozhraní. Aplikace zadá požadavky na instanci 'mongos' a poté 'mongos' doručí požadavky pomocí shard key do sad replik střepů.

Předpoklady

  • Server 2 centOS 7 jako sady replik konfigurace
      • 10.0.15.31      configsvr1
      • 10.0.15.32      configsvr2
  • Server 4 CentOS 7 jako sady replik Shard
      • 10.0.15.21      shardsvr1
      • 10.0.15.22      shardsvr2
      • 10.0.15.23      shardsvr3
      • 10.0.15.24      shardsvr4
  • 1 server CentOS 7 jako mongos/Query Router
      • 10.0.15.11       mongos
  • Oprávnění uživatele root
  • Každý server je připojen k jinému serveru

Krok 1 – Deaktivace SELinux a konfigurace hostitelů

V tomto tutoriálu deaktivujeme SELinux. Změňte konfiguraci SELinuxu z „vynucování“ na „vypnuto“.

Připojte se ke všem uzlům přes OpenSSH.

ssh [e-mail chráněný]

Zakažte SELinux úpravou konfiguračního souboru.

vim /etc/sysconfig/selinux

Změňte hodnotu SELINUX na 'disabled'.

SELINUX=zakázáno

Uložte a ukončete.

Dále upravte soubor hosts na každém serveru.

vim /etc/hosts

Vložte následující konfiguraci hostitelů:

10.0.15.31 configsvr1
10.0.15.32 configsvr2
10.0.15.11 mongos
10.0.15.21 shardsvr1
10.0.15.22 Shardsvr2
10.0.15.23 Shardsvr3
    10.0.15.24      shardsvr4

Uložte a ukončete.

Nyní restartujte všechny servery pomocí příkazu reboot.

restartovat

Krok 2 – Instalace MongoDB na všechny instance

Pro všechny instance použijeme nejnovější verzi MongoDB (3.4). Přidejte nové úložiště MongoDB provedením následujícího příkazu:

cat <<'EOF'>> /etc/yum.repos.d/mongodb.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb .org/static/pgp/server-3.4.asc
EOF

Nyní nainstalujte MongoDB 3.4 z úložiště mongodb pomocí následujícího příkazu yum.

sudo yum -y nainstalovat mongodb-org

Po instalaci mongodb můžete použít 'mongo nebo 'mongod ' příkaz.

mongod --version

Krok 3 – Vytvoření sady replik konfiguračního serveru

V sekci 'předpoklady' jsme již definovali konfigurační server se 2 počítači 'configsvr1' a 'configsvr2'. A v tomto kroku jej nakonfigurujeme jako sadu replik.

Pokud na serveru běží služba mongod, zastavte ji pomocí příkazu systemctl.

systemctl stop mongod

Upravte výchozí konfiguraci mongodb 'mongod.conf pomocí editoru Vim.

vim /etc/mongod.conf

Změňte cestu úložiště DB na svůj vlastní adresář. Pro první server použijeme '/data/db1' a pro druhý konfigurační server adresář '/data/db2'.

úložiště:
  dbPath:/data/db1

Změňte hodnotu řádku 'bindIP' na adresu vaší interní sítě - 'configsvr1' s IP adresou 10.0.15.31 a druhý server s 10.0.15.32.

bindIP:10.0.15.31

V části replikace nastavte název replikace.

replication:
  replSetName:"replconfig01"

A v části sharding definujte roli instancí. Tyto dvě instance použijeme jako 'configsvr'.

sharding:
  clusterRole:configsvr

Uložte a ukončete.

Dále musíme vytvořit nový adresář pro data MongoDB a poté změnit vlastníka tohoto adresáře na uživatele 'mongod'.

mkdir -p /data/db1
chown -R mongod:mongod /data/db1

Poté spusťte službu mongod příkazem níže.

mongod --config /etc/mongod.conf

Pomocí příkazu netstat můžete zkontrolovat, zda služba mongod běží na portu 27017.

netstat -plntu

Configsvr1 a Configsvr2 jsou připraveny pro sadu replik. Připojte se k serveru 'configsvr1' a získejte přístup k mongo shellu.

ssh [e-mail chráněný]
mongo --host configsvr1 --port 27017

Pomocí níže uvedeného dotazu spusťte název sady replik se všemi členy configsvr.

rs.initiate(
  {
    _id:"replconfig01",
    configsvr:true,
    členové:[
      { _id :0, hostitel :"configsvr1 :27017" },
      { _id :1, hostitel :"configsvr2:27017" }
    ]
  }
)

Pokud dostanete výsledek '{ "ok" :1 } ', to znamená, že configsvr je již nakonfigurován se sadou replik.

a budete moci vidět, který uzel je hlavní a který uzel je sekundární.

rs.isMaster()
rs.status()

Konfigurace Config Server Replica Set je hotová.

Krok 4 – Vytvoření sad replik Shard

V tomto kroku nakonfigurujeme 4 servery „centos 7“ jako server „Shard“ se 2 „sadami replik“.

  • 2 server – 'shardsvr1 a 'shardsvr2 s názvem sady replik:'shardreplica01 '
  • 2 server – 'shardsvr3 “ a „shardsvr4 s názvem sady replik:'shardreplica02 '

Připojte se ke každému serveru, zastavte službu mongod (pokud služba běží) a upravte konfigurační soubor MongoDB.

systemctl stop mongod
vim /etc/mongod.conf

Změňte výchozí úložiště na svůj konkrétní adresář.

úložiště:
  dbPath:/data/db1

Na řádku 'bindIP' změňte hodnotu tak, aby používala vaši interní síťovou adresu.

bindIP:10.0.15.21

V sekci replikace můžete použít 'shardreplica01 “ pro první a druhý případ. A použijte 'shardreplica02 ' pro třetí a čtvrtý shard server.

replication:
  replSetName:"shardreplica01"

Dále definujte roli serveru. To vše použijeme jako instance shardsvr.

sharding:
  clusterRole:shardsvr

Uložte a ukončete.

Nyní vytvořte nový adresář pro data MongoDB.

mkdir -p /data/db1
chown -R mongod:mongod /data/db1

Spusťte službu mongod.

mongod --config /etc/mongod.conf

Zkontrolujte, zda MongoDB běží pomocí následujícího příkazu:

netstat -plntu

Uvidíte, že MongoDB běží na místní síťové adrese.

Dále vytvořte novou sadu replik pro tyto 2 instance fragmentů. Připojte se k 'shardsvr1' a získejte přístup k mongo shellu.

ssh [e-mail chráněný]
mongo --host shardsvr1 --port 27017

Spusťte sadu replik s názvem 'shardreplica01 “ a členy jsou „shardsvr1 a 'shardsvr2 '.

rs.initiate(
  {
    _id :"shardreplica01",
    členové:[
      { _id :0, hostitel :"shardsvr1:27017" },
      { _id :1, hostitel :"shardsvr2:27017" }
    ]
  }
)

Pokud nedojde k žádné chybě, zobrazí se výsledky jako níže.

Výsledky z shardsvr3 a shardsvr4 s názvem sady replik 'shardreplica02 '.

Opakujte tento krok pro shardsvr3 a shardsvr4 servery s jiným názvem sady replik 'shardreplica02 '.

Nyní jsme vytvořili 2 sady replik – 'shardreplica01 a 'shardreplica02 ' - jako střep.

Krok 5 – Konfigurace mongos/Query Router

'Query Router' nebo mongos jsou pouze instance, které spouštějí 'mongos'. Mongo můžete spouštět s konfiguračním souborem nebo spouštět pouze pomocí příkazového řádku.

Přihlaste se k serveru mongos a zastavte službu MongoDB.

ssh [e-mail chráněný]  
systemctl stop mongod

Spusťte mongos pomocí příkazového řádku, jak je znázorněno níže.

mongos --configdb "replconfig01/configsvr1:27017,configsvr2:27017"

K definování konfiguračního serveru použijte volbu '--configdb'. Pokud používáte produkční verzi, použijte alespoň 3 konfigurační servery.

Měli byste vidět výsledky podobné následujícím.

Úspěšně připojeno k configsvr1:27017
Úspěšně připojeno k configsvr2:27017

jsou spuštěny instance mongos.

Krok 6 – Přidání fragmentů do mongos/směrovače dotazů

Otevřete další shell z předchozího kroku, znovu se připojte k serveru mongos a otevřete mongo shell.

ssh [e-mail chráněný]
mongo --host mongos --port 27017

Přidejte server shard pomocí dotazu sh mongodb.

Pro 'shardreplica01 ' instance:

sh.addShard( "shardreplica01/shardsvr1:27017")
sh.addShard( "shardreplica01/shardsvr2:27017")

Pro 'shardreplica02 ' instance:

sh.addShard( "shardreplica02/shardsvr3:27017")
sh.addShard( "shardreplica02/shardsvr4:27017")

Ujistěte se, že nedošlo k chybě a zkontrolujte stav fragmentu.

sh.status()

Uvidíte stav sdílení podobný tomu, který ukazuje následující snímek obrazovky.

V našem zásobníku běží 2 sady replik střepů a 1 instance mongos.

Krok 7 – Testování

Chcete-li otestovat nastavení, přejděte na mongo shell serveru mongos.

ssh [e-mail chráněný]
mongo --host mongos --port 27017

Povolit sdílení pro databázi

Vytvořte novou databázi a povolte sharding pro novou databázi.

použijte lemp
sh.enableSharding("lemp")
sh.status()

Nyní se podívejte na stav databáze, byla rozdělena do sady replik 'shardreplica01'.

Povolit sdílení pro sbírky

Dále přidejte do databáze nové kolekce s podporou shardingu. Přidáme novou kolekci pojmenovanou 'stack' s střepinou kolekce 'name' a poté uvidíme stav databáze a kolekcí.

sh.shardCollection("lemp.stack", {"name":1})
sh.status()

Byly přidány nové kolekce 'stack' se sbírkou střepů 'name'.

Přidejte dokumenty do 'zásobníku' kolekcí.

Nyní vložte dokumenty do sbírek. Když přidáváme dokumenty do kolekce na sdíleném clusteru, musíme zahrnout 'shard key'.

V níže uvedeném příkladu používáme klíčový klíč 'name ', jak jsme přidali při povolování shardingu pro sbírky.

db.stack.save({
    "name":"LEMP Stack",
    "apps":["Linux", "Nginx", "MySQL", "PHP"],
})

Jak ukazují následující snímky obrazovky, dokumenty byly úspěšně přidány do sbírky.

Pokud chcete databázi otestovat, můžete se připojit k sadě replik 'shardreplica01 ' PRIMÁRNÍ server a otevřete mongo shell. Přihlašuji se na PRIMÁRNÍ server 'shardsvr2'.

ssh [e-mail chráněný]
mongo --host shardsvr2 --port 27017

Zkontrolujte databázi dostupnou v sadě replik.

zobrazit dbs
použít lemp
db.stack.find()

Uvidíte, že databáze, kolekce a dokumenty jsou dostupné v sadě replik.

MongoDB Sharded Cluster na CentOS 7 byl úspěšně nainstalován a nasazen.


Cent OS
  1. Jak nasadit CDP na server CentOS

  2. Jak nainstalovat MongoDB na CentOS 8 / RHEL 8

  3. Jak nainstalovat MongoDB 4.2 / 4.0 na CentOS 6 / RHEL 6

  1. Jak nainstalovat MongoDB na CentOS 8

  2. Jak nainstalovat MongoDB 4.4 / 4.2 na CentOS 7 / RHEL 7

  3. Jak nainstalovat FlintCMS na CentOS 7

  1. Jak nainstalovat mongodb na RHEL 8 / CentOS 8

  2. Jak nasadit Mattermost na CentOS 7

  3. Jak nasadit Rocket.Chat na CentOS 7