Un conjunto de réplicas se define como un clúster de base de datos de múltiples nodos con replicación y conmutación por error automática configurada entre ellos. Para asegurarse de que la base de datos PRIMARY se elija correctamente, es importante tener un número impar de miembros en el conjunto (incluyendo o excluyendo el Arbiter nodo).
La base de datos seleccionada es responsable de todas las tareas principales. Procesa las operaciones de escritura entrantes y almacena su información en el oplog. Los miembros de la réplica SECONDARY pueden acceder a esta información y replicarla para aplicarla a sus propios conjuntos de datos. Como resultado, todos los servidores del conjunto representarán el mismo contenido y garantizarán su disponibilidad:

Ahora considere una situación en la que un problema inesperado (como un fallo de hardware o de conexión) hace que la base de datos primaria experimente un tiempo de inactividad. En tal caso, el sistema iniciará automáticamente un nuevo proceso de elección para restaurar el funcionamiento normal sin requerir ninguna intervención manual. El beneficio de un sistema de este tipo es que obtiene lo mejor de la replicación, como una mayor disponibilidad, redundancia de conmutación por error y recuperación ante desastres, sin tener que preocuparse por administrar múltiples bases de datos por separado.
Si desea emplear un sistema similar, este tutorial le mostrará cómo configurar un conjunto de réplicas de MongoDB con el PaaS de CloudSigma. Como verá en esta guía, utilizaremos tres miembros, lo que normalmente es suficiente para proporcionar un buen margen de seguridad de la información y rendimiento para manejar operaciones de E/S para la mayoría de las aplicaciones comunes. Junto con la configuración real de la replicación, también aprenderemos cómo preparar el entorno, configurar la autenticación entre los nodos de la base de datos y cómo asegurarnos de que su trabajo haya sido exitoso.
Paso 1: Crear un nuevo entorno
Para empezar, necesitará al menos 3 nodos de MongoDB para comenzar a configurar un conjunto de réplicas. Así que adelante y cree un nuevo entorno de la siguiente manera:

En nuestro ejemplo, estamos asignando todas las instancias de MongoDB de la versión 4.0.2 al mismo entorno. Puede cambiar el Nombre del entorno si es necesario en el espacio provisto y continuar con el proceso de instalación.
El siguiente paso en el proceso será ocuparse de la seguridad de la comunicación entre estos nodos utilizando el archivo de clave de autenticación.
Paso 2: Agregar un archivo de clave de autenticación
La autenticación es un componente crítico de cualquier replicación. Es un proceso de garantía de seguridad que solo otorga acceso a un miembro del conjunto de réplicas después de que se identifica correctamente con un archivo de clave de autenticación único. Esto mantiene sus datos a salvo de espectadores no deseados y terceros. Así es como puede generar su propio archivo de clave de autenticación:
- Haga clic en la opción Web SSH para uno de los nodos de la base de datos e inicie sesión:

2. A continuación, puede ingresar su propio archivo de clave o generar uno nuevo con openssl utilizando el siguiente comando:
|
1 |
openssl rand -base64 741 > my.key |
En este comando, 741 representa el tamaño de la clave en bytes y my.key es el nombre de la clave.
3. Es hora de distribuir el nuevo archivo de clave en todas sus instancias de MongoDB. Así es como se hace:
- Abra el File Manager haciendo clic en el botón Config al lado de cualquiera de los nodos de la base de datos:

- Busque el archivo my.key en la pestaña de configuración bajo la ruta: /home/jelastic/my.key. Ábralo y copie el contenido del archivo:

- Bajo la ruta /var/lib/jelastic/keys encontrará el directorio keys . Cree un New File que las instancias de MongoDB utilizarán para autenticar las identidades de las demás. En nuestro caso, crearemos un archivo llamado mongo-set.key:

- Pegue el contenido copiado anteriormente en este archivo y aplique los cambios haciendo clic en Save para todas las instancias:

