Mongos Installation / Einrichtung in Elastic Beanstalk

8

Wenn wir beim Sharding die Straße hinunter schauen, hätten wir gerne mehrere Mongos-Instanzen. Die Empfehlung scheint zu sein, Mongos auf jeden Anwendungsserver zu legen. Ich dachte, ich würde sie einfach auf ihren eigenen Servern ausbalancieren, aber dieser Artikel Ссылка zeigt an, dass ein Problem damit besteht.

Ich habe es also wieder auf den Anwendungsservern. Wir verwenden jedoch Elastic Beanstalk. Ich könnte Mongo als Paketinstallation installieren. Aber das schafft ein Problem mit Mongos. Ich konnte nicht herausfinden, wie man ein mongos-Startup mit der mongodb.conf-Datei macht. Bei replizierten Servern oder Konfigurationsservern können zusätzliche Einträge in der conf-Datei dazu führen, dass sie wie gewünscht gestartet wird. Aber das kann ich mit Mongos nicht machen. Wenn ich Mongo installiere, startet es tatsächlich als mongodb. Ich muss dieses Verhalten beenden und es als Mongos starten, auf meine Konfigurationsserver zeigen.

Ich kann nur an Folgendes denken:

Töte das mongodb-Startskript, das die Datenbank im 'normalen' Modus automatisch startet. Erstellen Sie ein neues Upstart-Skript, das mongos startet und auf die Konfigurationsserver zeigt.

Irgendwelche Gedanken dazu? Oder weiß jemand, ob ich nur stumpf bin, und ich kann eine neue mongodb.conf-Datei auf Bohnenstange kopieren, die den Server als Mongo startet?

Wir haben nicht vor, dies sofort zu tun, aber wir müssen uns etwas vorbereiten, als ob ich die Teile nicht an Ort und Stelle hätte. Ich muss meine Bohnenstangen-Server nachher komplett neu aufbauen. Ich würde mich lieber bereit machen, wenn die ganze Software installiert ist.

    
CargoMeister 13.11.2013, 18:00
quelle

2 Antworten

28

Ich habe einen Ordner namens ".expextensions" und eine Datei namens "aws.config" erstellt. Der Inhalt dieser Datei ist wie folgt: -

%Vor%

Was diese Datei macht ist: -

Führt 4 Containerbefehle aus (diese werden ausgeführt, nachdem der Server erstellt wurde, aber bevor der WAR bereitgestellt wird. Dies sind: -

  1. Root-Zugriff aktivieren - dies ist erforderlich für "sudo" -Befehle afaik.
  2. Mongo installieren - Installiere Mongo als Dienst mit dem Befehl yum. Wir brauchen nur "Mongos", aber das ist noch nicht vom Mongo-Server getrennt. Das kann sich in Zukunft ändern.
  3. Ändere die Konfiguration für mongod auf "off" - das bedeutet, wenn der Server neu gestartet wird, wird das mongod-Programm nicht ausgeführt, wenn der Server neu gestartet wird.
  4. Erstellen Sie ein Skript, um mongos auszuführen. Notieren Sie sich die $ MONGO_CONFIG_IPS in Schritt 4, die Sie über die Konfigurationsseite in Elastic Beanstalk übergeben können. Dies wird bei einem Neustart des Servers ausgeführt.
  5. Legen Sie Berechtigungen zum Ausführen fest. Dieser Grund, den ich 4/5 im Gegensatz zu dem Eintragen in einen files: Abschnitt gemacht habe, ist, dass es die IP Adressen nicht von der Umgebungsvariablen verursachte.
  6. Führen Sie das in Schritt 4 erstellte Skript aus.

Das funktioniert für mich. Meine WAR-Datei verbindet sich einfach mit localhost und der gesamte Datenverkehr läuft über den Router. Ich bin ein paar Tage darüber gestolpert, da die Dokumentation in Amazon AWS und MongoDB ziemlich schlank ist.

Ссылка

AKTUALISIEREN : - Wenn Sie Probleme mit meiner alten Antwort haben, versuchen Sie Folgendes: Sie funktioniert für Version 3 von Mongo und wird derzeit in unserem MongoDB-Produktionscluster verwendet.

Diese Version ist insofern fortgeschritten, als sie internes DNS verwendet (via AWS Route53) - beachte mongo-cfg1.internal ... . Dies ist empfohlene Best Practices und es lohnt sich, Ihre private Zone mit Route53 einzurichten. Das heißt, wenn es ein Problem mit einer der MongoDB Config-Instanzen gibt, können Sie die defekte Instanz ersetzen und die private IP-Adresse in Route53 aktualisieren - in jedem elastischen Bohnenrank sind keine Aktualisierungen erforderlich, was wirklich cool ist. Wenn Sie jedoch keine Zone erstellen möchten, können Sie einfach die IP-Adressen in configDB -Attribut einfügen (wie in meinem ersten Beispiel).

%Vor%     
bobmarksie 14.11.2013, 16:32
quelle
6

Ich konnte @ bobmarksies Lösung nicht zum Laufen bringen, aber dank anowak und avinci hier Diese .ebextensions/aws.config -Datei:

%Vor%     
ErichBSchulz 31.10.2015 06:59
quelle

Tags und Links