Lastreduktion in BigBlueButton

Ausgangslage

Hier findet sich die offizielle Quelle zur Ressourcenabschätzung. Ich selbst habe noch keine eigene Einschätzung vornehmen können.

Wer genügend der empfohlenen Hardware-Ressourcen pro Teilnehmer hat, ist fein raus. Wer aber nicht die in obiger Tabelle gezeigten Hardware-Ressourcen bieten kann (wenn man einen leistungsfähigen Server erstellt hat, dürfte der Engpass vor allem in der erforderlichen Bandbreite des Intranets liegen), muss sparen. 
Tatsächlich dürfte die Last hauptsächlich von der Anzahl gleichzeitiger Teilnehmer abhängen und den angebotenen Features (z.B. Aufzeichnung des Meetings, jeder Teilnehmer wird mit seiner Webcam gezeigt, …). Man muss also an der Anzahl der Teilnehmer sparen und/oder an der Anzahl der angebotenen Features:

Teilnehmer reduzieren

Grundsätzliches

Teilnehmer ist nicht gleich registrierter Nutzer. Denn nur ein Nutzer, der gerade an einem Meeting teilnimmt, kostet auch Ressourcen. Ein Nutzer kann auch gleichzeitig Teilnehmer bei mehreren Konferenzen sein und sogar mehrfacher Teilnehmer der gleichen Konferenz (warum auch immer) -> das erschwert die Lastabschätzung zusätzlich. Vielleicht kann man das auch abschalten?!

Um die Zahl der gleichzeitigen Teilnehmer zu limitieren, kann man die Gesamtzahl der Räume limitieren und die maximalen Teilnehmer je Raum. Da Big Blue Button erstmal auf Freiheit ausgerichtet ist, muss man diese grundsätzliche Freiheit einschränken, und sperren, dass die User eigene Räume erstellen und teilen können:

Anzahl der Räume limitieren

Mit der obigen Einstellung hat man erreicht, dass User keine Räume erstellen können, damit obliegt den Admins, welche Räume dem Unternehmen zur Verfügung gestellt werden.

Teilnehmer pro Raum limitieren

Vorläufig kann man ja per Anweisung verbieten, dass Räume mit mehr als 10 bzw. 15 Teilnehmern gefüllt werden.

Hier ist die Option defaultMaxUsers beschrieben. Wie und ob man diese für die Administration seiner Big Blue Button Instanz nutzen kann, habe ich noch nicht herausfinden können.

Limitierte Räume optimal nutzen

Wenn die Nachfrage nach Räumen das Angebot an Räumen übersteigt, muss man ein Verfahren finden, die daraus entstehenden Nöte möglichst gering zu halten. Eine Möglichkeit wäre, dass jeder Abteilung zu einer bestimmte Uhrzeit alle Räume zur Verfügung stehen. Der Krisenstab bekäme z.B. alle Räume von 9 bis 10, die IT-Abteilung von 10-11 Uhr usw. Das würde sehr schnell für klare Verhältnisse sorgen. Dem Krisenstab könnte als einziges die Möglichkeit eingeräumt werden, auch Meetings der Abteilungen abzusagen, wenn sie ein eigenes Meeting veranstalten müssen. Für die übrigen Zeiten bietet sich das Raumplanungssystem an, welches im Unternehmen bereits für physische Räume genutzt wird. 

Features reduzieren

Aufzeichnungen verbieten

Vermutlich die größte Entlastungen ist es, die Aufzeichnungen zu deaktivieren. 

Vorläufig kann man den Moderatoren per Anweisung verbieten, die Möglichkeit der Aufzeichnung zu nutzen.  Deren Einhaltung kann man als Admin auch leicht kontrollieren, da die Liste der Aufzeichnungen samt Aufzeichnenden einsehbar ist. Die Aufzeichnung kann gelöscht werden und/oder der Aufzeichnende kann ermahnt werden:

Mein Kollege hat es gerade ausprobiert und der Button zum Aufzeichnen ist tatsächlich verschwunden (Anleitung)

Kurz-Anleitung:

  1. sudo vim/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
  2. mit ‚i‘ inBearbeitungsmodus und z.B. disableRecordingDefault auf ‚true‘ setzen
  3. ‚Esc‘ und dann ‚:wq‘
  4. Neustarten mit „sudobbb-conf –restart“
  5. Server starten ‚sudodocker-compose up -d‘
  6. Button zum Aufzeichnen ist verschwunden.

Qualität der Webcams reduzieren

https://docs.bigbluebutton.org/2.2/customize.html#reduce-bandwidth-for-webcams 

https://docs.bigbluebutton.org/2.2/customize.html#reduce-bandwidth-from-webcams

Webcams vollständig sperren

Dies sollte genau überlegt werden, denn wenn man seine Kollegen live sehen kann, ist das sehr motivierend und Team-bildend.

Alternativhttps://docs.bigbluebutton.org/2.2/customize.html#disable-webcams

Bildschirmfreigaben sperren

Dies sollte genau überlegt werden, denn Bildschirmfreigaben sind ein wichtiger Bestandteil von effizienten Meetings (z.B. PowerPoint-Präsentationen oder Übersicht über offene Aufgaben im Ticketsystem):

Alternativ: https://docs.bigbluebutton.org/2.2/customize.html#disable-screen-sharing

Minimale Verbesserungen durch Entfernung der Hintergrundmusik und des comfort noise:

Kann nur angepasst werden falls mit FreeSWITCH gearbeitet wird!

Deaktiviert die Hintergrundmusik wenn nur eine Person sich in der Konferenz befindet
https://docs.bigbluebutton.org/2.2/customize.html#enable-background-music-when-only-one-person-is-in-a-session

Deaktiviert das „comfort noise“, welches gespielt wird wenn gerade nicht gesprochen wird
https://docs.bigbluebutton.org/2.2/customize.html#turn-off-the-comfort-noise-when-no-one-is-speaking

Per Konfiguration (noch nicht evaluiert)

Quelle: https://docs.bigbluebutton.org/2.2/customize.html#html5-client-configuration 

Auf unserem Server gibt es einen ordner „/greenlight“ über den ja auch alles gestartet wird.

Über folgenden Befehl kommt man auf eine Settings-Datei: sudo vim /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml

Damit öffnet sich die Datei und mit einem Klick auf `i` kann man diese dann auch bearbeiten. Dort hab ich es zum Beispiel hinbekommen diese Einstellungen zur Datenvolumeneinsparung direkt anzuschalten schon beim start des servers (defaultSettings und dann dataSaving und das auf false gesetzt). Mit Esc und dann :wq! wird das ganze gespeichert. Dann einmal den Befehl sudo bbb-conf –restart ausführen und dann kann der server mit sudo docker-compose up –d wieder gestartet werden und die Änderungen sollten übernommen sein.

Rollout-Konzept BigBlueButton als Kommunikationsplattform in der Corona-Krise (Mittelgroße unternehmen)

Hinweis: Dieses Konzept basiert teilweise schon aus echter Erfahrung bei der aktuellen Schnelleinführung von BigBlueButton und teils noch aus Plausibilitätsannahmen, das es gerade Work-In-Progress ist.

Installation & Konfiguration

Idealerweise sollte ein Linux-Admin die Installation vornehmen. Es können auch andere ITler sein – diese werden jedoch deutlich länger benötigen. Grundsätzlich ist BigBlueButton schon ziemlich gut dokumentiert. Die Installation sollte laut offizieller Empfehlung auf einem Linux-Server mit folgenden Hardwarevoraussetzungen BigBlueButton stattfinden. Falls die Hardware-Ressourcen pro kommunizierenden Mitarbeiter nicht ausreichen, können performance-lastige Features (z.B. Aufzeichnungsmöglichkeit und Webcam-Verwendung) erstmal ungenutzt bleiben (Quellen). Leider können wir an dieser Stelle nur die Anleitung für eine (nicht ganz vollständige) Windows-basierte Testinstallation bereitstellen

Parallel zu Installation & Konfiguration

Um keine unnötige Zeit verstreichen zu lassen, arbeiten sich mindestens zwei IT-Kollegen (sollte nicht der Linux-Admin sein, da dieser ja beschäftigt ist) arbeiten sich intensiver in die Nutzung und Administration von BigBlueButton ein.

Test

Anschließend wird die Performance durch ein reales Meeting und Arbeitschats innerhalb der IT-Abteilung getestet, auch um einen ersten Eindruck zu gewinen (dieser dürfte überwältigend positiv ausfallen). Hierzu wird ein Termin am Folgetag vereinbart und die Hardwarevorraussetzungen kommuniziert (Rechner, Headset (oder wenigstens den Lautsprecher am Rechner), unbegrenztes Datenvolumen beim Internetprovider – weil das Nutzen von Big Blue Button recht viel Datenvolumen kostet). Zusätzlich wird der Link  zum Raum kommuniziert und dazu aufgefordert sich zu registrieren.

Prioritäten beim Ausrollen

Ist der Test bei der IT-Abteilung erfolgreich, wird als nächstes der Unternehmens-Krisenstab bzw. die Unternehmensleitung bzgl. Big Blue Button arbeitsfähig gemacht werden. Danach kann ein Ausrollen auf die anderen Abteilungen stattfinden. Da die Hardware-Ressourcen nicht für alle und alles ausreichen werden, sollte man sich frühzeitig mit der Lastreduktion bei Big Blue Button beschäftigen. Dies kann so stattfinden, dass die Abteilungsleiter zwei IT-affine & verfügbare Kollegen aus ihrer Abteilung bestimmen, die dann von den beiden IT-Kollegen, die sich schon eingearbeitet haben, innerhalb einer Big Blue Button-Session mit diesem Tool in den Rollen Nutzer, Präsentator und Moderator vertraut machen. Diese Kollegen können dann in ihren Abteilungen als Multiplikatoren und Moderatoren für die ersten Meetings fungieren. Diese Aufgaben weiterzudelegieren entlastet die IT-Abteilung in der Folgezeit, die mit der Herstellung der HomeOffice-Arbeitsumgebung ohnehin stark belastet ist. Bezüglich Registrierung der neuen Nutzer lies hier.

Kommunikation

Es ist immer mit Rückfragen der Kollegen zu rechnen, was Zeit kostet: „Wie gehe ich damit um, wenn ich dies und das nicht habe? Hat das neue Tool auch Feature XY haben, etc.

Da jede Schnelleinführung eines solchen Systems, die aufgrund der Krise unumgänglich ist, bedeutet Bananen-Software – sie reift beim Kunden. Das sollte man auch so kommunizieren.

Testweise Installation der Kommunikationsplattform BigBlueButton auf einem Windows-Rechner

In diesem Artikel geht es um die Einrichtung einer VM zur Nutzung als (Test-)Server für eine BigBlueButton Anwendung. Dafür verwende ich VirtualBox. Es sei vorher angemerkt, dass ich selbst kein großer Linux Experte bin. Meine Kenntnisse halten sich in Grenzen.

Quelle: 
https://hibbard.eu/install-ubuntu-virtual-box/

Erste Schritte

Zunächst muss man natürlich VirtualBox auf seinem Rechner installiert haben. Hier geht es zum Download: 
https://www.virtualbox.org/wiki/Downloads

Laut den Mindestanforderungen von BigBlueButton ( https://docs.bigbluebutton.org/2.2/install.html#minimum-server-requirements) benötigt man als Betriebssystem für den Server 
„Ubuntu 16.04 Server“, 64-Bit  (http://releases.ubuntu.com/16.04/). Die Datei ist ca. 870MB groß.

Erstellen der Virtuellen Maschine

Ist VirtualBox installiert und die ISO Datei heruntergeladen ist der nächste Schritt das Erstellen der VM mittels VirtualBox. Dafür geht man unter Maschine > Neu… (alternativ Strg + N). 

Es öffnet sich ein Fenster in dem man Einstellungen zu Betriebssystem und Name der VM vornehmen kann. Der Name ist dabei eigentlich irrelevant. Dabei handelt es sich nur um den Namen der VM in VirtualBox. Wichtig ist die Auswahl von Linux unter Typ und Ubuntu (64-Bit) unter Version.

Als nächstes wird die Größe des RAMs festgelegt. Hier empfiehlt BigBlueButton mindestens 4GB. Ich gebe der VM 5GB. Für einen richtig genutzten Server mit einigen Nutzern sollte man jedoch mehr in Betracht ziehen.

Jetzt wird eine virtuelle Festplatte für die VM erstellt. Wähle „Festplatte erstellen“ und drücke „Erzeugen„.

Es öffnet sich ein neues Fenster um die virtuelle Festplatte weiter zu konfigurieren.  Als erstes wird der Typ der Festplatte ausgewählt. Wähle „VDI (VirtualBox Disk Image)“ und drücke auf „Weiter„. 

Der nächste Schritt ist die Wahl der Art der Speicherung. Wähle „Dynamisch alloziert“ (belegt nur dann Speicherplatz auf der physischen Festplatte des Hosts wenn die VM Daten schreibt) und drücke auf „Weiter„.

Als letztes fehlt nur noch die Zuweisung der Größe der Festplatte. Da es sich bei der VM nur um einen Testserver handeln soll, reichen 10GB. Durch drücken auf „Erzeugen“ wird die Festplatte erstellt und die VM ist fertig eingerichtet. Die neu erstellte VM sollte nun unter dem im ersten Schritt angegeben Namen auf links aufgelistet sein. 

Installieren von Ubuntu auf der Virtuellen Maschine

Wähle die gerade erstellte VM aus und drücke auf „Starten„. Es öffnete sich ein neues Fenster. Hier soll man ein virtuelles optisches Medium oder physisches optisches Laufwerk auswählen, mit der die neue VM gestartet werden soll.

Hier muss die heruntergeladene ISO Datei von Ubuntu 16.04 Server ausgewählt werden.

Mit „Start“ beginnt der Installationsprozess. Dieser dient dem allgemeinen Setup des Betriebssystems.

Als erstes wird die bevorzugte Sprache des Betriebssystems ausgewählt. Ich verwende Deutsch. Die Wahl ist aber natürlich jedem selbst überlassen. Später muss die Sprache aber auf jeden Fall auf amerikanisches Englisch gesetzt werden, dazu aber später mehr.

Die folgenden Schritte sind meistens ziemlich selbst erklärend:

Als erstes sollte man die Installation mit Ubuntu Server installieren starten. 

Wenn man Deutsch als Sprache gewählt hat, bekommt man zunächst die Meldung, dass nicht alle Installationsschritte in Deutsch übersetzt wurden. Das bezieht sich jedoch nur auf einen Schritt. Dieser Schritt wird dann einfach in Englisch angezeigt. Insofern können wir hier einfach mit JA die Installation fortsetzen

Jetzt muss das Tastaturlayout ausgewählt werden. Dies kann man entweder per automatischer Erkennung machen, oder man wählt es aus einer Liste aus (das habe ich gemacht).

Jetzt soll der Rechner einen Namen bekommen. Vorgeschlagen wird ubuntu. Ich habe den Namen nicht verändert.

Anschließend muss das Passwort nochmal bestätigt werden.



Wenn das System einen Proxy benötigt um auf das Internet zuzugreifen, muss das hier eingetragen werden. Sonst kann das Feld freigelassen werden.

Mit „Weiter“ startet die VM neu. Diesmal startet direkt Ubuntu. Nach dem Startvorgang fragt die VM nach einem Nutzernamen und Passwort. Damit sind der eben erstellte Nutzername (in meinem Fall „markus“) und Passwort gemeint. 

Jetzt sollten folgende Befehle ausgeführt werden. Sollte man dabei gefragt werden, ob man wirklich fortfahren möchte ([y/n] bzw [j/n] ) einfach „y“ (oder „j“, abhängig von der gewählten Sprache) eingeben und mit Enter bestätigen.

sudo apt-get update
sudo apt-get upgrade

Anschließend sollte nochmal überprüft werden, ob SSH installiert ist. Das sollte der Fall sein, wenn bei der Konfiguration die Option Install OpenSSH server gewählt wurde. Dafür muss man einfach „ssh“ in die Konsole eingeben

Sollte die Konsole „command not found“ ausgeben, kann man SSH mit diesem Befehl installieren:

sudo apt-get install openssh-server

Bei mir kam es einmal zu einem merkwürdigen Fehler. Ich bin 100% sicher, dass ich OpenSSH während der Installation ausgewählt habe. Auch der Befehl „ssh“ gab keine Fehlermeldung zurück. Als ich jedoch versucht habe mich mit dem Server zu verbinden (dazu komme ich später), wurde meine Verbindung abgebrochen („connection refused“). Diesen Fehler konnte ich beheben, in dem ich „sudo apt-get install openssh-server“ erneut eingeben habe. Vielleicht nützt diese Information ja jemanden etwas. 

Jetzt fahren wir die VM jedoch erstmal wieder herunter. Das geht in dem man einfach das Fenster schließt, oder mit folgendem Befehl:

sudo poweroff

VM IP Adresse zuordnen

Jetzt benötigt unsere VM eine IP Adresse in unserem lokalen Netzwerk. Dafür muss die VM wie bereits erwähnt heruntergefahren sein. 

Jetzt drückt man bei Werkzeuge auf das Menü mit den drei Punkten und wählt anschließend Netzwerk aus.

Jetzt drückt man auf den grünen Erzeugen Button. 

Jetzt wird ein neues virtuelles Netzwerk erstellt. Dabei muss beachtet werden, dass der Haken bei DHCP-Server gesetzt wurde. (Die Spalte ganz rechts).

Jetzt wählt man die VM aus der Liste aus und drückt auf Ändern.

Hier kann man die VM weiter konfigurieren. Zuerst geht man in den Unterpunkt „System“. Laut Systemanforderungen benötigt BigBlueButton mindestens vier Kerne. Die kann man hier zuweisen.

Dann geht man in den Unterpunkt Netzwerk. Zuerst wählt man Adapter 1 aus. Unter Angeschlossen an: wählt man Netzwerkbrücke. Die darauf folgende Auswahl wird automatisch gewählt.

Anschließend Adapter 2.  Dieser muss vermutlich zunächst aktiviert werden. Dann wählt man unter Angeschlossen an:  Host-only Adapter. Unter Name wählt das eben bei den Werkzeugen erstellte virtuelle Netzwerk aus. (Da ich mehrere habe in meinem Fall die Nummer 3).

Abschließend geht man zu Datei > Einstellungen (alternativ Strg + G) > Netzwerk

Sollte man kein NAT-Netzwerk sehen kann man eins über das grüne Icon mit dem „+“ am rechten Seitenrand erstellen.

Jetzt startet man die VM neu und meldet sich erneut an. Anschließend gibt man folgenden Befehl ein:

ifconfig

Man notiert sich die IP-Adresse, die dem Hauptnetzwerkadapter zugewiesen ist (in meinem Fall enp0s3, inet Adresse: 192.168.4.85)

Verbinden mit dem Server per SSH

Jetzt versucht man per SSH den Server zu erreichen um zu sehen, ob alles geklappt hat.

Windows

Um sich per SSH auf Windows mit dem Server zu verbinden sollte man PuTTY installiern. (https://www.putty.org/)

Anschließend gibt man unter Host Name die gerade notierte IP Adresse ein und drückt anschließend auf Open. Sollte eine Warnung kommen, ob man dem Host wirklich vertraut, kann man diese einfach mit JA wegklicken.


Jetzt ist man mit dem Server verbunden.

Linux 

Unter Linux funktioniert es folgendermaßen:

sudo apt-get install openssh-client
ssh markus@192.148.4.85 (mit den eigenen Daten ersetzen)

Vor der Installation von BigBlueButton

Kommen wir jetzt zum wirklich interessanten Teil: das Installieren von BigBlueButton. Zunächst sei erwähnt, dass die Entwickler von BigBlueButton sich sehr viel Mühe mit ihrere Dokumentation gegeben haben. Dort findet man schnell und einfach eigentlich alle Informationen die man benötigt. Bis jetzt gab es keine Frage, die mir die Doku nicht beantworten konnte. 

Bevor wir BigBlueButton jetzt jedoch installieren, sollte man zuerst sicherstellen, dass der Server auch wirklich allen Anforderungen entspricht. Meine Informationen für diesen Abschnitt stammen direkt aus der Doku. Zusätzliche Informationen kann man hier finden: https://docs.bigbluebutton.org/2.2/install.html#pre-installation-checks

Als erstes überprüfe, ob die Sprache des Servers auf en_us.UTF-8 gesetzt ist.

$ cat /etc/default/locale
LANG="en_US.UTF-8"

Sollte man etwas anderes sehen, muss man folgende Befehle eingeben. Da ich bei der Installation Deutsch ausgewählt habe ist die Sprache auf de_DE.UTF-8 gestellt und muss jetzt geändert werden:

$ sudo apt-get install language-pack-en
$ sudo update-locale LANG=en_US.UTF-8

Als nächstes gibt man folgenden Befehl ein:

$ sudo systemctl show-environment
LANG = en_US.UTF-8

Jetzt sollte man sich aus der SSH Session abmelden und sich erneut verbinden. Das lädt die Sprache neu.  Man sollte jetzt am besten überprüfen, dass die Sprache in diesem Schritt wirklich geändert wurde, in dem man den oben genannten Befehl erneut eingibt.

Wenn man dies nicht sieht gibt man folgende Befehle zur Korrektur ein:

$ sudo systemctl set-environment LANG=en_US.UTF-8
$ sudo systemctl show-environment

Jetzt sollte man LANG=en_US.UTF-8 sehen. Wenn man der Anleitung in diesem Artikel gefolgt ist, sollten jetzt keine weiteren Fehler auftreten. Ansonsten findet man bei dem oben genannten Link in der Doku von BigBlueButton Lösungsvorschläge.
Jetzt überprüft man, ob der Server mindestens 4GB RAM besitzt:

free -h

Als nächstes prüft man, ob der Server auf der 64-Bit Version von Ubuntu läuft:

$ uname -m
x86_64

Dann überprüft man ob der Server IPV6 unterstützt.

$ ip addr | grep inet6
inet6 ::1/128 scope host
...

Dann überprüft man ob der Server mindestens vier Kerne besitzt und diese Version 4.x haben. 

Für die Version 4.x:
$ uname -r
4.15.0-38-generic

Für die Anzahl der Kerne:
$ cat /proc/cpuinfo | awk '/^processor/{print $3}' | wc -l
4

BigBlueButton installieren

Jetzt bleibt nur noch die Installation von BigBlueButton. Dafür findet man hier eine ausführliche Dokumentation auf welche verschiedenen Arten und Weisen man das machen kann: 
https://github.com/bigbluebutton/bbb-install

Für uns am besten ist aber folgender Befehl: (Der Befehl muss mit root Rechten ausgeführt werden!):

Für Root Rechte:
$ sudo -i

Dann:
$ wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v xenial-220 -g

Die Option -g sorgt dafür, dass Greenlight (Front-End Umgebung für den Server) automatisch mit installiert wird. Die Installation dauert eine Weile. (~10-20 Minuten)

Nach der Installation sollte man außerhalb der VM (Hostsystem) im Browser (Chrome oder Firefox) über die IP Adresse auf diese Seite gelangen: (meine IP hat sich zwischendrin geändert)

Da kein SSL Zertifikat eingerichtet wurde ist die Nutzung von Mikrofonen/Webcams und Bildschirmübertragungen nicht möglich. Das sind also die nächsten Schritte:

  • SSL Zertifikat
  • Customizen der UI

Anpacken!