GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come installare un cluster frammentato MongoDB su CentOS 7

Sharding è un processo MongoDB per memorizzare set di dati su macchine diverse. Ti consente di eseguire una scala orizzontale di dati, partizionare i dati su istanze indipendenti e può essere "Set di repliche". Il partizionamento del set di dati su "Sharding" utilizza la chiave shard. Lo sharding ti consente di aggiungere più macchine in base alla crescita dei dati nel tuo stack.

Sharding e replica

Rendiamolo semplice. Quando hai raccolte di musica, "Sharding" salverà e manterrà le tue raccolte musicali in una cartella diversa. La "replica", d'altra parte, sta semplicemente sincronizzando le tue raccolte musicali con altre istanze.

Tre componenti di sharding

Shard - Utilizzato per archiviare tutti i dati e, in un ambiente di produzione, ogni shard è set di repliche. Fornisce alta disponibilità e coerenza dei dati.

Configura server - Utilizzato per archiviare i metadati del cluster, contiene una mappatura del set di dati del cluster e degli shard. Questi dati vengono utilizzati da mongos/query server per fornire le operazioni. Si consiglia di utilizzare più di 3 istanze in produzione.

Router Mongos/Query - Si tratta solo di istanze mongo in esecuzione come interfacce dell'applicazione. L'applicazione invierà richieste alle istanze mongos, quindi mongos consegnerà le richieste utilizzando la chiave shard ai set di repliche degli shard.

Prerequisiti

  • 2 server centOS 7 come set di repliche di configurazione
      • 15.00.31      configsvr1
      • 10.0.15.32      configsvr2
  • 4 server CentOS 7 come set di repliche di frammenti
      • 15.00.21      shardsvr1
      • 15.10.22      shardsvr2
      • 15.00.23      shardsvr3
      • 15.00.24      shardsvr4
  • 1 server CentOS 7 come mongos/Query Router
      • 15.00.11       mongos
  • Privilegi di root
  • Ogni server connesso a un altro server

Passaggio 1 - Disattiva SELinux e configura gli host

Per questo tutorial, disabiliteremo SELinux. Modifica la configurazione di SELinux da 'enforcing' a 'disabled'.

Connettiti a tutti i nodi tramite OpenSSH.

ssh [email protected]

Disabilita SELinux modificando il file di configurazione.

vim /etc/sysconfig/selinux

Cambia il valore di SELinux in 'disabilitato'.

SELINUX=disabled

Salva ed esci.

Quindi, modifica il file hosts su ciascun server.

vim /etc/hosts

Incolla la seguente configurazione degli host:

    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

Salva ed esci.

Ora riavvia tutti i server:

reboot

Passaggio 2 - Installa MongoDB su tutte le istanze

Useremo l'ultimo MongoDB (MongoDB 3.4) per tutte le istanze. Aggiungi un nuovo repository MongoDB eseguendo i seguenti comandi:

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

Ora installa mongodb 3.4 dal repository mongodb usando il comando yum di seguito.

sudo yum -y install mongodb-org

Dopo aver installato mongodb, usa 'mongo ' o 'mongo ' nel modo seguente per controllare i dettagli della versione.

mongod --version

Passaggio 3:crea un set di repliche del server di configurazione

Nella sezione dei prerequisiti, abbiamo già definito il server di configurazione con 2 macchine 'configsvr1' e 'configsvr2'. E in questo passaggio, lo configureremo come un set di repliche.

Se è presente un servizio mongod in esecuzione sul server, arrestarlo con il seguente comando systemctl.

systemctl stop mongod

Modifica la configurazione predefinita di mongodb 'mongod.conf '.

vim /etc/mongod.conf

Cambia il percorso di archiviazione del DB nella tua directory. Useremo '/data/db1' per il primo server e la directory '/data/db2' per il secondo server di configurazione.

storage:
  dbPath: /data/db1

Modifica il valore della riga 'bindIP' con il tuo indirizzo di rete interno. 'configsvr1' con indirizzo IP 10.0.15.31 e il secondo server con 10.0.15.32.

bindIP: 10.0.15.31

Nella sezione di replica, imposta un nome di replica.

replication:
  replSetName: "replconfig01"

E nella sezione di partizionamento orizzontale, definisci un ruolo delle istanze. Useremo queste due istanze come 'configsvr'.

sharding:
  clusterRole: configsvr

Salva ed esci.

Successivamente, dobbiamo creare una nuova directory per i dati MongoDB, quindi modificare i permessi di proprietà di quella directory nell'utente 'mongod'.

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

Quindi, avvia il servizio mongod con il seguente comando.

mongod --config /etc/mongod.conf

Puoi controllare che il servizio mongod sia in esecuzione sulla porta 27017 con il comando netstat.

netstat -plntu

Configsvr1 e Configsvr2 sono pronti per il set di repliche. Collegati al server 'configsvr1' e accedi alla shell mongo.

ssh [email protected]
mongo --host configsvr1 --port 27017

Avvia il nome del set di repliche con tutti i membri di configsvr utilizzando la query seguente.

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

Se ottieni un risultato "{ "ok" :1 } ', significa che configsvr è già configurato con il set di repliche.

e sarai in grado di vedere quale nodo è master e quale nodo è secondario.

rs.isMaster()
rs.status()

La configurazione di Config Server Replica Set è completata.

Passaggio 4:creazione di set di repliche shard

In questo passaggio, configureremo 4 server centos 7 come server "Shard" con 2 "Set di repliche".

  • 2 server - 'shardsvr1 ' e 'shardsvr2 ' con il nome del set di repliche:'shardreplica01 '
  • 2 server - 'shardsvr3 ' e 'shardsvr4 ' con il nome del set di repliche:'shardreplica02 '

