Docs Menu
Docs Home
/ /
Implementar
/ / /

Implementar un conjunto de réplicas autogestionadas para pruebas y desarrollo

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.

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

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

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

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

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

    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 rs0 llamado, 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 --dbpath otros.

    Las instancias se vinculan tanto al host local como a la dirección IP del host.

    La --oplogSize configuración reduce el espacio en disco que mongod utiliza 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.

  3. Conéctese a una de sus mongod instancias mongosh a 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
  4. Enmongosh, 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 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")
    }
    }

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.

Volver

Reemplazar a un miembro

En esta página