Como resultado de este proceso, el archivo mongo-set.key se ha distribuido en todos nuestros nodos de MongoDB.
Step 3: Configure the MongoDB Replication
Ahora que hemos asegurado la seguridad de las instancias, podemos pasar a configurar realmente el conjunto de réplicas. Comencemos:
- Comience yendo a la pestaña de configuración de los nodos de MongoDB y abriendo el archivo mongo.conf en el etc carpeta. Desplácese hacia abajo hasta encontrar la sección de replicación. Descoméntela y agregue la siguiente cadena con un nombre único para su conjunto de réplicas. Para nuestro ejemplo, lo llamaremos db-replication:
|
1 |
replSetName: db-replication |

3. Haga clic en el botón correspondiente para Guardar los cambios para todas las instancias en la ventana del editor.
4. Ahora debe Reiniciar todos sus nodos de base de datos para aplicar los nuevos parámetros de configuración:

Una cosa a tener en cuenta es que una vez que haya terminado de configurar el conjunto de réplicas y esté reiniciando todos los nodos o el nodo PRIMARIO, el proceso de elección de la nueva base de datos PRIMARIA comenzará durante el reinicio.
5. Elija el servidor MongoDB que desea utilizar como PRIMARIO y acceda a él mediante el protocolo SSH:

Recuerde: una vez elegida la base de datos PRIMARIA, los demás miembros del conjunto de réplicas ya no serán accesibles para operaciones de escritura directa. Esto significa que todos los cambios y configuraciones solo se pueden realizar y aplicar en el nodo PRIMARIO actual. Por lo tanto, a menos que haya organizado prioridades, tendrá que cambiar la cadena de conexión en su aplicación al nuevo nodo PRIMARIO.
6. A continuación, acceda a la base de datos replicada utilizando sus respectivas credenciales:
|
1 |
mongo -u {user} -p {password} {DB_name} |

En este comando:
- {user} –se refiere al nombre de usuario del administrador que se enviará a su correo electrónico (normalmente es admin por defecto).
- {password} –esta es la contraseña enviada a su correo electrónico junto con el nombre de usuario correspondiente.
- {DB_name}- representa el nombre de la base de datos que desea replicar en este conjunto de réplicas (estamos usando el admin predeterminado en nuestro ejemplo).
En caso de una nueva elección, puede utilizar las mismas credenciales de usuario admin para iniciar sesión en una nueva base de datos PRIMARIA.
7. Ahora que se ha establecido la conexión, deberá ejecutar las siguientes líneas para definir los parámetros del nodo MongoDB actual e iniciar el conjunto de réplicas:
|
1 2 3 4 5 |
config = {_id : "{replica_set}", members : [{_id : 0, host:"{current_db_ip}:27017"},]} rs.initiate() |
En las líneas anteriores, sustituirá los valores entre corchetes con sus propios datos correspondientes:
- {replica_set} – este es el nombre de su grupo de bases de datos de replicación que especificó al principio de esta sección. En nuestro caso, era db-replication.
- {current_db_ip} – indica la dirección IP del contenedor de la base de datos que ha seleccionado:

En nuestro caso, las líneas ejecutadas son:
|
1 2 |
config = {_id : "db-replication", members : [{_id : 0, host:"10.100.2.182:27017"},]} |

|
1 |
rs.initiate() |

8. A continuación, ejecute el siguiente comando para todas las bases de datos restantes:
|
1 |
rs.add("{db_ip}:27017") |
Aquí, {db_ip} se refiere a la dirección IP de cada base de datos:

9. Una vez que haya agregado todos los miembros de la replicación, obtendrá un conjunto de réplicas completamente funcional. Recomendamos asegurarse de que todo se haya configurado correctamente al final del proceso. Para hacerlo, ejecute el comando: rs.status(). Esto le mostrará información completa sobre su conjunto de réplicas, de la siguiente manera:

