Si të instaloni një grup të copëtuar MongoDB në CentOS 7


Sharding është një proces MongoDB për të ruajtur grupin e të dhënave nëpër makina të ndryshme. Kjo ju lejon të bëni një shkallë horizontale të të dhënave, ndarjen e të dhënave nëpër instanca të pavarura dhe mund të jenë Replica Sets. Ndarja e grupit të të dhënave në Sharding përdor çelësin shard. Sharding ju lejon të shtoni më shumë makina bazuar në rritjen e të dhënave në pirgun tuaj.

Ndarja dhe përsëritja

Le ta bëjmë të thjeshtë. Kur keni koleksione muzikore, Sharding do t'i ruajë dhe do t'i mbajë koleksionet tuaja muzikore në një dosje tjetër. Përsëritja, nga ana tjetër, thjesht sinkronizon koleksionet tuaja muzikore me raste të tjera.

Tre Komponentët Sharding

Shard - Përdoret për të ruajtur të gjitha të dhënat dhe në një mjedis prodhimi, çdo copëz është grupe kopjesh. Ofron disponueshmëri të lartë dhe qëndrueshmëri të të dhënave.

Serveri i konfigurimit - Përdoret për të ruajtur meta të dhënat e grupit, përmban një hartë të grupit të të dhënave të grupit dhe copëzave. Këto të dhëna përdoren nga mongos/server pyetës për të ofruar operacione. Rekomandohet të përdoren më shumë se 3 raste në prodhim.

Mongos/Query Router - Këto janë vetëm shembuj mongo që ekzekutohen si ndërfaqe aplikacioni. Aplikacioni do të bëjë kërkesa për instancat e mongos dhe më pas mongos do t'i dorëzojë kërkesat duke përdorur çelësin e copëzave në grupet e kopjeve të copëzave.

