Eine zweite JVB zu Jitsi Meet hinzufügen (Docker)

In der vorherhigen Anleitung habe ich gezeigt wie meet.adminforge.de angepasst wurde.

Tutorial: Jitsi Meet Docker Instanz anpassen
Tutorial: Eigene Jitsi Meet Instanz installieren (Docker / Ubuntu / Nginx)
Was ist Jitsi Meet?: Videokonferenzen mit Jitsi Meet
Meeting starten: https://meet.adminforge.de

Nun möchte ich euch zeigen wie eine zweite Jitsi-Videobridge (JVB) eurer bestehenden Jitsi Meet Instanz hinzugefügt werden kann. Dies ermöglicht euch mehr gleichzeitige Teilnehmer auf eurer Jitsi Meet Instanz zu haben.

Vorteile:

  • automatische Lastverteilung der Videostreams auf die einzelnen Videobridges (Round Robin)
  • in die Breite skalierbare Jitsi Meet Instanz
  • ein Zutrittspunkt für die Teilnehmer wie bsp. meet.adminforge.de
  • Erweiterung durch weitere JVB’s möglich

Was wird benötigt?

  • Eine laufenden Docker Jitsi Meet Instanz (siehe Anleitung)
  • 2 Server mit gleicher Ausstattung an CPU Kernen und Bandbreite
  • Optional: Die beiden Server sind über ein internes Netzwerk verbunden

Offene Ports in der Firewall (extern):

  • 4443/tcp
  • 10000/udp

Offene Ports in der Firewall (host zu host):

  • 2377/tcp
  • 7946/tcp+udp
  • 4789/udp

Punkt 1: Docker Swarm einrichten

Docker liefert ein Orchestrierungswerkzeug namens Swarm mit. Wir benutzen Swarm nur um ein Overlay Netzwerk zwischen Server A und B herzustellen. Die Docker Container starten wir weiterhin über docker-compose. Das hält uns weiterhin nahe am originalen Jitsi Meet Docker.

Im Testsetup habe ich 2 Debian Linux Server mit einem internen Netzwerk 10.10.0.0/16. Es funktioniert aber auch über das öffentliche Internet.

Unseren Server A richten wir als Swarm Manager ein.

Auf unserem zweiten Server (Server B) installieren wir docker und docker-compose nach Anleitung: Eigene Jitsi Meet Instanz installieren (Docker / Ubuntu / Nginx)
Es reicht der Anleitung bis Punkt 2 zu folgen.

Server B wird dann als Worker Node hinzugefügt.

Nun überprüfen wir ob Server A beide Nodes korrekt sieht.

Punkt 2: Overlay Netzwerk anlegen

Auf der Manager Node (Server A) erstellen wir unser Jitsi Meet Overlay Netzwerk.

Punkt 3: restart.sh auf Server A anpassen

Wir fügen die markierten Zeilen unserem restart.sh Script hinzu.

  1. Es wird geprüft ob das Overlay Netzwerk existiert, falls nein wird es erstellt
  2. Es wird der Netzwerkname ausgetauscht. Docker Swarm erlaubt keine Punkte („.“) im Overlay Netzwerknamen
  3. Das Netzwerk muss auf „external“ gestellt werden, ansonsten kann docker-compose nicht das Overlay Netzwerk von Swarm nutzen

Wir starten Jitsi Meet auf Server A mit dem angepassten Script neu.

Punkt 4: Zweite JVB auf Server B einrichten

Wichtig ist ein identisches JVB_AUTH_PASSWORD auf allen JVB Instanzen zu verwenden. Wir nutzen das Passwort von Server A und spielen es auf Server B ein.

Server A:

Server B:

Wir erstellen docker-compose-jvb.yml um nur die Jitsi Videobridge (JVB) auf Server B zu starten.

Dazu legen wir ein passendes restart.sh Script an.

  1. Als erstes wird ein Dummy Container gestartet, da docker-compose aktuell kein Overlay Netzwerk auf den Worker Nodes anlegen kann
  2. Danach wird der JVB Container gestartet

Punkt 5: Zweite JVB starten

Zuerst überwachen wir das Logfile auf Server A.

