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