Jitsi Видеомост, компонент, просодия, балансировка нагрузки
Я настраиваю автоматически масштабируемую среду с балансировкой нагрузки, используя jitsi на AWS, она автоматически масштабирует экземпляры jitsi-videobridge, соединяя их с просодией.
Я следовал этому руководству: https://github.com/jitsi/jicofo/blob/master/doc/load_balancing.md
я должен создать отдельные компоненты для каждого отдельного экземпляра jitsi-videobridge на просодии? Или я что-то упускаю в конфигурации? Если я правильно понимаю, у вас есть отдельные узлы jitsi-videobridge, которые общаются с сервером XMPP и отправляют статистику через PUBSUB, где Jicofo выполняет логику балансировки нагрузки этих jitsi-видеомостов.
Большое спасибо!
Когда я пытаюсь подключить второй jitsi-видеомост в просодию, я получаю эту ошибку:
Выход из JVB:
JVB 2017-05-17 15:38:46.808 SEVERE: [33] org.jitsi.meet.ComponentMain.call().278 conflict, host: IP, port:5347
org.xmpp.component.ComponentException: conflict
at org.jivesoftware.whack.ExternalComponent.connect(ExternalComponent.java:219)
at org.jivesoftware.whack.ExternalComponentManager.addComponent(ExternalComponentManager.java:221)
at org.jivesoftware.whack.ExternalComponentManager.addComponent(ExternalComponentManager.java:201)
at org.jitsi.meet.ComponentMain$3.call(ComponentMain.java:270)
at org.jitsi.meet.ComponentMain$3.call(ComponentMain.java:255)
at org.jitsi.retry.RetryStrategy$TaskRunner.run(RetryStrategy.java:193)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Выход из ПРОСОДЫ:
mod_component info Disconnecting component, <stream:error> is: <stream:error><conflict xmlns='urn:ietf:params:xml:ns:xmpp-streams'/><text xmlns='urn:ietf:params:xml:ns:xmpp-streams'>Component already connected</text></stream:error>
May 17 15:39:16 jcp20c3ae0 info component disconnected: jitsi-videobridge.domainname.com (false)
Конфиг-файл от PROSODY:
VirtualHost "pubsub.domainname"
admins= { "jitsi-videobridge.domainname” }
modules_enabled = {
"pubsub";
}
VirtualHost "domainname"
authentication = "anonymous"
modules_enabled = {
"bosh";
}
c2s_require_encryption = false
VirtualHost "auth.domainname"
authentication = "internal_plain"
admins = { "focus@auth.domainname" }
Component "conference.domainname" "muc"
Component "jitsi-videobridge.domainname"
component_secret = "password"
Component "focus.domainname"
component_secret = “password”
Конфиг от JVB:
# Jitsi Videobridge settings
# sets the XMPP domain (default: none)
JVB_HOSTNAME=domainname.com
# sets the hostname of the XMPP server (default: domain if set, localhost otherwise)
JVB_HOST=IP
# 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=password
# extra options to pass to the JVB daemon
JVB_OPTS="--apis=xmpp,rest"
# adds java system props that are passed to jvb (default are for home and logging config file)
JAVA_SYS_PROPS="$JVB_EXTRA_JVM_PARAMS -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"
0 ответов
Просто наткнулся на ту же проблему. Для любых будущих посетителей сделайте это:
Добавьте следующее к вашему /etc/jitsi/videobrigde/config
:
JVB_OPTS="--subdomain=jvb1"
или же
JVB_OPTS="--subdomain=jvb2"
соответственно.
Добавить еще один компонент в /etc/prosody/conf.d/jitsi.example.com.cfg.lua
:
Component "jvb1.jitsi.example.com"
component_secret = "password"
Component "jvb2.jitsi.example.com"
component_secret = "password"