web-dev-qa-db-fra.com

Ajout de membres au jeu de répliques sur MongoDb

J'essaie de créer un jeu de réplicas avec MongoDb. Les noms d'hôte des serveurs sont les suivants:

nomhôte nomhôte-1 nomhôte-2

Chacun de ces noms contient tous les noms d’hôte pertinents détaillés dans leur fichier/etc/hosts (ils exécutent tous Ubuntu 10.04 64 bits).

Quand je fais un rs.initiation sur un noeud, tout semble bien commencer. Lancer rs.status (); spectacles:

{
    "set" : "vega",
    "date" : ISODate("2012-01-22T19:15:55Z"),
    "myState" : 1,
    "members" : [
        {
            "_id" : 0,
            "name" : "hostname:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "optime" : {
                "t" : 1327254848000,
                "i" : 1
            },
            "optimeDate" : ISODate("2012-01-22T17:54:08Z"),
            "self" : true
        }
    ],
    "ok" : 1
}

Le problème survient lorsque j'essaie d'ajouter un nouveau membre au jeu de réplicas. J'utilise la commande rs.add (nom_hôte-1); et j'obtiens l'erreur suivante:

{
    "assertion" : "need most members up to reconfigure, not ok : vega-1:27017",
    "assertionCode" : 13144,
    "errmsg" : "db assertion failure",
    "ok" : 0
}

J'ai essayé de nombreuses combinaisons en utilisant le nom d'hôte, l'adresse IP, avec et sans le numéro de port et j'ai toujours le même problème. Le nom d’hôte est en train de se résoudre, j’ai essayé d’envoyer une requête ping à l’hôte-1 et cela fonctionne bien.

Quelqu'un a-t-il une idée de ce qui pourrait causer ce problème?

Malheureusement, dans la documentation de Mongo, il n’existe aucun exemple de configuration d’un jeu de réplicas dans le scénario du monde réel, mais seulement trois instances sur une même machine, ce qui est clairement inutile.

Merci d'avance pour votre aide!

20
sicr

Supprimez ceci dans votre configuration:

bind_ip = 127.0.0.1

Cette option est actuellement incompatible avec les jeux de réplicas mongodb.

14

Cette erreur se produit lorsque vous ajoutez des nœuds qui ne sont pas (encore) "up". Il semble que "nom d'hôte-1" soit inaccessible (pas dans/etc/hosts, pas de DNS) ou qu'il soit accessible mais n'exécute pas mongodb avec le jeu de paramètres de configuration replSet.

10
phatduckk
 {
 "errmsg": "exception: la plupart des membres doivent être reconfigurés, mais pas ok: serveur2: 27017", 
 "code": 13144, 
 " ok ": 0 
} 

J'ai rencontré l'erreur ci-dessus dans Mongo 2.4.9. Mon erreur ici est que je n'ai pas spécifié replSet dans la configuration mongo du nouveau membre de réplica. rs.add("server2:27017") a bien fonctionné après.

3
user241

Malheureusement, dans la documentation de Mongo, il n’existe aucun exemple de configuration d’un jeu de réplicas dans le scénario réel, mais trois instances sur la même machine sont clairement inutiles.

D'accord, c'est assez pauvre. Cet exemple devrait être complètement supprimé de la documentation.

Il existe un autre moyen de démarrer un jeu de réplicas en utilisant la commande rs.configure(). Vous pouvez également spécifier les trois nœuds à la fois, puis émettre la rs.inititiate().

Voir ici pour un exemple de spécification de tous les nœuds avant le lancement.

Voir ici pour plus de détails sur les différentes commandes.

2
Gates VP
2
Shimon Doodkin

Vous devrez peut-être vérifier que mongodb est en cours d'exécution sur le deuxième nœud avant d'ajouter le deuxième nœud au nœud 1. S'il exécute rs.add (), puis vérifiez rs.status ().

0
user3375540