Paso 4: Configurar el Árbitro del ReplicaSet
Recomendamos utilizar un nodo Árbitro en ciertos casos. ¿Qué es un nodo Árbitro ? Normalmente, la replicación es más confiable si el conjunto de réplicas contiene un número impar de nodos. Por lo tanto, si actualmente tiene un número par de nodos en su conjunto, puede agregar un nodo Árbitro para mantener el cuórum, ya que responde a las solicitudes de latido (heartbeat) y de elección de otros miembros del conjunto. Aquí hay algunos detalles sobre los nodos Árbitro:
- El Árbitro no almacena ningún dato; solo vota en las elecciones en caso de que otro nodo haya fallado.
- Es muy ligero y no consume demasiados recursos.
- Intercambió credenciales de usuario entre réplicas cifradas.
- Para mantener la mayor disponibilidad, intente ejecutar el Árbitro en un nodo separado.
Aquí se explica cómo puede agregar un nodo Árbitro a su conjunto de réplicas:
- Primero, realizaremos un escalado horizontal y agregaremos un nodo adicional al clúster:


2. Con el nodo agregado, necesitamos un nuevo archivo de clave. Vaya al directorio keys y cree un archivo de clave mongo-set.key. Copie el contenido de la clave de cualquiera de los nodos de base de datos configurados previamente y péguelo todo aquí como lo hicimos antes.
3. Vaya al archivo de configuración mongod.conf. Descomente la sección de replicación y agregue repISetName (es db-replication en nuestro caso). Además, diríjase a la sección security y agregue el parámetro keyFile ( /var/lib/jelastic/keys/mongo-set.key en nuestro caso).
4. Por último, reinicie el nuevo nodo para aplicar estos nuevos parámetros de configuración:

Es importante recordar que NO es necesario reiniciar todos los nodos del clúster en este momento. Solo reinicie el nodo Árbitro recién agregado. Reiniciar todos los nodos dará como resultado una nueva elección de PRIMARIO (a menos que haya especificado prioridades para seleccionar un nodo de base de datos en particular como PRIMARIO).
5. Finalmente, el Árbitro se puede agregar al conjunto de réplicas. Para hacerlo, ejecute el siguiente comando en el nodo PRIMARIO:
|
1 |
rs.addArb("{db_ip}:27017") |
Aquí, {db_ip} es la dirección IP del nuevo nodo:

6. Ahora, puede verificar para confirmar si el nuevo nodo se ha convertido o no en el Árbitro. Puede hacerlo iniciando sesión en el nuevo nodo mediante SSH y conectándose a la instancia de MongoDB con las credenciales que recibió en su correo electrónico en el momento de la creación del nodo:

Esto muestra que el nuevo nodo que acabamos de agregar al clúster está actuando como el Árbitro de db-replication. Esto asegura un quórum en cualquier situación dada, lo que hace que el conjunto de réplicas sea más confiable.
Paso 5: Probar la disponibilidad del clúster de bases de datos
A continuación, podemos configurar nuestro clúster de MongoDB para conectarnos y realizar operaciones de forma remota. En el siguiente ejemplo, nos conectaremos y ejecutaremos algunos comandos de verificación utilizando un applet PHP simple.
Para este propósito, necesitará un servidor de aplicaciones, como Apache. Puede agregar uno a su entorno como lo hicimos nosotros o crear uno nuevo en un entorno separado.
- Comience haciendo clic en Change Environment Topology y agregando el servidor:


2. Abra la pestaña Configuration Manager para el servidor Apache haciendo clic en el botón Config como se muestra a continuación:

