乐趣区

jitsivideobridge负载均衡搭建

写在前面

如果我们使用官方教程快速安装了 jitsi(包含 jitsi-meet,prosody,jitsi-videobridge,jicofo,nginx)。是的,环境搭建起来了,但是如果生产环境上面想多人使用,这个配置或者负载还是支撑不来多少的。官方推荐的方式有两种,一种就是简单的对 jitsi-videobridge(以下简称 jvb)做负载,一种就是使用 proxy, 将整个 jitsi-meet 开始负载。目前我们使用的是将 jvb 做负载。

使用 jvb 做负载有什么好处

之所以用 jvb 做负载,我们需要知道一点 jitsi 的基本知识:jitsi-meet,prosody,jvb,jicofo 分别在 jitsi 中扮演什么角色?

jitsi-meet: 前端模块,nginx 直接转发过来到 jitsi-meet

prosody: xmpp 协议服务器框架,jitsi 是基于 xmpp

jvb: 视频桥,负责所有视频在各个服务器中共享

jicofo: 负责房间管理

官网有介绍,我们如果需要有更多的音视频用户,需要将这几个数字调大:
vim /etc/systemd/system.conf

DefaultLimitNOFILE=65000 
DefaultLimitNPROC=65000 
DefaultTasksMax=65000

使其生效:
sudo systemctl daemon-reload
sudo systemctl restart jitsi-videobridge2
检查是否生效:

systemctl show --property DefaultLimitNPROC 
systemctl show --property DefaultLimitNOFILE 
systemctl show --property DefaultTasksMax

但是当我们有更多的音视频会议用户进来的时候,可能这个也不够,那么我们就需要使用多个 jvb 来负载均衡了

多个 ubuntu18 上安装 jvb 负载均衡

前提:你是基于官网教程快速安装
我以两台机器为例子,一台上面就是按照官方快速搭建,在一个机器上面安装了 prosody,jicofo,jvb,nginx,jitsi-meet 等机子, 一下简称 JMS, 另外我们还需要一台干净的 ubuntu18 的机子, 以下简称 JVB 机器

  • 首先,我们需要更新 jvb 补丁到最新版本
echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list
wget -qO -  https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
apt-get install apt-transport-https
apt update
apt upgrade
  • 在新的 videobridge 服务器 JVB 上设置防火墙
ufw status
ufw allow ssh
ufw allow 443/tcp
ufw allow 4443/tcp
ufw allow 10000:20000/udp
ufw enable
  • 第一个实例 在 JMS 上运行的 jitsi-meet 服务器上设置防火墙
ufw allow 5222/tcp
ufw reload
  • 新的videobridge 服务器 JVB 上安装 jitsi-videobridge
apt -y install jitsi-videobridge2
  • 在 JVB 上进行安装期间,从 jitsi-meet 服务器(JMS)输入 DNS 名称

查看/etc/jitsi/videobridge/configJVB 上的文件, 它应该类似下面的情况(注意你并不需要编辑,只是确认到目前为止走对了没有):

# Jitsi Videobridge settings
# sets the XMPP domain (default: none)
JVB_HOSTNAME=<your jitsi-meet domain name which you entered during installation>
# sets the hostname of the XMPP server (default: domain if set, localhost otherwise)
JVB_HOST=
# 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=fg4t55z
# extra options to pass to the JVB daemon
JVB_OPTS="--apis=,"
# adds java system props that are passed to jvb (default are for home and logging config file)
JAVA_SYS_PROPS="-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"
  • 将值从 jitsi-meet 服务器(JMS)复制到 JVB 服务器:

打开 JMS 的文件 /etc/jitsi/videobridge/sip-communicator.properties,将所有内容复制到剪贴板,并将其粘贴到 JVB 服务器中的文件中/etc/jitsi/videobridge/sip-communicator.properties 替换其中的所有其他文件, 并且添加这个配置:org.jitsi.videobridge.xmpp.user.shard.DISABLE_CERTIFICATE_VERIFICATION=true
JVB 上的内容应类似于:

org.jitsi.videobridge.DISABLE_TCP_HARVESTER=true
org.jitsi.videobridge.ENABLE_STATISTICS=true
org.jitsi.videobridge.STATISTICS_TRANSPORT=muc
org.jitsi.videobridge.xmpp.user.shard.HOSTNAME=<your jitsi-meet Server as DNS like jitsi.example.tld>
org.jitsi.videobridge.xmpp.user.shard.DOMAIN=auth.<your jitsi-meet Server as DNS like jitsi.example.tld>
org.jitsi.videobridge.xmpp.user.shard.USERNAME=jvb
org.jitsi.videobridge.xmpp.user.shard.PASSWORD=<secret from JMS - keep it; do not change it>
org.jitsi.videobridge.xmpp.user.shard.MUC_JIDS=JvbBrewery@internal.auth.<your jitsi-meet Server as DNS like jitsi.example.tld>
org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME=<any unique name here; important: unique value for each videobridge like "jvb2">
org.jitsi.videobridge.xmpp.user.shard.DISABLE_CERTIFICATE_VERIFICATION=true
  • JMS 服务器上的文件应该看起来几乎相同,仅与另一个 MUC_NICKNAME 相同(可以将其保留在安装范围内,这很好)。

在 JVB 上重新启动 videobridge-service,你应该一切顺利!

/etc/init.d/jitsi-videobridge2 restart
  • 查看记录是否一切正常。日志位于:
JVB: /var/log/jitsi/jvb.log
JMS: /var/log/jitsi/jvb.log 
     /var/log/jitsi/jicofo.log
  • 在 jicofo-log 中,应该可以看到连接桥:
Jicofo INFORMATION: [30] org.jitsi.jicofo.xmpp.BaseBrewery.processInstanceStatusChanged().329 Added brewery instance: jvb
brewery@internal.auth.<your jitsi-domain>/<your JVB NICKNAME like jvb2>
Jicofo INFORMATION: [30] org.jitsi.jicofo.bridge.BridgeSelector.log() Added videobridge: jvbbrewery@internal.auth.<your jitsi-domain>/<your JVB NICKNAME like jvb2> v: null

到此,负载均衡 jvb 安装完毕

测试

要简单地测试安装,请关闭 JMS Server 上的视频桥,并检查您是否仍然可以连接到 JitsiMeet 并进行视频会议。Jicofo 服务将自动使用可用的服务器。

/etc/init.d/jitsi-videobridge2 stop

这时已经停用了一个视频桥 jvb,你进入你的视频会议去看是否还能够正常访问,如果搭建成功会可以正常访问的。
好了,测试完了记得将你关闭的视频桥再启动哦(有 3 个及以上个 jvb 也是同样的做法)

/etc/init.d/jitsi-videobridge2 start

最后原创不易,转载请注明来源 https://segmentfault.com/a/11…

退出移动版