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 shardsvr4Ruaje 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
EOFTani 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/db1Ndryshoni 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: configsvrRuaje 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/db1Më 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 27017Nisni 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.confNdrysho ruajtjen e paracaktuar në drejtorinë tuaj specifike.
storage:
dbPath: /data/db1Në 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: shardsvrRuaje dhe dil.
Tani krijoni një direktori të re për të dhënat MongoDB.
mkdir -p /data/db1
chown -R mongod:mongod /data/db1Filloni 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 27017Nisni 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 mongodDrejtoni 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:27017Instancat 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 27017Shto 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 27017Aktivizo 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 27017Kontrolloni 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/