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.
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 sistemas de prueba y desarrollo, puede ejecutar su mongod
instancias en un sistema local o dentro de una instancia 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 la instancia a una dirección IP de acceso público, se debe asegurar el clúster contra accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, se debe consultar Checklist de seguridad para implementaciones autogestionadas. Como mínimo, se debe considerar 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.
De forma predeterminada,mongod y, que están vinculados a localhost, solo aceptan conexiones de clientes que se ejecutan en el mismo equipo. Este comportamiento de vinculación incluye mongos
mongosh y otros miembros de su conjunto de réplicas o clúster fragmentado. Los clientes remotos no pueden conectarse a archivos binarios vinculados únicamente al host local.
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
A partir de MongDB 5.0, los nodos DNS de horizonte dividido que solo están configurados con una dirección IP fallan en la validación de inicio y reportan un error. Consulta disableSplitHorizonIPCheck.
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 la instancia a una dirección IP de acceso público, se debe asegurar el clúster contra accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, se debe consultar Checklist de seguridad para implementaciones autogestionadas. Como mínimo, se debe considerar 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. |