Kushtet paraprake

  • 2 server centOS 7 si Konfigurime Replica Sets
      • 10.0.15.31      configsvr1
      • 10.0.15.32      configsvr2

        • 10.0.15.21      shardsvr1
        • 10.0.15.22      shardsvr2
        • 10.0.15.23      shardsvr3
        • 10.0.15.24      shardsvr4

          • 10.0.15.11       mongos

          Hapi 1 - Çaktivizo SELinux dhe konfiguro hostet

          Për këtë tutorial, ne do të çaktivizojmë SELinux. Ndrysho konfigurimin e SELinux nga imponues në të paaftë.

          Lidhu me të gjitha nyjet përmes OpenSSH.

          ssh 

          Çaktivizoni SELinux duke redaktuar skedarin e konfigurimit.

          vim /etc/sysconfig/selinux

          Ndrysho vlerën e SELinux në të çaktivizuar.

          SELINUX=disabled

          Ruaje dhe dil.

          Tjetra, modifikoni skedarin e hosteve në secilin server.

          vim /etc/hosts

          Ngjitni konfigurimin e mëposhtëm të hosteve:

              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

          Ruaje dhe dil.

          Tani rinisni të gjithë serverët:

          reboot

          Hapi 2 - Instaloni MongoDB në të gjitha rastet

          Ne do të përdorim MongoDB më të fundit (MongoDB 3.4) për të gjitha rastet. Shtoni një depo të re MongoDB duke ekzekutuar komandat e mëposhtme:

          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

          Tani instaloni mongodb 3.4 nga depoja mongodb duke përdorur komandën yum më poshtë.

          sudo yum -y install mongodb-org

          Pasi mongodb të instalohet, përdorni komandën mongo ose mongod në mënyrën e mëposhtme për të kontrolluar detajet e versionit.

          mongod --version

          Hapi 3 - Krijo Set Replica të Serverit të Konfigurimit

          Në seksionin e parakushteve, ne kemi përcaktuar tashmë serverin e konfigurimit me 2 makina configsvr1 dhe configsvr2. Dhe në këtë hap, ne do ta konfigurojmë atë të jetë një grup kopje.

          Nëse ka shërbim mongod që funksionon në server, ndalojeni atë me komandën e mëposhtme systemctl.

          systemctl stop mongod

          Ndrysho konfigurimin e parazgjedhur të mongodb mongod.conf.

          vim /etc/mongod.conf

          Ndryshoni shtegun e ruajtjes së DB në drejtorinë tuaj. Ne do të përdorim /data/db1 për serverin e parë dhe drejtorinë /data/db2 për serverin e dytë të konfigurimit.

          storage:
            dbPath: /data/db1

          Ndryshoni vlerën e linjës bindIP në adresën tuaj të brendshme të rrjetit. configsvr1 me adresën IP 10.0.15.31, dhe serveri i dytë me 10.0.15.32.

          bindIP: 10.0.15.31

          Në seksionin e përsëritjes, vendosni një emër riprodhimi.

          replication:
            replSetName: "replconfig01"

          Dhe nën seksionin e ndarjes, përcaktoni një rol të rasteve. Ne do t'i përdorim këto dy raste si configsvr.

          sharding:
            clusterRole: configsvr

          Ruaje dhe dil.

          Më pas, ne duhet të krijojmë një direktori të re për të dhënat e MongoDB, dhe më pas të ndryshojmë lejet e pronësisë së asaj drejtorie te përdoruesi mongod.

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

          Më pas, filloni shërbimin mongod me komandën e mëposhtme.

          mongod --config /etc/mongod.conf

          Mund të kontrolloni që shërbimi mongod po funksionon në portin 27017 me komandën netstat.

          netstat -plntu

          Configsvr1 dhe Configsvr2 janë gati për grupin e kopjeve. Lidhu me serverin configsvr1 dhe hyr në guaskën mongo.

          ssh 
          mongo --host configsvr1 --port 27017

          Nisni emrin e grupit të kopjeve me të gjithë anëtarët e konfigurimit duke përdorur pyetjen më poshtë.

          rs.initiate(
            {
              _id: "replconfig01",
              configsvr: true,
              members: [
                { _id : 0, host : "configsvr1:27017" },
                { _id : 1, host : "configsvr2:27017" }
              ]
            }
          )

          Nëse ju merrni një rezultat { \ok\ : 1 }, kjo do të thotë se configsvr është konfiguruar tashmë me grupin e kopjeve.

          dhe do të mund të shihni se cila nyje është master dhe cila nyje është dytësore.

          rs.isMaster()
          rs.status()

          Konfigurimi i Konfigurimit të Server Replica Set është kryer.

          Hapi 4 - Krijoni grupe kopjesh Shard

          Në këtë hap, ne do të konfigurojmë 4 serverë centos 7 si server Shard me 2 Replica Set.

          • 2 server - shardsvr1 dhe shardsvr2 me emrin e grupit të kopjeve: shardreplica01
          • 2 server - shardsvr3 dhe shardsvr4 me emrin e grupit të kopjeve: shardreplica02

          Lidhuni me çdo server dhe ndaloni shërbimin mongod (Nëse shërbimi po funksionon) dhe modifikoni skedarin e konfigurimit MongoDB.

          systemctl stop mongod
          vim /etc/mongod.conf

          Ndrysho ruajtjen e paracaktuar në drejtorinë tuaj specifike.

          storage:
            dbPath: /data/db1

          Në linjën bindIP, ndryshoni vlerën në adresën tuaj të brendshme të rrjetit.

          bindIP: 10.0.15.21

          Në seksionin e përsëritjes, mund të përdorni shardreplica01 për shembullin e parë dhe të dytë. Dhe përdorni shardreplica02 për serverin e tretë dhe të katërt të copëzave.

          replication:
            replSetName: "shardreplica01"

          Më pas, përcaktoni rolin e serverit. Ne do t'i përdorim të gjitha këto si shembuj shardsvr.

          sharding:
            clusterRole: shardsvr

          Ruaje dhe dil.

          Tani krijoni një direktori të re për të dhënat MongoDB.

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

          Filloni shërbimin mongod.

          mongod --config /etc/mongod.conf

          Kontrolloni nëse MongoDB po funksionon me komandën e mëposhtme:

          netstat -plntu

          Do të shihni se MongoDB po funksionon në adresën e rrjetit lokal.

          Më pas, krijoni një grup të ri kopjesh për këto 2 raste të copëzave. Lidhu me shardsvr1 dhe hyr në guaskën e mongos.

          ssh 
          mongo --host shardsvr1 --port 27017

          Nisni grupin e kopjeve me emrin shardreplica01 dhe anëtarët janë shardsvr1 dhe shardsvr2.

          rs.initiate(
            {
              _id : "shardreplica01",
              members: [
                { _id : 0, host : "shardsvr1:27017" },
                { _id : 1, host : "shardsvr2:27017" }
              ]
            }
          )

          Nëse nuk ka gabim, do të shihni rezultatet siç tregohet më poshtë.

          Rezultatet nga shardsvr3 dhe shardsvr4 me emrin e grupit të kopjeve shardreplica02.

          Ribëjeni këtë hap në serverët shardsvr3 dhe shardsvr4 me emra të ndryshëm të grupit të kopjeve shardreplica02.

          Tani kemi krijuar 2 grupe kopjesh si copëza - shardreplica01 dhe shardreplica02.

          Hapi 5 - Konfiguro mongos/Query Router

          Ruteri Query ose mongos janë vetëm shembuj që po ekzekutojnë mongo. Ju mund të ekzekutoni mongos me skedarin e konfigurimit, ose ta ekzekutoni atë vetëm me një linjë komande.

          Hyni në serverin mongos dhe ndaloni shërbimin MongoDB.

          ssh   
          systemctl stop mongod

          Drejtoni mongos me komandën më poshtë.

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

          përdorni opsionin --configdb për të përcaktuar serverin e konfigurimit. Nëse jeni në prodhim, përdorni të paktën 3 serverë konfigurimi.

          Ju do të shihni rezultatet më poshtë.

          Successfully connected to configsvr1:27017
          Successfully connected to configsvr2:27017

          Instancat e mongos po funksionojnë.

          Hapi 6 - Shtoni copëza te mongos/Query Router

          Hapni një predhë tjetër nga hapi 5, lidheni përsëri me serverin mongos dhe hyni në guaskën e mongos.

          ssh 
          mongo --host mongos --port 27017

          Shto server shard me pyetje sh mongodb.

          Për shembuj shardreplica01.

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

          Për shembuj shardreplica02.

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

          Sigurohuni që të mos ketë gabim dhe kontrolloni statusin e copëzave.

          sh.status()

          Ju do të statusin e ndarjes siç tregohet në pamjen e ekranit më poshtë.

          Ne kemi 2 grup kopjesh të copëzave dhe 1 shembull mongos që funksionojnë në pirgun tonë.

          Hapi 7 - Testimi

          Tani provoni mirë serverin MongoDB duke aktivizuar ndarjen dhe më pas shtoni dokumente.

          Hyni në guaskën e mongos së serverit mongos.

          ssh 
          mongo --host mongos --port 27017

          Aktivizo Sharding për një bazë të dhënash

          Krijoni një bazë të dhënash të re dhe aktivizoni ndarjen për bazën e re të të dhënave.

          use lemp
          sh.enableSharding("lemp")
          sh.status()

          Tani shikoni statusin e bazës së të dhënave - ajo është ndarë në grupin e kopjeve shardreplica01.

          Aktivizo Sharding për Koleksionet

          Më pas, shtoni koleksione të reja në bazën e të dhënave me mbështetjen e ndarjes. Ne do të shtojmë koleksion të ri me emrin stack me emrin e koleksionit të copëzave dhe më pas do të shohim statusin e bazës së të dhënave dhe koleksioneve.

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

          Është shtuar grumbulli i ri i koleksioneve me emrin e koleksionit të copëzave.

          Shto dokumente në grumbullin e koleksioneve.

          Tani futni dokumentet në koleksione. Kur shtojmë dokumente në koleksionin në grup të copëtuar, duhet të përfshijmë çelësin e copëzave.

          Ju mund të përdorni një shembull më poshtë. Ne po përdorim emrin të tastit të ndarë, siç shtuam kur aktivizojmë ndarjen për koleksionet.

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

          Dokumentet u shtuan me sukses në koleksion, siç tregohet në pamjen e mëposhtme të ekranit.

          Nëse dëshironi të testoni bazën e të dhënave, mund të lidheni me serverin PRIMARY të grupit replica shardreplica01 dhe të hapni guaskën mongo. Unë jam duke hyrë në serverin primar shardsvr2.

          ssh 
          mongo --host shardsvr2 --port 27017

          Kontrolloni bazën e të dhënave të disponueshme në grupin e kopjeve.

          show dbs
          use lemp
          db.stack.find()

          Do të shihni se baza e të dhënave, koleksionet dhe dokumentet janë të disponueshme në grupin e kopjeve.

          Grupi i copëtuar MongoDB në CentOS 7 u instalua dhe u vendos me sukses.

          Referenca

          • https://docs.mongodb.com/manual/tutorial/deploy-shard-cluster/