Este procedimiento describe la implementación de un conjunto de réplicas en un entorno de desarrollo o de prueba. Para una implementación de producción, consulte Tutorial:Implementar un conjunto de réplicas autoadministradas.
Este tutorial describe cómo crear un conjunto de réplicas de tres miembros a partir de tres existentes.mongodinstancias ejecutándose con el control de acceso deshabilitado.
Para implementar un set de réplicas con control de acceso habilitado, consulta Implementar un set de réplicas autogestionado con autenticación mediante archivo de claves. Si deseas implementar un set de réplicas desde una única instancia de MongoDB, consulta Convertir un mongod autónomo autogestionado en un set de réplicas. Para obtener más información sobre las implementaciones de sets de réplicas, consulta la documentación de Replicación y Arquitecturas de implementación de sets de réplicas.
Overview
Tres sets de réplicas de nodos proporcionan suficiente redundancia para sobrevivir a la mayoría de las particiones de red y otros fallos del sistema. Estos sets también tienen suficiente capacidad para muchas operaciones de lectura distribuidas. Los set de réplicas siempre deben tener un número impar de nodos. Esto asegura que las elecciones se lleven a cabo sin inconvenientes. Para obtener más información sobre el diseño de sets de réplicas, consulte la descripción general de la Replicación.
Requisitos
Para los sistemas de prueba y desarrollo, puede ejecutar sus instancias en un sistema local o dentro de una instancia mongod virtual.
Antes de poder implementar un set de réplicas, se debe instalar MongoDB en cada sistema que formará parte del set de réplicas. Si aún no se ha instalado MongoDB, se deben consultar los tutoriales de instalación.
Cada nodo debe poder conectarse con todos los demás nodos. Para obtener instrucciones sobre cómo verificar la conexión, se debe consultar Probar conexiones entre todos los nodos.
Considerations
Importante
Para evitar actualizaciones de configuración debido a cambios en las direcciones IP, utilice nombres de host DNS en lugar de direcciones IP. Es particularmente importante usar un nombre de host DNS en lugar de una dirección IP al configurar miembros de set de réplicas o miembros de clústeres particionados.
Utiliza nombres de host en lugar de direcciones IP para configurar clústeres en un horizonte de red dividido. A partir de MongoDB 5.0, los nodos que solo están configurados con una dirección IP no pasan la validación de inicio y no se inician.
Asociación de IP
Advertencia
Antes de vincular una dirección IP que no sea local (por ejemplo, de acceso público), asegúrese de proteger su clúster contra accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, consulte la Lista de verificación de seguridad para implementaciones autogestionadas. Como mínimo, considere habilitar la autenticación y reforzar la infraestructura de red.
Los binarios de MongoDB, mongod y mongos, se enlazan a localhost por defecto. Si se establece el ajuste del archivo de configuración net.ipv6 o la opción de línea de comandos --ipv6 para el binario, el binario se vincula además a la dirección IPv6 de localhost.
Por defecto, mongod y mongos que están vinculados a localhost solo aceptan conexiones de clientes que se ejecutan en el mismo ordenador. Este comportamiento de vinculación incluye mongosh y otros nodos del set de réplicas o clúster. Los clientes remotos no pueden conectarse a binarios que están vinculados únicamente a localhost.
Para anular la vinculación por defecto y enlazar a otras direcciones IP, utiliza la configuración del archivo de configuración net.bindIp o la opción de línea de comandos --bind_ip para especificar una lista de nombres de host o direcciones IP.
Advertencia
Por ejemplo, la siguiente instancia de mongod se vincula tanto al localhost como al nombre de host My-Example-Associated-Hostname, que está asociado con la dirección IP 198.51.100.1:
mongod --bind_ip localhost,My-Example-Associated-Hostname
Para conectarse a esta instancia, los clientes remotos deben especificar el nombre de host o su dirección IP asociada 198.51.100.1:
mongosh --host My-Example-Associated-Hostname mongosh --host 198.51.100.1
En esta implementación de prueba, los tres miembros se ejecutan en la misma máquina.
Nomenclatura del set de réplicas
Importante
Estas instrucciones solo deben usarse para implementaciones de prueba o desarrollo.
Los ejemplos de este procedimiento crean un nuevo conjunto de réplicas llamado rs0.
Si la aplicación se conecta a más de un set de réplicas, cada set debe tener un nombre distinto. Algunos drivers agrupan las conexiones del set de réplicas por nombre del set de réplicas.
Procedimiento
Importante
Para evitar actualizaciones de configuración debido a cambios en las direcciones IP, utilice nombres de host DNS en lugar de direcciones IP. Es particularmente importante usar un nombre de host DNS en lugar de una dirección IP al configurar miembros de set de réplicas o miembros de clústeres particionados.
Utiliza nombres de host en lugar de direcciones IP para configurar clústeres en un horizonte de red dividido. A partir de MongoDB 5.0, los nodos que solo están configurados con una dirección IP no pasan la validación de inicio y no se inician.
Cree los directorios de datos necesarios para cada miembro emitiendo un comando similar al siguiente:
mkdir -p /srv/mongodb/rs0-0 /srv/mongodb/rs0-1 /srv/mongodb/rs0-2 Esto creará directorios llamados "rs0-0", "rs0-1" y "rs0-2", que contendrán los archivos de base de datos de las instancias.
Inicie sus instancias en sus propias ventanas de shell emitiendo los siguientes
mongodcomandos:Advertencia
Antes de vincular una dirección IP que no sea local (por ejemplo, de acceso público), asegúrese de proteger su clúster contra accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, consulte la Lista de verificación de seguridad para implementaciones autogestionadas. Como mínimo, considere habilitar la autenticación y reforzar la infraestructura de red.
Primer miembro:
mongod --replSet rs0 --port 27017 --bind_ip localhost,<hostname(s)|ip address(es)> --dbpath /srv/mongodb/rs0-0 --oplogSize 128 Segundo miembro:
mongod --replSet rs0 --port 27018 --bind_ip localhost,<hostname(s)|ip address(es)> --dbpath /srv/mongodb/rs0-1 --oplogSize 128 Tercer miembro:
mongod --replSet rs0 --port 27019 --bind_ip localhost,<hostname(s)|ip address(es)> --dbpath /srv/mongodb/rs0-2 --oplogSize 128 Esto inicia cada instancia como miembro de un conjunto de réplicas
rs0llamado, cada una ejecutándose en un puerto distinto, y especifica la ruta a su directorio de datos con la configuración. Si ya utiliza los puertos sugeridos, seleccione--dbpathotros.Las instancias se vinculan tanto al host local como a la dirección IP del host.
La
--oplogSizeconfiguración reduce el espacio en disco quemongodutiliza cadainstancia.1 [] Esto es ideal para implementaciones de prueba y desarrollo, ya que evita la sobrecarga del equipo. Para obtener más información sobre esta y otras opciones de configuración, consulte Opciones del archivo de configuración autoadministrado.Conéctese a una de sus
mongodinstanciasmongosha través de. Deberá indicar cuál instancia especificando su número de puerto. Para mayor simplicidad y claridad, puede elegir la primera, como en el siguiente comando:mongosh --port 27017 En
mongosh, users.initiate()para iniciar el conjunto de réplicas. Puede crear un objeto de configuración de conjunto de réplicas en el entornomongosh, como en el siguiente ejemplo:rsconf = { _id: "rs0", members: [ { _id: 0, host: "<hostname>:27017" }, { _id: 1, host: "<hostname>:27018" }, { _id: 2, host: "<hostname>:27019" } ] } sustituyendo
<hostname>por el nombre de host de su sistema y luego pasando el archivorsconfars.initiate()de la siguiente manera:rs.initiate( rsconf ) Muestra la configuración de réplica actual emitiendo el siguiente comando:
rs.conf() El objeto de configuración del set de réplicas se asemeja al siguiente:
{ "_id" : "rs0", "version" : 1, "protocolVersion" : Long(1), "members" : [ { "_id" : 0, "host" : "<hostname>:27017", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 1, "tags" : { }, "secondaryDelaySecs" : Long(0), "votes" : 1 }, { "_id" : 1, "host" : "<hostname>:27018", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 1, "tags" : { }, "secondaryDelaySecs" : Long(0), "votes" : 1 }, { "_id" : 2, "host" : "<hostname>:27019", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 1, "tags" : { }, "secondaryDelaySecs" : Long(0), "votes" : 1 } ], "settings" : { "chainingAllowed" : true, "heartbeatIntervalMillis" : 2000, "heartbeatTimeoutSecs" : 10, "electionTimeoutMillis" : 10000, "catchUpTimeoutMillis" : -1, "getLastErrorModes" : { }, "getLastErrorDefaults" : { "w" : 1, "wtimeout" : 0 }, "replicaSetId" : ObjectId("598f630adc9053c6ee6d5f38") } }
Verifique el estado de su conjunto de réplicas en cualquier momento con la rs.status() operación.
Tip
La documentación de las siguientes funciones de shell para obtener más información:
También puede considerar el script de configuración simple como un ejemplo de un conjunto de réplicas básico configurado automáticamente.
Consulte Semántica de lectura y escritura del conjunto de réplicas para obtener una explicación detallada de la semántica de lectura y escritura en MongoDB.
| [1] | El oplog puede crecer más allá de su límite de tamaño configurado para evitar borrar el majority commit point. |