1

Weiter unten finden Sie die docker-compose.yml-Dateien.Ändern der Führung des Zoowärterclusters, wenn der Anführer stirbt

Voraussetzungen:

I beginnen 3 zookeeper Servern als einen Cluster mit Andockfensters-komponieren (Andockfensters-compose.yml, 3 zookeepers), dann fügt man einen 4. ein (andere docker- compose.yml, 1 zoekeeper) zum Cluster. Einer der ersten 3 Tierpfleger ist der Anführer, der 4. einer ist wie erwartet ein Follower.

Problem:

Als ich die ersten drei Tierpfleger (mittels docker-compose down) aufhören, ich „verlieren“ die Führer und ich erwarte, dass der 4. zookeeper die Führung zu übernehmen.

Das einzige, was passiert ist, dass zookeeper Fehler zeigt, z.B .:

WARN Cannot open channel to 3 at election address localhost/127.0.0.1:43888 
java.net.ConnectException: Connection refused 

Doing echo stat | nc localhost 52181 | grep Mode zuvor Modus follower für diese letzte zookeeper zurückgekehrt und gibt nichts zurück.

Der noch runnng zookeeper Server nur sagt, zum Beispiel:

INFO Closed socket connection for client /127.0.0.1:43548 (no session established for client) (org.apache.zookeeper.server.NIOServerCnxn) 

Lösung 1:

  • Zunehmende Fristen nicht helfen, das gleiche Resultat:

    ZOOKEEPER_TICK_TIME: 4000

    ZOOKEEPER_INIT_LIMIT: 30

    ZOOKEEPER_SYNC_LIMIT: 15

Lösung 2:

  • Der andere Weg aorund:

Wenn ich die einzelnen zookeeper Server zuerst starten (ohne die anderen bereits laufenden), es gibt nur Fehlermeldungen (siehe Fehler oben) und offensichtlich ist nicht runni ng richtig seit echo stat | nc localhost 52181 | grep Mode gibt wieder nichts zurück.

Wenn ich dann die anderen 3 Tierpfleger zum Cluster hinzufüge, läuft alles gut und der erste Tierpfleger-Server ist der leader.

Das Töten des ersten Tierpflegers lässt 3 laufen und einer von ihnen ist der neue leader.

Frage:

  • Ich erwarte, dass in dem Cluster einen einzelnen zookeeper verlassen macht es zum 'Führer'.
  • Es funktioniert "andersherum" wie in Lösung 2 beschrieben (aber dann nicht einer, sondern drei Tierpfleger laufen, nur einer wird getötet).
  • Warum funktioniert es nicht wie in dem Problem beschrieben, den einzelnen Tierpfleger als Leiter oder als einzeln arbeitender Tierpfleger-Server verlassen?

Docker-compose.yml Dateien:

Ich beginne 3 zookeeper Server mit Docker-compose und die folgende Docker-compose.yml:

--- 
version: '2' 
services: 
    zookeeper_1: 
    image: confluentinc/cp-zookeeper:3.1.1 
    network_mode: host 
    environment: 
     ZOOKEEPER_SERVER_ID: 1 
     ZOOKEEPER_CLIENT_PORT: 22181 
     ZOOKEEPER_TICK_TIME: 2000 
     ZOOKEEPER_INIT_LIMIT: 5 
     ZOOKEEPER_SYNC_LIMIT: 2 
     ZOOKEEPER_SERVERS: localhost:22888:23888;localhost:32888:33888;localhost:42888:43888;localhost:52888:53888 
    zookeeper_2: 
    image: confluentinc/cp-zookeeper:3.1.1 
    network_mode: host 
    environment: 
     ZOOKEEPER_SERVER_ID: 2 
     ZOOKEEPER_CLIENT_PORT: 32181 
     ZOOKEEPER_TICK_TIME: 2000 
     ZOOKEEPER_INIT_LIMIT: 5 
     ZOOKEEPER_SYNC_LIMIT: 2 
     ZOOKEEPER_SERVERS: localhost:22888:23888;localhost:32888:33888;localhost:42888:43888;localhost:52888:53888 
    zookeeper_3: 
    image: confluentinc/cp-zookeeper:3.1.1 
    network_mode: host 
    environment: 
     ZOOKEEPER_SERVER_ID: 3 
     ZOOKEEPER_CLIENT_PORT: 42181 
     ZOOKEEPER_TICK_TIME: 2000 
     ZOOKEEPER_INIT_LIMIT: 5 
     ZOOKEEPER_SYNC_LIMIT: 2 
     ZOOKEEPER_SERVERS: localhost:22888:23888;localhost:32888:33888;localhost:42888:43888;localhost:52888:53888 

Der I Start a 4. auf die gleiche Weise:

--- 
version: '2' 
services: 
    zookeeper_4: 
    image: confluentinc/cp-zookeeper:3.1.1 
    network_mode: host 
    environment: 
     ZOOKEEPER_SERVER_ID: 4 
     ZOOKEEPER_CLIENT_PORT: 52181 
     ZOOKEEPER_TICK_TIME: 2000 
     ZOOKEEPER_INIT_LIMIT: 5 
     ZOOKEEPER_SYNC_LIMIT: 2 
     ZOOKEEPER_SERVERS: localhost:22888:23888;localhost:32888:33888;localhost:42888:43888;localhost:52888:53888 

Antwort

2

eine Sache zu beachten: Zoowärter wird nur angezeigt, wenn die Mehrheit der Server läuft. Wenn Sie also 4 Server haben und 3 davon herunterbringen, erscheint der Tierpfleger nur, wenn Sie zwei weitere starten.

Welche Version von zookee verwenden Sie? Wenn es vor Version 3.5 oder (Sie verwenden 3.5 und nicht die Befehle reconfig verwenden), müssen Sie Server neu starten, wenn Sie Konfigurationen ändern.

+0

Das hat mich in die richtige Richtung geführt, danke! Ich werde meine Frage so bald wie möglich aktualisieren. – rocksteady

Verwandte Themen