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

Come distribuire un cluster frammentato MongoDB su CentOS 7

Sharding è un processo MongoDB per memorizzare set di dati su macchine diverse. Ti consente di eseguire una scalabilità orizzontale dei dati e di partizionare tutti i dati in istanze indipendenti. Lo sharding ti consente di aggiungere più macchine al tuo stack in base alla crescita dei dati.

Sharding e replica

Rendiamolo semplice. Quando hai raccolte di musica, "Sharding" salverà e manterrà le tue raccolte musicali in cartelle diverse su istanze diverse o set di repliche mentre "Replica" sta semplicemente sincronizzando le tue raccolte musicali con altre istanze.

Tre componenti di sharding

Shard - Utilizzato per memorizzare 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 e 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 all'istanza "mongos", quindi "mongos" consegnerà le richieste utilizzando la chiave shard ai set di repliche di 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

In 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

Modifica 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 usando il comando di riavvio.

reboot

Passaggio 2:installa MongoDB su tutte le istanze

Utilizzeremo l'ultima versione di MongoDB (3.4) per tutte le istanze. Aggiungi un nuovo repository MongoDB eseguendo il comando seguente:

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 seguente comando yum.

sudo yum -y install mongodb-org

Dopo aver installato mongodb, puoi utilizzare 'mongo ' o 'mongo comando '.

mongod --version

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

Nella sezione "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, interrompilo utilizzando il comando systemctl.

systemctl stop mongod

Modifica la configurazione predefinita di mongodb 'mongod.conf ' usando l'editor Vim.

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 cambiare il proprietario di quella directory in utente 'mongod'.

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

Successivamente, avvia il servizio mongod con il comando seguente.

mongod --config /etc/mongod.conf

Puoi utilizzare il comando netstat per verificare se il servizio mongod è in esecuzione o meno sulla porta 27017.

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 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 dei 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, interrompi il servizio mongod (se c'è un 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", modifica il valore per utilizzare il 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

Verifica che MongoDB sia in esecuzione utilizzando il seguente comando:

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 di seguito.

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

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

Ora abbiamo creato 2 set di repliche: 'shardreplica01 ' e 'shardreplica02 ' - come il frammento.

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 la riga di comando come mostrato di seguito.

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.

Dovresti vedere risultati simili ai seguenti.

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 del passaggio precedente, connettiti nuovamente al server mongos e accedi alla shell mongo.

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

Aggiungi shard server con la 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()

Vedrai lo stato di partizionamento orizzontale in modo simile a quello mostrato nella schermata seguente.

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

Fase 7 - Test

Per testare la configurazione, accedi alla shell mongos 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".

Nell'esempio seguente, utilizziamo 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"],
})

Come mostrato negli screenshot seguenti, i documenti sono stati aggiunti con successo alla raccolta.

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.

MongoDB Sharded Cluster su CentOS 7 è stato installato e distribuito correttamente.


Cent OS
  1. Come distribuire CDP su un server CentOS

  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 un cluster Docker Kubernetes su CentOS 7

Come installare MongoDB in CentOS 8

Come installare MongoDB Compass su CentOS 8

Come installare MongoDB su CentOS 6

Come configurare un cluster Redis in CentOS 8 – Parte 3

Come installare Mongodb in CentOS?