2011-02-08 27 views
7

Si se configura un conjunto de réplicas en Mongo con solo dos nodos, un árbitro needs to be added para garantizar que siempre haya una mayoría en una votación para un nuevo maestro. El árbitro nunca se convierte en el maestro en sí mismo, es puramente para proporcionar el voto de calidad en una elección de otra manera cuello-y-cuello.¿Debería incluirse un árbitro MongoDB en la configuración de conexión del cliente?

Al conectar un cliente (en mi caso de Java) a un grupo de MongoDB, que se supone que specify all the nodes of the cluster en la configuración de conexión:

List addrs = new ArrayList(); 
addrs.add(new ServerAddress("localhost" , 27017)); 
addrs.add(new ServerAddress("localhost" , 27018)); 

Mongo mongo = new Mongo(addrs); 

caso de que el árbitro se incluirán en la configuración de la conexión? Conjeturaría no como ellos:

no tienen una copia de los datos y nunca se convertirá en el nodo primario (o incluso una lectura secundaria)

(Tomado de here)

... ¡pero solo quería comprobarlo!

Respuesta

6

No, no debería necesitar incluir árbitros en la conexión.

Después de todo, como sospechabas, no tendría sentido que tu código intentara conectarse a uno de esos ya que no hay datos allí. Simplemente hacen sus cosas detrás de las incrustaciones para ayudar a la conmutación por error automática.

Ni siquiera tiene que especificar todos los servidores en su configuración de conexión (ni siquiera el maestro): siempre que uno de los servidores que menciona devuelva una respuesta, puede encontrar el maestro desde allí. Aunque en mi humilde opinión, cuanto más nombre, mejor, en caso de que algunos de ellos disminuyan.

1

La lista es solo una lista de semillas. Los miembros reales del conjunto de réplicas se determinan después de conectarse a uno. Podrías especificar el que está en 27017 (pero sería malo si ese estuviera abajo).

Cuestiones relacionadas