Overview
Este tutorial explica cómo añadir un nodo adicional a un existente set de réplicas. Para obtener información básica sobre los patrones de implementación de replicación, consulta el documento Arquitecturas de implementación de set de réplicas.
Nodos votantes máximos
Un conjunto de réplicas puede tener un máximo de siete nodos con derecho a voto. Para agregar un miembro a un set de réplicas que ya tiene siete miembros con derecho a voto, se debe agregar el miembro como miembro sin derecho a voto o remover un voto de un existing member.
script de inicio
En implementaciones de producción, puedes configurar un script de inicio para gestionar los procesos de los nodos.
Miembros existentes
Puedes utilizar estos procedimientos para agregar nuevos nodos a un set de réplicas existente.
Advertencia
Cada nodo de set de réplicas debe pertenecer a un único set de réplicas. Los nodos de un set de réplicas no pueden pertenecer a más de un set de réplicas.
Restaurar a antiguos miembros
Puede utilizar estos procedimientos para volver a agregar un nodo que fue eliminado.
Si los datos del nodo eliminado son relativamente recientes, el nodo se recupera y se pone al día con el resto del conjunto de réplicas.
Importante
Evite crear nuevas colecciones replicadas en el nodo eliminado mientras esté en modo autónomo. Si el nodo autónomo se reincorpora al set de réplicas, las operaciones posteriores en la nueva colección producen un error.
archivos de datos
Si tienes una copia de seguridad o un snapshot de un nodo existente, puedes mover los archivos de datos (por ejemplo, el directorio dbPath) a un nuevo sistema y utilizarlos para iniciar rápidamente un nuevo nodo. Los archivos deben ser:
Una copia válida de los archivos de datos de un nodo del mismo set de réplicas. Consulta el documento Respalda una implementación autogestionada con snapshots del sistema de archivos para obtener más información.
Importante
Utiliza siempre snapshots del sistema de archivos para crear una copia de un nodo del set de réplicas existente. No usen
mongodumpymongorestorepara crear un nuevo set de réplicas.Más reciente que la operación más antigua en el oplog del primario. El nuevo nodo debe poder volverse actual aplicando operaciones del registro oplog del primario.
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.
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
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
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.
Requisitos
Un set de réplicas activo.
Un nuevo sistema de MongoDB capaz de admitir tu conjunto de datos, accesible por el set de réplicas activo a través de la red.
De lo contrario, se debe utilizar el tutorial de instalación de MongoDB y los tutoriales Implementar un set de réplicas autogestionado.
Procedimientos
Prepárese el directorio de datos
Antes de agregar un nuevo nodo a un set de réplicas existente, prepara el directorio de datos del nuevo nodo usando una de las siguientes estrategias:
Asegúrese de que el directorio de datos del nuevo nodo no contenga datos. El nuevo nodo copiará los datos de un nodo existente.
Si un nuevo nodo está en un estado recuperando, debe salir y convertirse en secundario antes de que MongoDB pueda copiar todos los datos como parte del proceso de replicación. Este proceso lleva tiempo, pero no requiere la intervención de un administrador.
Copie manualmente el directorio de datos de un nodo existente. El nuevo nodo se convierte en un nodo secundario y se pondrá al día con el estado actual del set de réplicas. Copiar los datos puede acortar el tiempo que tarda el nuevo nodo en estar al día.
Asegúrese de poder copiar el directorio de datos al nuevo nodo y comenzar la replicación dentro de la ventana permitida por el oplog. De lo contrario, la nueva instancia tendrá que realizar una sincronización inicial, que vuelve a sincronizar completamente los datos, como se describe en Volver a sincronizar un nodo de un set de réplicas autogestionado.
Utiliza
rs.printReplicationInfo()para verificar el estado actual de los miembros del set de réplicas con respecto al oplog.
Para obtener información de fondo sobre los patrones de implementación de la replicación, consulte el documento Arquitecturas de implementación para sets de réplicas.
Añadir un nodo a un conjunto de réplicas existente
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.
Inicie la nueva instancia
mongod. Especifique el directorio de datos y el nombre del set de réplicas. El siguiente ejemplo especifica el directorio de datos/srv/mongodb/db0y el set de réplicasrs0:mongod --dbpath /srv/mongodb/db0 --replSet rs0 --bind_ip localhost,<hostname(s)|ip address(es)> 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.
Para obtener más información sobre las opciones de configuración, consulte la página del manual
mongod.Nota
Opcional
Puedes especificar el directorio de datos, el nombre del set de réplicas y la vinculación de IP en el archivo de configuración de
mongod.conf, e iniciar elmongodcon el siguiente comando:mongod --config /etc/mongod.conf Conéctate al primario del set de réplicas.
Solo se pueden añadir nodos cuando estés conectado al primario. Si no sabes cuál nodo es el primario, inicia sesión en cualquier nodo del set de réplicas y emite el comando
db.hello().Usa
rs.add()para añadir el nuevo nodo al set de réplicas. Pase elmember configuration documental método. Por ejemplo, para añadir un nodo en el hostmongodb3.example.net, ejecuta el siguiente comando:rs.add( { host: "mongodb3.example.net:27017" } ) Advertencia
Antes de MongoDB 5.0, un nuevo secundario añadido aún cuenta como nodo con derecho a voto incluso aunque no pueda servir lecturas ni convertirse en primario hasta que sus datos sean coherentes. Si tienes una versión de MongoDB anterior a la 5.0 y agregas un secundario con su
votesy la configuración deprioritymayor a cero, esto puede llevar a una situación en la que la mayoría de los nodos con derecho a voto estén en linea pero no se pueda elegir un primario. Para evitar estas situaciones, considera añadir el nuevo arrendatario secundario, inicialmente, conpriority :0yvotes :0. Después, ejecutars.status()para asegurar que el nodo haya pasado al estadoSECONDARY. Por último, usars.reconfig()para actualizar su prioridad y votos.