Si të vendosni 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ë kryeni një shkallë horizontale të të dhënave dhe të ndani të gjitha të dhënat nëpër instanca të pavarura. 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ë dosje të ndryshme në instanca të ndryshme ose grupe kopjesh ndërsa Replication thjesht po sinkronizon koleksionet tuaja muzikore me shembuj të tjerë.

Tre Komponentët Sharding

Shard - Përdoret për të ruajtur të gjitha të dhënat. Dhe në një mjedis prodhimi, çdo copë është grupe kopje. 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 dhe 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 shembullin 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.

Parakushtet

  • 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

          Në 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 duke përdorur komandën e rindezjes.

          reboot

          Hapi 2 - Instaloni MongoDB në të gjitha rastet

          Ne do të përdorim versionin më të fundit MongoDB (3.4) për të gjitha rastet. Shtoni një depo të re MongoDB duke ekzekutuar komandën 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 e mëposhtme yum.

          sudo yum -y install mongodb-org

          Pasi mongodb të instalohet, mund të përdorni komandën mongo ose mongod.

          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 një shërbim mongod që funksionon në server, ndalojeni duke përdorur komandën systemctl.

          systemctl stop mongod

          Ndryshoni konfigurimin e parazgjedhur të mongodb mongod.conf duke përdorur redaktorin Vim.

          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ë adresat e rrjetit tuaj të brendshëm - configsvr1 me adresën IP 10.0.15.31 dhe serverin e 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ë pronarin e asaj drejtorie në përdorues mongod.

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

          Pas kësaj, filloni shërbimin mongod me komandën e mëposhtme.

          mongod --config /etc/mongod.conf

          Ju mund të përdorni komandën netstat për të kontrolluar nëse shërbimi mongod po funksionon ose jo në portin 27017.

          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 replica set.

          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 grupet e kopjeve të 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, ndaloni shërbimin mongod (Nëse ka shërbim që funksionon) dhe modifikoni skedarin e konfigurimit MongoDB.

          systemctl stop mongod
          vim /etc/mongod.conf

          Ndryshoni ruajtjen e paracaktuar në drejtorinë tuaj specifike.

          storage:
            dbPath: /data/db1

          Në linjën bindIP, ndryshoni vlerën për të përdorur 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 serverët 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 e MongoDB.

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

          Filloni shërbimin mongod.

          mongod --config /etc/mongod.conf

          Kontrolloni që MongoDB po funksionon duke përdorur 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 më poshtë.

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

          Ribëje këtë hap për serverët shardsvr3 dhe shardsvr4 me emra të ndryshëm të grupit të kopjeve shardreplica02.

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

          Hapi 5 - Konfiguro mongos/Query Router

          Ruteri Query ose mongos janë vetëm shembuj që drejtojnë mongos. Ju mund të ekzekutoni mongos me skedarin e konfigurimit, ose të ekzekutoni vetëm me një linjë komande.

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

          ssh   
          systemctl stop mongod

          Drejtoni mongos me vijën e komandës siç tregohet 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 duhet të shihni rezultate të ngjashme me ato të mëposhtme.

          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 i mëparshëm, lidheni përsëri me serverin mongos dhe hyni në guaskën e mongos.

          ssh 
          mongo --host mongos --port 27017

          Shto server të copëzuar me pyetjen 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ë shihni statusin e ndarjes të ngjashme me atë që tregon pamja e mëposhtme e ekranit.

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

          Hapi 7 - Testimi

          Për të testuar konfigurimin, hyni në guaskën mongo të 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.

          Në shembullin e mëposhtëm, ne po përdorim emrin të çelësit të copëzave, siç shtuam kur aktivizojmë ndarjen për koleksionet.

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

          Siç tregohet në pamjet e mëposhtme të ekranit, dokumentet janë shtuar me sukses në koleksion.

          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. Jam duke hyrë në serverin PRIMARY 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 që baza e të dhënave, koleksionet dhe dokumentet janë të disponueshme në grupin e kopjeve.

          MongoDB Sharded Cluster në CentOS 7 është instaluar dhe vendosur me sukses.

          Referenca

          • http://stackoverflow.com/questions/11571273/in-mongo-what-is-the-difference-between-sharding-and-replication