GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo implementar un clúster fragmentado de MongoDB en CentOS 7

fragmentación es un proceso de MongoDB para almacenar conjuntos de datos en diferentes máquinas. Le permite realizar una escala horizontal de datos y dividir todos los datos en instancias independientes. La fragmentación le permite agregar más máquinas según el crecimiento de los datos a su pila.

fragmentación y replicación

Hagámoslo simple. Cuando tenga colecciones de música, 'Fragmentación' guardará y mantendrá sus colecciones de música en diferentes carpetas en diferentes instancias o conjuntos de réplicas, mientras que 'Replicación' simplemente sincronizará sus colecciones de música con otras instancias.

Tres componentes de fragmentación

Fragmento - Se utiliza para almacenar todos los datos. Y en un entorno de producción, cada fragmento es un conjunto de réplicas. Proporciona alta disponibilidad y consistencia de datos.

Servidor de configuración - Se utiliza para almacenar metadatos del clúster y contiene una asignación de fragmentos y conjuntos de datos del clúster. Estos datos son utilizados por mongos/query server para realizar operaciones. Se recomienda usar más de 3 instancias en producción.

Mongos/Enrutador de consultas - Estas son solo instancias de mongo que se ejecutan como interfaces de aplicación. La aplicación realizará solicitudes a la instancia de 'mongos', y luego 'mongos' entregará las solicitudes utilizando la clave de fragmento a los conjuntos de réplicas de fragmentos.

Requisitos previos

  • 2 servidores centOS 7 como conjuntos de réplicas de configuración
      • 10.0.15.31      configsvr1
      • 10.0.15.32      configsvr2
  • 4 servidores CentOS 7 como conjuntos de réplicas de fragmentos
      • 10.0.15.21      fragmentosvr1
      • 10.0.15.22      fragmentosvr2
      • 10.0.15.23      fragmentosvr3
      • 10.0.15.24      fragmentosvr4
  • 1 servidor CentOS 7 como mongos/enrutador de consultas
      • 10.0.15.11       mongos
  • Privilegios de raíz
  • Cada servidor conectado a otro servidor

Paso 1:deshabilitar SELinux y configurar hosts

En este tutorial, deshabilitaremos SELinux. Cambie la configuración de SELinux de 'aplicar' a 'deshabilitado'.

Conéctese a todos los nodos a través de OpenSSH.

ssh [email protected]

Deshabilite SELinux editando el archivo de configuración.

vim /etc/sysconfig/selinux

Cambie el valor de SELINUX a 'deshabilitado'.

SELINUX=disabled

Guardar y salir.

A continuación, edite el archivo de hosts en cada servidor.

vim /etc/hosts

Pegue la siguiente configuración de hosts:

    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

Guardar y salir.

Ahora reinicie todos los servidores usando el comando de reinicio.

reboot

Paso 2:instale MongoDB en todas las instancias

Usaremos la última versión de MongoDB (3.4) para todas las instancias. Agregue un nuevo repositorio MongoDB ejecutando el siguiente comando:

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

Ahora instale MongoDB 3.4 desde el repositorio mongodb usando el siguiente comando yum.

sudo yum -y install mongodb-org

Después de instalar mongodb, puede usar el 'mongo ' o 'mongod ' comando.

mongod --version

Paso 3:crear un conjunto de réplicas del servidor de configuración

En la sección 'requisitos previos', ya hemos definido el servidor de configuración con 2 máquinas 'configsvr1' y 'configsvr2'. Y en este paso, lo configuraremos para que sea un conjunto de réplicas.

Si hay un servicio mongod ejecutándose en el servidor, deténgalo con el comando systemctl.

systemctl stop mongod

Edite la configuración predeterminada de mongodb 'mongod.conf ' usando el editor de Vim.

vim /etc/mongod.conf

Cambie la ruta de almacenamiento de la base de datos a su propio directorio. Usaremos '/data/db1' para el primer servidor y el directorio '/data/db2' para el segundo servidor de configuración.

storage:
  dbPath: /data/db1

Cambie el valor de la línea 'bindIP' a su dirección de red interna:'configsvr1' con la dirección IP 10.0.15.31 y el segundo servidor con 10.0.15.32.

bindIP: 10.0.15.31

En la sección de replicación, establezca un nombre de replicación.

replication:
  replSetName: "replconfig01"

Y en la sección de fragmentación, defina un rol de las instancias. Usaremos estas dos instancias como 'configsvr'.

sharding:
  clusterRole: configsvr

Guardar y salir.

A continuación, debemos crear un nuevo directorio para los datos de MongoDB y luego cambiar el propietario de ese directorio al usuario 'mongod'.

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

Después de esto, inicie el servicio mongod con el siguiente comando.

mongod --config /etc/mongod.conf

Puede usar el comando netstat para verificar si el servicio mongod se está ejecutando o no en el puerto 27017.

netstat -plntu

Configsvr1 y Configsvr2 están listos para el conjunto de réplicas. Conéctese al servidor 'configsvr1' y acceda al shell mongo.

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

Inicie el nombre del conjunto de réplicas con todos los miembros de configsvr utilizando la consulta a continuación.

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

Si obtiene un resultado '{ "ok" :1 } ', significa que configsvr ya está configurado con un conjunto de réplicas.

y podrá ver qué nodo es maestro y qué nodo es secundario.

rs.isMaster()
rs.status()

La configuración del conjunto de réplicas del servidor de configuración está lista.

Paso 4:crear los conjuntos de réplicas de fragmentos

En este paso, configuraremos 4 servidores 'centos 7' como servidor 'Shard' con 2 'Replica Set'.

  • 2 servidores:'shardsvr1 ' y 'fragmentosvr2 ' con el nombre del conjunto de réplicas:'shardreplica01 '
  • 2 servidores:'shardsvr3 ' y 'fragmentosvr4 ' con el nombre del conjunto de réplicas:'shardreplica02 '

