En algunas circunstancias (por ejemplo, si tiene un sistema principal y uno secundario, pero las limitaciones de costo le impiden agregar otro secundario), puede optar por agregar uno mongodinstancia a un conjunto de réplicas como árbitro para votar en las elecciones.
Los árbitros son instancias que forman mongod parte de un conjunto de réplicas, pero no almacenan datos (es decir, no proporcionan redundancia de datos). Sin embargo, pueden participar en las elecciones.
Los árbitros requieren recursos mínimos y no requieren hardware dedicado. Se puede implementar un árbitro en un servidor de aplicaciones o en un host de monitorización.
Importante
No ejecutar un árbitro en sistemas que también sean los hosts de los miembros primarios o secundarios del set de réplicas.
Advertencia
Evita implementar más de un árbitro en un set de réplicas. Consulta Preocupaciones con múltiples árbitros.
Agregar un árbitro a un set de réplicas existente:
Por lo general, si hay dos o menos miembros que contengan datos en el set de réplicas, es posible que primero debas configurar el nivel de confirmación de escritura a nivel de clúster para el set de réplicas.
Consulte el nivel de confirmación de escritura para todo el clúster para obtener más información sobre por qué podría necesitar establecer el nivel de confirmación de escritura para todo el clúster.
No necesitas cambiar el nivel de confirmación de escritura a nivel de clúster antes de iniciar un nuevo set de réplicas con un árbitro.
Conjuntos de réplicas de árbitro primario-secundario
Si está utilizando una arquitectura de tres nodos de primario-secundario-árbitro (PSA), considere lo siguiente:
El nivel de confirmación de escritura
"majority"puede causar problemas de rendimiento si un secundario no está disponible o está retrasado. Para obtener consejos sobre cómo mitigar estos problemas, consulta Mitigar problemas de rendimiento con un set de réplicas de PSA autogestionado.Si estás utilizando un
"majority"global por defecto y el nivel de confirmación de escritura es menor que el tamaño de la mayoría, tus consultas pueden devolver datos obsoletos (no completamente replicados).
Árbitro
Un árbitro no almacena datos, pero hasta que el proceso mongod del árbitro se añada al set de réplicas, el árbitro actuará como cualquier otro proceso de mongod y se iniciará con un conjunto de archivos de datos y con un journalde tamaño completo.
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.
De forma predeterminada,mongod y, que están vinculados a localhost, solo aceptan conexiones de clientes que se ejecutan en el mismo equipo. Este comportamiento de vinculación incluye mongos
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
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.
Agregar un árbitro
Advertencia
Evita implementar más de un árbitro en un set de réplicas. Consulta Preocupaciones con múltiples árbitros.
Agregar un árbitro a un set de réplicas existente:
Por lo general, si hay dos o menos miembros que contengan datos en el set de réplicas, es posible que primero debas configurar el nivel de confirmación de escritura a nivel de clúster para el set de réplicas.
Consulte el nivel de confirmación de escritura para todo el clúster para obtener más información sobre por qué podría necesitar establecer el nivel de confirmación de escritura para todo el clúster.
No necesitas cambiar el nivel de confirmación de escritura a nivel de clúster antes de iniciar un nuevo set de réplicas con un árbitro.
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.
Crea un directorio de datos (por ejemplo,
storage.dbPath) para el árbitro. La instanciamongodutiliza el directorio para los datos de configuración. El directorio no contendrá el conjunto de datos. Por ejemplo, crea el directorio/var/lib/mongodb/arb:mkdir /var/lib/mongodb/arb Inicie el árbitro, especificando el directorio de datos y el nombre del conjunto de réplicas al que se unirá. A continuación, se inicia un árbitro usando como
/var/lib/mongodb/arbydbPathcomo nombrersdel conjunto de réplicas: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.
mongod --port 27017 --dbpath /var/lib/mongodb/arb --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)> Conéctese al servidor principal y agregue el árbitro al conjunto de réplicas. Utilice el método, como en el siguiente ejemplo, que asume
rs.addArb()quem1.example.netes el nombre de host asociado a la dirección IP especificada para el árbitro:rs.addArb("m1.example.net:27017") Esta operación agrega el árbitro que se ejecuta en el puerto
27017en el hostm1.example.net.