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

Cómo instalar 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 hacer una escala horizontal de datos, particionar datos en instancias independientes y puede ser 'Conjuntos de réplica'. La partición de conjuntos de datos en 'fragmentación' utiliza una clave de fragmento. La fragmentación le permite agregar más máquinas según el crecimiento de los datos en su pila.

fragmentación y replicación

Hagámoslo simple. Cuando tenga colecciones de música, 'Sharding' guardará y mantendrá sus colecciones de música en una carpeta diferente. La 'replicación', por otro lado, es simplemente sincronizar tus 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, 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 las instancias 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

Para 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:

reboot

Paso 2:instalar MongoDB en todas las instancias

Usaremos el último MongoDB (MongoDB 3.4) para todas las instancias. Agregue un nuevo repositorio MongoDB ejecutando los siguientes comandos:

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 comando yum a continuación.

sudo yum -y install mongodb-org

Después de instalar mongodb, use 'mongo ' o 'mongod ' comando de la siguiente manera para verificar los detalles de la versión.

mongod --version

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

En la sección de 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 siguiente comando systemctl.

systemctl stop mongod

Edite la configuración predeterminada de mongodb 'mongod.conf '.

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 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 los permisos de propiedad de ese directorio al usuario 'mongod'.

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

A continuación, inicie el servicio mongod con el siguiente comando.

mongod --config /etc/mongod.conf

Puede verificar que el servicio mongod se esté ejecutando en el puerto 27017 con el comando netstat.

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 el 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 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 y detenga el servicio mongod (si el servicio se está ejecutando) 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 a 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

Compruebe si MongoDB se está ejecutando con 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 como se muestra a continuación.

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

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

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

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 ejecutarlo 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 el siguiente comando.

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.

Verá los resultados a continuación.

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 5, conéctese al servidor mongos nuevamente y acceda al shell mongo.

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

Agregar servidor de fragmentos con 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()

Fragmentará el estado como se muestra en 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

Ahora probaremos el servidor MongoDB habilitando la fragmentación y luego agregaremos documentos.

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'.

Puede utilizar un ejemplo a continuación. 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"],
})

Los documentos se agregaron correctamente a la colección, como se muestra en la siguiente captura de pantalla.

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.

El clúster fragmentado de MongoDB en CentOS 7 se instaló e implementó correctamente.


Cent OS
  1. Cómo instalar MongoDB en CentOS 8

  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 MongoDB Compass en CentOS 8

Cómo instalar MongoDB en CentOS 6

Cómo instalar MongoDB en CentOS 7

¿Cómo instalar MongoDB versión 4.0 en Centos 7?

¿Cómo instalar Mongodb en CentOS?

Cómo instalar el clúster de Kubernetes en CentOS 8