Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Implementar un set de réplicas autogestionado para pruebas y desarrollo

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.

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.

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.

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.

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.

Por defecto, mongod y mongos que están vinculados a localhost solo aceptan conexiones de clientes que se ejecutan en el mismo equipo. Este comportamiento de vinculación incluye 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.

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.

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.

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

  2. Inicia tus instancias mongod en sus propias ventanas de shell emitiendo los siguientes comandos:

    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 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 --oplogSize reduce el espacio en disco que utiliza cada instancia mongod. [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.

  3. Conéctese a una de sus instancias mongod a través de mongosh. 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
  4. En mongosh, utiliza rs.initiate() para iniciar el set de réplicas. Puedes crear un objeto de configuración de set de réplicas en un entorno mongosh, 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 archivo rsconf a rs.initiate() de la siguiente manera:

    rs.initiate( rsconf )
  5. 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.

Volver

Implementar un set de réplicas

En esta página