Docs Menu
Docs Home
/ /
Implementar
/ / /

Implementar un Set de réplicas autogestionado

Este tutorial describe cómo crear un grupo de tres miembros. Conjunto de réplicas 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.

Esta página aborda cómo implementar un set de réplicas para implementaciones autogestionadas.

Para obtener más información sobre cómo implementar un set de réplicas para implementaciones alojadas en MongoDB Atlas, consulta Crear un clúster.

Para implementaciones de producción, deberías mantener tanta separación entre los miembros como sea posible alojando las instancias mongod en máquinas separadas. Cuando utilices máquinas virtuales para implementaciones de producción, debes colocar cada instancia mongod en un servidor host separado, atendido por circuitos de energía redundantes y rutas de red redundantes.

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.

En producción, se debe implementar cada nodo del set de réplicas en el propio equipo. Si es posible, es necesario garantizar que MongoDB escuche en el puerto por defecto de 27017.

Nota

Fuera de una actualización con sustitución gradual, todos los mongod miembros de un set de réplicas deben usar la misma versión principal de MongoDB.

Para obtener más información, consulta Arquitecturas de implementación de sets 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.

Utiliza la opción --bind_ip para asegurarte de que MongoDB escuche las conexiones de las aplicaciones en las direcciones configuradas.

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

Asegúrate de que el tráfico de red pueda pasar de manera segura entre todos los nodos del set y todos los clientes de la red.

Considere lo siguiente:

  • Se debe establecer una red privada virtual. Es necesario garantizar que la topología de la red dirija todo el tráfico entre los nodos dentro de un solo sitio a través de la red de área local.

  • Configura el control de acceso para evitar conexiones desde clientes desconocidos al set de réplicas.

  • Se deben configurar las reglas de red y del firewall de manera que los paquetes entrantes y salientes solo se permitan en el puerto por defecto de MongoDB y únicamente desde la implementación. Se debe consultar las consideraciones sobre la vinculación de IP.

Se debe garantizar que se pueda acceder a cada nodo de un set de réplicas mediante DNS o nombres de host que se puedan resolver. Se deben configurar los nombres de DNS adecuadamente o establecer el archivo /etc/hosts del sistema para que refleje esta configuració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.

Crea el directorio donde MongoDB almacena los archivos de datos antes de implementar MongoDB.

Especifica la configuraciónmongod en un archivo de configuración almacenado en /etc/mongod.conf o en una ubicación relacionada.

Para obtener más información sobre las opciones de configuración, se debe consultar Opciones de archivo de configuración autogestionado.

Este tutorial describe cómo crear un set de réplicas de tres nodos a partir de tres instancias mongod existentes que se ejecutan con 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.

1

Para cada nodo, inicia una instancia mongod con los siguientes ajustes:

  • Se debe establecer la opción replication.replSetName en el nombre del set de réplicas. Si la aplicación se conecta a más de un set de réplicas, cada set debe tener un nombre distinto.

  • Configura la opción net.bindIp al nombre de host/IP o a una lista separada por comas de nombres de host/IPs.

  • Configure cualquier otra configuración según sea apropiado para su implementación.

En este tutorial, las tres instancias mongod están asociadas con los siguientes hosts:

Set de réplicas
Nombre del host

Miembro 0

mongodb0.example.net

Miembro 1

mongodb1.example.net

Miembro 2

mongodb2.example.net

El siguiente ejemplo especifica el nombre del set de réplicas y la vinculación de ip mediante las opciones de línea de comandos --replSet y --bind_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.

mongod --replSet "rs0" --bind_ip localhost,<hostname(s)|ip address(es)>

Para <hostname(s)|ip address(es)>, se deben especificar los nombres de host y/o las direcciones IP para la instancia de mongod que los clientes remotos (incluidos los demás miembros del set de réplicas) pueden utilizar para conectarse a la instancia.

Alternativamente, también puedes especificar el replica set name y el ip addresses en un archivo de configuración:

replication:
replSetName: "rs0"
net:
bindIp: localhost,<hostname(s)|ip address(es)>

Para iniciar mongod con un archivo de configuración, especifica la ruta del archivo de configuración con la opción --config:

mongod --config <path-to-config>

En las implementaciones de producción, puedes configurar un script de inicio para administrar este proceso. Los scripts de inicio están fuera del alcance de este documento.

2

Desde la misma máquina en la que se ejecuta uno de los mongod (en este tutorial, mongodb0.example.net), inicia mongosh. Para conectarte al mongod que escucha en localhost por el puerto predeterminado 27017, simplemente ejecuta:

mongosh

Dependiendo de la ruta, es posible que debas especificar la ruta al binario mongosh.

Si tu mongod no se está ejecutando en el puerto por defecto, especifica la opción --port para mongosh.

3

Desde mongosh, ejecuta rs.initiate() en el miembro del set de réplicas 0.

Importante

Ejecute rs.initiate() en una sola instancia para el conjunto de mongod 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.

rs.initiate( {
_id : "rs0",
members: [
{ _id: 0, host: "mongodb0.example.net:27017" },
{ _id: 1, host: "mongodb1.example.net:27017" },
{ _id: 2, host: "mongodb2.example.net:27017" }
]
})

MongoDB inicia un set de réplicas, utilizando la configuración del set de réplicas por defecto.

4

Utiliza rs.conf() para mostrar el Objeto de configuración del set de réplicas:

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" : "mongodb0.example.net:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"secondaryDelaySecs" : Long(0),
"votes" : 1
},
{
"_id" : 1,
"host" : "mongodb1.example.net:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"secondaryDelaySecs" : Long(0),
"votes" : 1
},
{
"_id" : 2,
"host" : "mongodb2.example.net:27017",
"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("585ab9df685f726db2c6a840")
}
}
5

Utiliza rs.status() para identificar el primario en el set de réplicas.

Tip

Volver

Implementar

En esta página