Este procedimiento describe cómo implementar un set de réplicas en un entorno de desarrollo o pruebas. Para una implementación de producción, consulte la Tutorial Implementar un set de réplicas autogestionado.
Este tutorial describe cómo crear un set de réplicas de tres nodos a partir de tres existentesmongod instancias ejecutándose con el control de acceso desactivado.
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 sistemas de prueba y desarrollo, puedes ejecutar tus instancias mongod 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 enlazar a un host que no sea localhost (por ejemplo, Públicamente accesible) dirección IP, asegúrese de que ha protegido su clúster de accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, consulta la Lista de verificación de seguridad para implementaciones autogestionadas. Como mínimo, considera activar la autenticación y fortalecer 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 en este procedimiento crean un nuevo set 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.
Crea los directorios de datos necesarios para cada nodo 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.
Inicia tus instancias
mongoden sus propias ventanas de shell emitiendo los siguientes comandos:Advertencia
Antes de enlazar a un host que no sea localhost (por ejemplo, Públicamente accesible) dirección IP, asegúrese de que ha protegido su clúster de accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, consulta la Lista de verificación de seguridad para implementaciones autogestionadas. Como mínimo, considera activar la autenticación y fortalecer 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 nodo:
mongod --replSet rs0 --port 27018 --bind_ip localhost,<hostname(s)|ip address(es)> --dbpath /srv/mongodb/rs0-1 --oplogSize 128 Tercer nodo:
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 nodo de un set de réplicas denominado
rs0, cada una ejecutándose en un puerto distinto, y especifica la ruta a tu directorio de datos con el ajuste--dbpath. Si ya está utilizando los puertos sugeridos, seleccione puertos diferentes.Las instancias se vinculan tanto al localhost como a la dirección IP del host.
La configuración
--oplogSizereduce el espacio en disco que utiliza cada instanciamongod. [1] Esto es ideal para implementaciones de prueba y desarrollo, ya que previene la sobrecarga de tu máquina. Para más información sobre esta y otras opciones de configuración, consulta Opciones de archivos de configuración autogestionados.Conéctese a una de sus instancias
mongoda través demongosh. Deberás indicar qué instancia especificando su número de puerto. Por simplicidad y claridad, puede que quieras elegir la primera, como en el siguiente comando;mongosh --port 27017 En
mongosh, utilizars.initiate()para iniciar el set de réplicas. Puedes crear un objeto de configuración de set de réplicas en un 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") } }
Verifica el estado del set de réplicas en cualquier momento con la rs.status() operación.
Tip
La documentación de las siguientes funciones de shell para más información:
También puedes considerar el script de configuración simple como ejemplo de un set de réplicas básico configurado automáticamente.
Consulta Semántica de Lectura y Escritura de set de réplicas para 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. |