Connettiti a ciascun server e arresta il servizio mongod (se il servizio è in esecuzione) e modifica il file di configurazione di MongoDB.

systemctl stop mongod
vim /etc/mongod.conf

Cambia lo spazio di archiviazione predefinito nella tua directory specifica.

storage:
  dbPath: /data/db1

Nella riga 'bindIP', cambia il valore nel tuo indirizzo di rete interno.

bindIP: 10.0.15.21

Nella sezione di replica, puoi utilizzare 'shardreplica01 ' per la prima e la seconda istanza. E usa 'shardreplica02 ' per il terzo e il quarto server shard.

replication:
  replSetName: "shardreplica01"

Quindi, definisci il ruolo del server. Useremo tutto questo come istanze shardsvr.

sharding:
  clusterRole: shardsvr

Salva ed esci.

Ora crea una nuova directory per i dati MongoDB.

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

Avvia il servizio mongod.

mongod --config /etc/mongod.conf

Controlla se MongoDB è in esecuzione con il comando seguente:

netstat -plntu

Vedrai che MongoDB è in esecuzione sull'indirizzo di rete locale.

Quindi, crea un nuovo set di repliche per queste 2 istanze di shard. Collegati a 'shardsvr1' e accedi alla shell mongo.

ssh [email protected]
mongo --host shardsvr1 --port 27017

Avvia il set di repliche con il nome 'shardreplica01 ' e i membri sono 'shardsvr1 ' e 'shardsvr2 '.

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

Se non ci sono errori, vedrai i risultati come mostrato di seguito.

Risultati da shardsvr3 e shardsvr4 con il nome del set di repliche 'shardreplica02 '.

Ripeti questo passaggio su shardsvr3 e shardsvr4 server con nome del set di repliche diverso 'shardreplica02 '.

Ora abbiamo creato 2 set di repliche come shard:'shardreplica01 ' e 'shardreplica02 '.

Passaggio 5 - Configura mongos/Query Router

Il "Query Router" o mongos sono solo istanze che eseguono "mongos". Puoi eseguire mongos con il file di configurazione o eseguirlo solo con una riga di comando.

Accedi al server mongos e interrompi il servizio MongoDB.

ssh [email protected]  
systemctl stop mongod

Esegui mongos con il comando seguente.

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

utilizzare l'opzione '--configdb' per definire il server di configurazione. Se sei in produzione, usa almeno 3 server di configurazione.

Vedrai i risultati di seguito.

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

le istanze mongos sono in esecuzione.

Passaggio 6:aggiungi shard a mongos/Query Router

Apri un'altra shell dal passaggio 5, connetti di nuovo al server mongos e accedi alla shell mongo.

ssh [email protected]
mongo --host mongos --port 27017

Aggiungi shard server con query sh mongodb.

Per 'shardreplica01 ' istanze.

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

Per 'shardreplica02 ' istanze.

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

Assicurati che non ci siano errori e controlla lo stato dello shard.

sh.status()

Farai lo sharding dello stato come mostrato nello screenshot qui sotto.

Abbiamo 2 set di repliche di frammenti e 1 istanza mongos in esecuzione nel nostro stack.

Fase 7 - Test

Ora testeremo il server MongoDB abilitando lo sharding e quindi aggiungeremo documenti.

Accedi alla shell mongo del server mongos.

ssh [email protected]
mongo --host mongos --port 27017

Abilita lo sharding per un database

Crea un nuovo database e abilita il partizionamento orizzontale per il nuovo database.

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

Ora guarda lo stato del database:è stato partizionato nel set di repliche 'shardreplica01'.

Abilita partizionamento orizzontale per le raccolte

Successivamente, aggiungi nuove raccolte al database con il supporto del partizionamento orizzontale. Aggiungeremo una nuova raccolta denominata "stack" con la raccolta di shard "nome", quindi vedremo lo stato del database e delle raccolte.

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

Sono state aggiunte nuove raccolte 'stack' con shard collection 'name'.

Aggiungi documenti alla "pila" delle raccolte.

Ora inserisci i documenti nelle raccolte. Quando aggiungiamo documenti alla raccolta su un cluster partizionato, dobbiamo includere la "chiave shard".

Puoi usare un esempio qui sotto. Stiamo utilizzando la chiave shard 'nome ', come abbiamo aggiunto quando si abilita il partizionamento orizzontale per le raccolte.

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

I documenti sono stati aggiunti correttamente alla raccolta, come mostrato nella schermata seguente.

Se desideri testare il database, puoi connetterti al set di repliche 'shardreplica01 ' PRIMARY server e apri la shell mongo. Sto accedendo al server PRIMARIO 'shardsvr2'.

ssh [email protected]
mongo --host shardsvr2 --port 27017

Verifica il database disponibile sul set di repliche.

show dbs
use lemp
db.stack.find()

Vedrai che il database, le raccolte e i documenti sono disponibili nel set di repliche.

Cluster partizionato MongoDB su CentOS 7 installato e distribuito correttamente.


Cent OS
  1. Come installare MongoDB su CentOS 8

  2. Come installare MongoDB su CentOS 8 / RHEL 8

  3. Come installare MongoDB 4.2 / 4.0 su CentOS 6 / RHEL 6

  4. Come installare MongoDB 4.4/4.2 su CentOS 7/RHEL 7

  5. Come installare FlintCMS su CentOS 7

Come installare MongoDB Compass su CentOS 8

Come installare MongoDB su CentOS 6

Come installare MongoDB su CentOS 7

Come installare MongoDB versione 4.0 su Centos 7?

Come installare Mongodb in CentOS?

Come installare il cluster Kubernetes su CentOS 8