Dann starten wir auf Server B den JVB Container.
WICHTIG: Es muss immer zuerst die Jitsi Meet Master Instanz (auf Server A) gestartet werden bevor eine JVB Instanz joinen kann!

Im Log sollte nun diese Zeile zu sehen sein.

Fertig! Eine zweite JVB steht eurer Jitsi Meet Instanz nun zur Verfügung.

Als nächstes: Jitsi Meet Grafana Statistiken (Docker)

Euer adminForge Team

UnterstützenDas Betreiben der Dienste, Webseite und Server machen wir gerne, kostet aber leider auch Geld.
Unterstütze unsere Arbeit mit einer Spende.
Dominion

Dominion

Linux Systemadministrator

Das könnte dich auch interessieren …

13 Antworten

  1. Avatar 0x02 sagt:

    Vielen Dank für die Anleitung. Ich habe noch eine Verständnisfrage. Müsste Pkt. 4 nicht vor Pkt. 1 erfolgen? Da auf Server 2 noch kein Docker bzw. Docker-compose läuft, dürfte der Worker noch nicht aktiviert werden können oder habe ich einen Denkfehler?

    • Dominion Dominion sagt:

      Die Punkte 1-3 spielen sich doch alle auf Server A ab, dort sollte ja bereits Jitsi Meet Docker laufen. Erst in Punkt 4 wird begonnen auf Server B Docker zu installieren und dann die zweite JVB.

  2. Avatar 0x02 sagt:

    Hallo Dominion,

    Unter Punkt 1 soll doch der Worker (Test2 – Server B) dem Swarm hinzugefügt werden?

  3. Avatar Tobias Kern sagt:

    Hi Dominion,

    wann habt ihr geplant:

    Als nächstes: Tutorial über die Grafana Statistiken stats.adminforge.de

    Euer adminForge Team

    Danke für eure super Hilfe – Jitsi Server läuft wunderbar im Docker nach eurer Anleitung

  4. Avatar Dirk sagt:

    Hallo Dominion,
    Danke für die Anleitung.

    Vllt. sollte in die Anleitung etwas zu öffnenden Ports, falls man einen Paketfilter verwendet.

    Fürn ufw:

    ufw allow 2377/tcp
    ufw allow 4789/udp
    ufw allow 7946/tcp
    ufw allow 7946/udp

    VG
    Dirk

  5. Wenn mein Server A mit ./restart.sh neu gestartet wird, bekomme ich einen nginx 502 Bad Gateway-Fehler und nichts geht mehr.
    Meine beiden Server A und Server B sind nicht in einem internen Netzwerk verbunden, sondern sind also 2 VPS mit 2 verschiedenen IP-Adressen vorhanden.
    Vermute, dass der Netzwerknamenstausch von meet.jitsi in jitsi-meet alles durcheinder bringt, oder nicht weitreichend genug ist.

  6. Avatar Jonas sagt:

    Hi Dominion, danke für deine Anleitungen. Das hat mir alles sehr geholfen. Ich habe nun nur das Problem, dass meine Nodes das Netzwerk nicht finden. Das join hat zwar geklappt aber wenn ich das restart-Skript ausführe, schlägt es bereits bei dem Dummy Container fehl. Ich bekomme folgende Fehlermeldung:

    docker: Error response from daemon: attaching to network failed, make sure your network options are correct and check manager logs: context deadline exceeded.

    An der Portfreigabe kann es nicht liegen, da es schon mal funktioniert hatte ohne dass ich seitdem etwas an der Portfreigabe geändert habe. Als Nodes habe ich zum einen meinen Docker Daemon auf meinem Mac Rechner sowie eine VM in der Google Cloud probiert. Gestern hatte es funktioniert nachdem ich die Container und das Swarm Netzwerk auf Server A gelöscht habe und dann das restart-Skript ausgeführt habe, doch heute hat das leider nicht geklappt. Hast du eine Idee woran das liegen könnte?

    Vielen Dank im Voraus,
    Jonas

    • Dominion Dominion sagt:

      Hi Jonas,

      schwer zu sagen aus der Ferne.
      Du hast geschrieben, dass du das Netzwerk auf Server A gelöscht hast, deinem Swarm Master?
      Prüf mal bitte ob die Netzwerke da sind und ob die Container sich untereinander sehen können.

      Gruß
      Dominion

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.