2013-07-11 3 views
0

tldr: Que dois-je faire pour utiliser une adresse IP élastique dans ma configuration de réplicas MongoDB?Comment configurer le réplicaset mongodb en utilisant des adresses IP élastiques dans EC2?

Nous avons une réplique MongoDB à trois nœuds exécutée sur EC2. Une des instances de l'ensemble a été retirée par AWS hier, et nous avons donc été contraints d'arrêter et de redémarrer l'instance EC2.

Malheureusement, lorsque nous avons configuré le réplicaset, nous étions relativement nouveaux dans AWS et nous ne savions pas que l'adresse DNS publique des instances pouvait être modifiée. Nous avons utilisé le DNS public de chaque instance dans la configuration de réplicaset et dans toutes les chaînes de connexion d'application de notre code. Après avoir lu sur le sujet hier, j'ai essayé de remettre le noeud en ligne en assignant une adresse IP élastique à l'instance et en changeant la configuration de réplicaset pour utiliser cette adresse IP. Après une certaine douleur, j'ai réussi à faire fonctionner les deux autres nœuds avec cette configuration, mais l'instance avec l'IP élastique a refusé de rejoindre la réplique, et l'erreur dans mongod.log dit:

[rsStart] replSet info self not present in the repl set configuration 

Après encore plus lecture, j'ai trouvé que je n'aurais pas dû utiliser l'adresse IP réelle élastique dans la config, mais plutôt le nom DNS public de l'IP élastique. Ma question est, avant que je prenne tout hors ligne encore pour essayer ce changement, que devrais-je exactement devoir faire pour employer l'IP élastique dans la configuration de réplicaset? J'ai trouvé quelques informations sur cette page 10Gen: http://docs.mongodb.org/ecosystem/platforms/amazon-ec2/#communication-across-regions qui m'ont fait penser que je devrais jouer avec le nom d'hôte de l'instance et/ou le fichier hosts, mais je n'ai pas réussi à trouver quelqu'un décrivant mon scénario exact.

Des pensées?

Répondre

2

Il s'est avéré être une solution assez simple; Une fois que j'ai modifié la configuration de réplicaset pour utiliser le DNS public de l'IP élastique, le nœud mongo est revenu en ligne. Je n'ai pas eu à toucher le nom d'hôte ou le fichier hosts.

+0

Cela résout également à l'IP privée interne de sorte que vous n'êtes pas facturé pour le trafic externe. – Zambonilli

0

Vous ne devez jamais utiliser un IP Elastic pour le trafic interne comme la réplication. Vous serez facturé 0,01 $/Go pour ce trafic, alors que l'utilisation de l'adresse IP interne serait gratuite.

Si vous utilisez quelque chose comme des ensembles de réplicas, vous devriez vraiment utiliser un VPC. Contrairement aux instances EC2 normales, les instances d'un VPC conservent les mêmes adresses IP privées et adresses IP Elastic même lorsqu'elles sont arrêtées.

+2

Vous pouvez vous connecter avec le DNS public, dans la région, il se résoudra à une adresse IP interne. – datasage

+0

@datasage Oui, mais comme l'a noté le PO, le DNS public peut changer si vous arrêtez l'instance. VPC corrige ce problème en veillant à ce que des adresses IP internes statiques puissent être utilisées pour configurer des éléments tels que la réplication, ainsi que pour relier automatiquement les EIP. – ceejayoz

+0

@ceejayoz Ce dont parlait le datasage, c'est le DNS public de l'IP Elastic - qui vous donne le meilleur des deux: il est statique, mais il se résout à l'IP interne dans la même région. Je suis d'accord que VPC permettrait d'atténuer ce problème, mais ce n'était pas une option lorsque nous avons lancé, et le passage à un VPC serait un projet en soi. – jamshehan

Questions connexes