Conéctese a cada servidor, detenga el servicio mongod (si hay un servicio en ejecución) y edite el archivo de configuración de MongoDB.

systemctl stop mongod
vim /etc/mongod.conf

Cambie el almacenamiento predeterminado a su directorio específico.

storage:
  dbPath: /data/db1

En la línea 'bindIP', cambie el valor para usar su dirección de red interna.

bindIP: 10.0.15.21

En la sección de replicación, puede usar 'shardreplica01 ' para la primera y segunda instancia. Y usa 'shardreplica02 ' para el tercer y cuarto servidor de fragmentos.

replication:
  replSetName: "shardreplica01"

A continuación, defina el rol del servidor. Usaremos todo esto como instancias de shardsvr.

sharding:
  clusterRole: shardsvr

Guardar y salir.

Ahora, cree un nuevo directorio para los datos de MongoDB.

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

Inicie el servicio mongod.

mongod --config /etc/mongod.conf

Verifique que MongoDB se esté ejecutando usando el siguiente comando:

netstat -plntu

Verá que MongoDB se está ejecutando en la dirección de red local.

A continuación, cree un nuevo conjunto de réplicas para estas 2 instancias de fragmentos. Conéctese a 'shardsvr1' y acceda al shell de mongo.

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

Inicie el conjunto de réplicas con el nombre 'shardreplica01 ', y los miembros son 'shardsvr1 ' y 'fragmentosvr2 '.

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

Si no hay ningún error, verá los resultados a continuación.

Resultados de shardsvr3 y fragmentosvr4 con el nombre del conjunto de réplicas 'shardreplica02 '.

Repita este paso para shardsvr3 y fragmentosvr4 servidores con un nombre de conjunto de réplicas diferente 'shardreplica02 '.

Ahora hemos creado 2 conjuntos de réplicas: 'shardreplica01 ' y 'fragmento de réplica02 ' - como el fragmento.

Paso 5:configurar mongos/enrutador de consultas

El 'Enrutador de consultas' o mongos son solo instancias que ejecutan 'mongos'. Puede ejecutar mongos con el archivo de configuración o ejecutar solo con una línea de comando.

Inicie sesión en el servidor mongos y detenga el servicio MongoDB.

ssh [email protected]  
systemctl stop mongod

Ejecute mongos con la línea de comando como se muestra a continuación.

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

Utilice la opción '--configdb' para definir el servidor de configuración. Si está en producción, use al menos 3 servidores de configuración.

Debería ver resultados similares a los siguientes.

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

las instancias de mongos se están ejecutando.

Paso 6:agregar fragmentos a mongos/enrutador de consultas

Abra otro shell del paso anterior, vuelva a conectarse al servidor mongos y acceda al shell mongo.

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

Agregue el servidor de fragmentos con la consulta sh mongodb.

Para 'shardreplica01 ' instancias:

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

Para 'shardreplica02 ' instancias:

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

Asegúrese de que no haya ningún error y verifique el estado del fragmento.

sh.status()

Verá un estado de fragmentación similar al que muestra la siguiente captura de pantalla.

Tenemos 2 conjuntos de réplicas de fragmentos y 1 instancia de mongos ejecutándose en nuestra pila.

Paso 7 - Prueba

Para probar la configuración, acceda al shell mongo del servidor mongos.

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

Habilitar fragmentación para una base de datos

Cree una nueva base de datos y habilite la fragmentación para la nueva base de datos.

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

Ahora vea el estado de la base de datos, se ha particionado en el conjunto de réplicas 'shardreplica01'.

Habilitar fragmentación para colecciones

A continuación, agregue nuevas colecciones a la base de datos con soporte de fragmentación. Agregaremos una nueva colección llamada 'pila' con la colección de fragmentos 'nombre', y luego veremos el estado de la base de datos y las colecciones.

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

Se han agregado nuevas colecciones 'pila' con colección de fragmentos 'nombre'.

Añadir documentos a la 'pila' de colecciones.

Ahora inserte los documentos en las colecciones. Cuando agregamos documentos a la colección en un clúster fragmentado, debemos incluir la 'clave fragmentada'.

En el siguiente ejemplo, estamos usando la clave de fragmento 'nombre ', como agregamos al habilitar la fragmentación para colecciones.

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

Como se muestra en las siguientes capturas de pantalla, los documentos se agregaron correctamente a la colección.

Si desea probar la base de datos, puede conectarse al conjunto de réplicas 'shardreplica01 ' servidor PRIMARIO y abra el shell mongo. Estoy iniciando sesión en el servidor PRIMARIO 'shardsvr2'.

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

Compruebe la base de datos disponible en el conjunto de réplicas.

show dbs
use lemp
db.stack.find()

Verá que la base de datos, las colecciones y los documentos están disponibles en el conjunto de réplicas.

MongoDB Sharded Cluster en CentOS 7 se instaló e implementó correctamente.


Cent OS
  1. Cómo implementar CDP en un servidor CentOS

  2. Cómo instalar MongoDB en CentOS 8 / RHEL 8

  3. Cómo instalar MongoDB 4.2/4.0 en CentOS 6/RHEL 6

  4. Cómo instalar MongoDB 4.4/4.2 en CentOS 7/RHEL 7

  5. Cómo instalar FlintCMS en CentOS 7

Cómo instalar un clúster Docker de Kubernetes en CentOS 7

Cómo instalar MongoDB en CentOS 8

Cómo instalar MongoDB Compass en CentOS 8

Cómo instalar MongoDB en CentOS 6

Cómo configurar un clúster de Redis en CentOS 8 - Parte 3

¿Cómo instalar Mongodb en CentOS?