Definición
rs.add(host, arbiterOnly)Agrega un nodo a un Conjunto de réplicas. Para ejecutar el método, debe conectarse al servidor principal del conjunto de réplicas.
ParameterTipoDescripciónhoststring o documento
El nuevo nodo para agregar al set de réplicas. Especifica ya sea como una string o como un documento de configuración:
Si es un documento, especifique un documento de configuración de un miembro del conjunto de réplicas como se encuentra en el arreglo
members. Debe especificar el campohosten el documento de configuración del nodo.{ _id: <int>, host: <string>, // required arbiterOnly: <boolean>, buildIndexes: <boolean>, hidden: <boolean>, priority: <number>, tags: <document>, secondaryDelaySecs: <int>, votes: <number> } Para obtener una descripción del campo de configuración, consulte
members.Si se trata de una string, especifica el nombre de host y, opcionalmente, el número de puerto para el nuevo nodo.
arbiterOnlybooleano
opcional. Se aplica solo si el valor
<host>es una string. Sitrue, el host agregado es un árbitro.rs.add()proporciona un contenedor alrededor de algunas de las funcionalidades delreplSetReconfigcomando de base de datos y del correspondientemongoshasistenters.reconfig(). Consulta el documento Configuración del set de réplicas autogestionado para obtener la documentación completa de todas las opciones de configuración del set de réplicas.
Compatibilidad
Este método está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
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
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.
Comportamiento
rs.add() puede, en algunos casos, desencadenar una elección para la instancia principal que desconectará la shell (por ejemplo, al agregar un nuevo nodo con una prioridad más alta que la instancia principal actual). En tales casos, mongosh puede mostrar un error incluso si la operación se realiza con éxito.
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 votes y la configuración de priority mayor 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, con priority :0 y votes :0. Después, ejecuta rs.status() para asegurar que el nodo haya pasado al estado SECONDARY. Por último, usa rs.reconfig() para actualizar su prioridad y votos.
Ejemplo
Agregar un secundario a un nuevo conjunto de réplicas
Para agregar un nuevo miembro secundario con la configuración por defecto de voto y prioridad a un nuevo conjunto de réplicas, puedes llamar al método rs.add() con:
Documento de configuración de nodos
rs.add( { host: "mongodbd4.example.net:27017" } ) Nombre de host
rs.add( "mongodbd4.example.net:27017" )
Agregar un Secundario a un Set de Réplicas Existente
Agrega un nuevo miembro secundario con la configuración por defecto de votos y prioridad a un set de réplicas existente:
rs.add( { host: "mongodbd4.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 votes y la configuración de priority mayor 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, con priority :0 y votes :0. Después, ejecuta rs.status() para asegurar que el nodo haya pasado al estado SECONDARY. Por último, usa rs.reconfig() para actualizar su prioridad y votos.
Agregar un nodo de prioridad 0 a un set de réplicas
La siguiente operación añade una instancia de mongod, que se ejecuta en el host mongodb4.example.net y es accesible en el puerto por defecto 27017, como un miembro secundario de prioridad 0:
rs.add( { host: "mongodbd4.example.net:27017", priority: 0 } )
Debes especificar el campo members[n].host en el documento de configuración del nodo.
Consulta el members para ver la configuración disponible de los miembros del set de réplicas.
Añadir un árbitro a un set de réplicas
La siguiente operación agrega una instancia, que se ejecuta en el mongod host mongodb3.example.net y es accesible en el puerto predeterminado 27017 como árbitro:
Documento de configuración de nodos
rs.add( { host: "mongodb3.example.net:27017", arbiterOnly: true } ) Nombre de host
rs.add("mongodb3.example.net:27017", true)
Véase también: