Jitsi Meet: Balanceo de Cargas

  • En muchas empresas cubanas existe la necesidad de tener varias videoconferencias a la vez y que estas tengan una mayor cantidad de usuarios de lo que soporta normalmente un servidor Jitsi Meet (estamos hablando de 3 videoconferencias a la vez con alrededor de 15 usuarios cada una). Si necesitas algo mayor que eso, te recomiendo que aproveches la característica que trae Jitsi Meet de escalabilidad horizontal, la cual consiste en configurar varios puentes de video conectados a un mismo Jicofo, lo cual garantiza que el coordinador de videoconferencias utilice el puente de video con menos carga para la próxima videoconferencia. Esto se logra con un proceso sencillo el cual esta en la Documentación Oficial de Jitsi Meet, y en su foro los desarrolladores dan buenas explicaciones e ideas al respecto.

NOTA: Antes de comenzar aclaro que para esto debe tener buen ancho de banda en su red.

En mi caso utilice dos puentes de video adicionales, pero puedes ponerle la cantidad que desees en dependencia de tus necesidades.
Para comenzar vamos a necesitar los siguientes requisitos:

  • Internet (Solo para el proceso de instalación)
  • CT con ubuntu 18.04 live server 2 core, 4 Gb ram, 2 Gb swap y 20 Gb hdd ip: 10.1.1.2 FQDN: conferencias.empresa.cu
  • CT con ubuntu 18.04 live server 2 core, 4 Gb ram, 2 Gb swap y 20 Gb hdd ip: 10.1.1.3 FQDN: jvb1.empresa.cu
  • CT con ubuntu 18.04 live server 2 core, 4 Gb ram, 2 Gb swap y 20 Gb hdd ip: 10.1.1.4 FQDN: jvb2.empresa.cu

Donde en conferencias.empresa.cu se hace una instalación idéntica a  la del post anterior sobre Jitsi Meet.

Una vez se halla terminado dicha instalación le configuramos los siguientes parámetros, los cuales son necesarios para lograr el balanceo de carga.

  • Se debe abrir el puerto 5222 TCP en el servidor conferencias.empresa.cu

Editar:

root@conferencias:~# nano /etc/prosody/prosody.cfg.lua

Al principio del archivo se agrega la siguiente línea:

component_interface = "0.0.0.0"

Ahora se deben buscar los archivos:

/etc/jitsi/videbridge/config

/etc/jitsi/video-bridge/sip-communicator.properties

Y descargarlos a nuestra pc, ya que van a ser utilizados en la configuración del los otros puentes de video.

Ahora pasamos a instalar jvb1.empresa.cu

Para comenzar se hacen las siguientes pruebas:

root@jvb1:~# hostname
jvb1
root@jvb1:~# hostname -f
jvb1.empresa.cu

Se instalan algunos paquetes necesarios:

root@jvb1:~# apt install gnupg2 apt-transport-https sudo -y

root@jvb1:~# apt install openjdk-8-jre-headless -y

Establecemos JAVA_HOME como una variable de entorno con las dos líneas siguientes:

root@jvb1:~# echo "JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")" |tee -a /etc/profile
root@jvb1:~# source /etc/profile

Se agregan los repositorios de Jitsi Meet:

root@jvb1:~# wget -qO - https://download.jitsi.org/jitsi-key.gpg.key |apt-key add -
root@jvb1:~# sh -c "echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list"
root@jvb1:~# apt update

Y se instala el puente de video solamente:

root@jvb1:~# apt install jitsi-videobridge2 -y

Durante la instalación nos pedirá el nombre de host, ahí le ponemos: jvb1.empresa.cu

De esta manera queda instalado el puente de video, ahora se pasa a instalar el otro puente de video el cual no explicare porque se hace siguiendo los mismos pasos anteriores, solo que durante la instalación cuando pide el nombre de host se le pone jvb2.empresa.cu

Ahora pasamos a configurar el jvb1, editamos los dos archivos que habíamos guardado anteriormente en la pc:

root@jvb1:~# nano/etc/jitsi/videbridge/config

Se deja de la siguiente manera:

# Jitsi Videobridge settings

# sets the XMPP domain (default: none)
JVB_HOSTNAME=conferencias.empresa.cu

# sets the hostname of the XMPP server (default: domain if set, localhost otherwise)
JVB_HOST=conferencias.empresa.cu

# sets the port of the XMPP server (default: 5275)
JVB_PORT=5347

# sets the shared secret used to authenticate to the XMPP server
JVB_SECRET=lggPvwSw

# extra options to pass to the JVB daemon
JVB_OPTS="--apis=rest,xmpp"

# adds java system props that are passed to jvb (default are for home and logging config file)
JAVA_SYS_PROPS="-Dconfig.file=/etc/jitsi/videobridge/jvb.conf -Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jitsi -Dnet.java.sip.communicator.SC_HOME_DIR_NAME=videobridge -Dnet.java.sip.communicator.SC_LOG_DIR_LOCATION=/var/log/jitsi -Djava.util.logging.config.file=/etc/jitsi/videobridge/logging.properties"

Luego editar:

root@jvb1:~# nano /etc/jitsi/video-bridge/sip-communicator.properties

Se deja de la siguiente manera:

org.ice4j.ice.harvest.DISABLE_AWS_HARVESTER=true
org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=meet-jit-si-turnrelay.jitsi.net:443
org.jitsi.videobridge.ENABLE_STATISTICS=true
org.jitsi.videobridge.STATISTICS_TRANSPORT=muc
org.jitsi.videobridge.xmpp.user.shard.HOSTNAME=conferencias.empresa.cu
org.jitsi.videobridge.xmpp.user.shard.DOMAIN=auth.conferencias.empresa.cu
org.jitsi.videobridge.xmpp.user.shard.USERNAME=jvb
org.jitsi.videobridge.xmpp.user.shard.PASSWORD=lggPvwSw
org.jitsi.videobridge.xmpp.user.shard.MUC_JIDS=JvbBrewery@internal.auth.conferencias.empresa.cu
org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME=b82d2e1e-e6c6-4cb5-b6cb-9c83f3caf9af
org.jitsi.videobridge.xmpp.user.shard.DISABLE_CERTIFICATE_VERIFICATION=true

Ahora se edita el archivo:

root@jvb1:~# nano /usr/share/jitsi/jvb/jvb.sh

Y se le agrega la siguiente línea al principio de dicho archivo:

sed -i "s/org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME=.*/org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME=$(cat /proc/sys/kernel/random/uuid)/g" /etc/jitsi/videobridge/sip-communicator.properties

De esta misma forma se configura el segundo puente de video llamado jvb2.empresa.cu.

Cuando se termine todo, se reinician los tres servidores y nos conectamos https://conferencias.empresa.cu

Para  probar que todo esta bien es bueno que creen varias salas y se conecten varios usuarios a cada una de ellas, pueden ver el funcionamiento de los puentes de video en:

root@jvb1:~#tail -f /var/log/jitsi/jvb.log
root@jvb2:~#tail -f /var/log/jitsi/jvb.log

Ahí se ve como se conectan y desconectan los usuarios, además se ve el consumo de los recursos según van aumentando la cantidad de usuarios y la cantidad de salas creadas.

Esto es todo, espero les guste y no olviden darle like.

 

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 4.8 / 5. Recuento de votos: 5

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

2 comentarios

  1. Google Chrome 89.0.4389.82 Google Chrome 89.0.4389.82 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36

    Hola, excelente material.
    Necesito eliminar la dependencia de jitsi a los puertos 10000-20000/udp y hacer que funcione desde el 443/tcp. ¿Me puedes dar alguna idea?

    Tengo problemas cuando usuarios de otras redes intentan conectarse a mi servidor de videoconferencias usando squid proxy

    • Firefox 92.0 Firefox 92.0 Windows 10 x64 Edition Windows 10 x64 Edition
      Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0

      el tema proxy, es que el audio y video viaja UDP, squid no soporta UDP, por eso ellos llegan a la web pero no ven ni escuchan nada.

Responder a Mariano Cancelar la respuesta

Tu dirección de correo electrónico no será publicada.


*