3. Busque y abra el archivo index.php en el directorio /var/www/webroot/ROOT y pegue el siguiente código en lugar del contenido predeterminado:
|
1 |
<!--?php try{ $mongodbConnectionURI= "mongodb://{db_username}:{db_password}@node{NodeID}-{environment_domain}:27017, node{NodeID}-{environment_domain}:27017,node{NodeID}-{environment_domain}:27017,node{NodeID}-{environment_domain}:27017/?replicaSet={replica_set_name}&readPreference=primary"; $manager = new MongoDB\Driver\Manager($mongodbConnectionURI); $command = new MongoDB\Driver\Command(['ping' => 1]); $cursor = $manager->executeCommand('db', $command); $response = $cursor->toArray()[0]; var_dump($response); echo'<br><br>'; var_dump($manager->getServers()); } catch (Exception $e){ echo $e->getMessage(); } ?--> |
Los siguientes valores en el código anterior deben ser sustituidos por sus datos respectivos:
- {replica_set_name} – introduzca el nombre de su conjunto de réplicas.
- {db_username} – añada el usuario administrador de la base de datos primaria elegida (es admin por defecto).
- {db_password} – introduzca la contraseña del usuario administrador.
- {NodeID} – mencione el número de identificación del nodo correspondiente. Puede encontrarlo en el CloudSigma PaaS dashboard.
- {environment_domain} – añada el dominio del entorno. También puede encontrarlo en el panel de control de CloudSigma PaaS:

Asegúrese de especificar los ID de cada nodo en su conjunto de réplicas en la sección adecuada mongodbConnectionURI .
Al introducir los valores correspondientes y ejecutar el código se mostrará un conjunto de cadenas similar a este:

Asegúrese de Save el archivo en este punto!
4. Para que Apache interactúe con el servidor MongoDB, requiere un módulo especial. Puede añadir este módulo dentro de configs. Diríjase a la carpeta etc y abra el php.ini archivo. Localice la sección [mongodb] . Aquí, todo lo que tiene que hacer es eliminar el punto y coma antes de la línea extension=mongodb.so para habilitar esta extensión:

5. Aplique las nuevas configuraciones haciendo clic en Save en la ventana del editor. Como siempre, necesitamos reiniciar los nodos para aplicar los cambios. Haga clic en el botón Restart Nodes al lado de Application Server para hacerlo:

6. Ahora haga clic en el botón Open in Browser para probarlo:

Al hacer clic en este icono se abrirá una nueva pestaña del navegador que mostrará toda la información sobre los miembros/nodos de su conjunto de réplicas y su accesibilidad de esta manera:

Dado que utilizamos el comando ping (línea 6 del index.php ), la primera línea muestra el resultado de comprobar la disponibilidad del conjunto de réplicas:
|
1 |
object(stdClass)#11 (3) { ["ok"]=> float(1) } |
Esto significa que el conjunto de réplicas se probó con éxito.
El siguiente bloque en los resultados muestra información detallada sobre los hosts del conjunto de réplicas. Estos datos se adquieren gracias a la función getServers (línea 11 del index.php). Del mismo modo, también puede comprobar algunos valores asignados durante el proceso de creación de este conjunto de réplicas:
- host – la dirección IP de una base de datos específica.
- port – este es el puerto del miembro de replicación actual.
- [“is_primary”] y [“is_secondary”] – parámetros que indican el estado del servidor. Los valores correspondientes para el servidor MongoDB primario elegido son true, false y para los otros dos servidores MongoDB – false, true respectivamente.
Además, puede iniciar y detener nodos de bases de datos en cualquier momento para realizar un seguimiento de los cambios. También puede actualizar la página para hacer lo mismo. Esto le permite asegurarse de que su clúster de MongoDB esté siempre disponible, activo y funcionando tal como lo configuró.
CloudSigma PaaS permite a sus usuarios aprovechar las ventajas de utilizar conjuntos de réplicas sin preocuparse demasiado por la configuración y la parte del back-end. Este tutorial muestra lo sencillo que puede ser configurar su propio clúster de MongoDB con solo unos sencillos pasos. Puede obtener más información sobre MongoDB, cómo set it up for Ubuntu o public cloud servers, así como qué otras características avanzadas ofrece CloudSigma PaaS. También le invitamos a take a trial run de la PaaS de forma gratuita para familiarizarse con el dashboard y el marketplace y lo que ofrecen.
Comentarios
Aún no hay comentarios. Sea el primero.