写在前面
如果我们使用官方教程快速安装了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/config
JVB上的文件,它应该类似下面的情况(注意你并不需要编辑,只是确认到目前为止走对了没有):
# 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...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。