Failover mit mongodb

8

Ich muss eine Datenbank einrichten, die Failover verarbeiten kann (wenn man die andere abstürzt). Dafür habe ich mich für mongodb entschieden: Ich habe ein Replikat mit zwei Instanzen eingerichtet. Jede Instanz wird auf einer separaten VM ausgeführt. Ich habe mehrere Fragen:

  • Es wird empfohlen, mindestens drei Instanzen in einer Replikatgruppe zu verwenden. Ist es in Ordnung, nur zwei zu verwenden?

  • Ich habe zwei Instanzen und dann zwei IP-Adressen. Welche IP sollte ich meiner Anwendung geben, die in der Datenbank lesen / schreiben muss? Wenn eine Datenbank nicht verfügbar ist, wie wird die Anforderung an die Instanz weitergeleitet, die noch aktiv ist?

Einige Hilfe, um loszulegen, wäre großartig!

    
rmonjo 10.02.2013, 15:18
quelle

1 Antwort

10
  

Es wird empfohlen, mindestens drei Instanzen in einer Replikatgruppe zu verwenden. Ist es in Ordnung, nur zwei zu verwenden?

Nein, für eine Replikatgruppe sind mindestens drei Prozesse erforderlich ( Dokumente ), aber der dritte könnte sogar ein Schiedsrichter sein Es ist nicht zu empfehlen .

  

Ich habe zwei Instanzen und dann zwei IP-Adressen. Welche IP sollte ich meiner Anwendung geben, die in der Datenbank lesen / schreiben muss? Wenn eine Datenbank inaktiv ist, wie wird die Anforderung an die Instanz weitergeleitet, die noch aktiv ist?

Es gibt zwei Alternativen:

# 1 (empfohlen)

Sie geben dem Treiber alle Adressen an (nähere Informationen dazu finden Sie in den Dokumenten ). , Beispiel mit nodejs-Treiber (ähnlich wie bei den anderen). Auf diese Weise kennt der Treiber alle oder zumindest mehrere der Instanzen direkt, was Probleme verhindert, wenn alle angegebenen Instanzen ausgefallen sind (siehe # 2).

%Vor%

# 2

Sie geben dem Fahrer einen von ihnen (wahrscheinlich den primären) und mongodb wird den Rest von ihnen herausfinden. Wenn Ihre App jedoch gestartet wird, wenn die angegebene (n) Instanz (en) inaktiv sind, kann der Treiber die anderen Instanzen nicht finden und kann daher keine Verbindung zu mongodb herstellen.

    
Mattias 10.02.2013, 16:07
quelle