This looks fine. So you just need to add that 2nd colibiri block to your nginx.
But I posted the link up there - you should look at it.
Oh, my apologies - you need a 2nd block:
# colibri (JVB) websockets for additional JVBs
location ~ ^/colibri-ws/([0-9.]*)/(.*) {
proxy_pass http://$1:9090/colibri-ws/$1/$2$is_args$args;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
tcp_nodelay on;
Hi @Freddie
After I restart the Nginx, I got this issue.
root@meet:/etc/nginx/sites-available# nginx -t
nginx: [emerg] named location "@root_path" can be on the server level only in /etc/nginx/sites-enabled/meet.gathr.com.conf:128
nginx: configuration file /etc/nginx/nginx.conf test failed
Where did you add the block? It should be right after the original one. Oh, and make sure to close it out with a parenthesis.
# colibri (JVB) websockets for additional JVBs
location ~ ^/colibri-ws/([0-9.]*)/(.*) {
proxy_pass http://$1:9090/colibri-ws/$1/$2$is_args$args;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
tcp_nodelay on;
}
Hi @Freddie
After adding parenthesis now it’s working. Then I have create a meeting and at that time I checked the JVB logs. Then it looks like this.
RemoteCandidate=candidate:10000 1 udp 1853824767 112.134.158.173 41727 typ prflx
JVB 2022-02-28 17:35:37.005 INFO: [323] [confId=18847a21791dc493 gid=31408 stats_id=Adolfo-NSh conf_name=6322f5bf@conference.meet.gathr.com ufrag=6rn9q1ft0mdoqh epId=52f38cae local_ufrag=6rn9q1ft0mdoqh] ConnectivityCheckClient.startChecks#149: Start connectivity checks.
JVB 2022-02-28 17:35:37.006 INFO: [323] [confId=18847a21791dc493 gid=31408 stats_id=Adolfo-NSh componentId=1 conf_name=6322f5bf@conference.meet.gathr.com ufrag=6rn9q1ft0mdoqh name=stream-52f38cae epId=52f38cae local_ufrag=6rn9q1ft0mdoqh] Component.addUpdateRemoteCandidates#347: Update remote candidate for stream-52f38cae.RTP: 192.168.1.4:38297/udp
JVB 2022-02-28 17:35:37.007 INFO: [323] [confId=18847a21791dc493 gid=31408 stats_id=Adolfo-NSh componentId=1 conf_name=6322f5bf@conference.meet.gathr.com ufrag=6rn9q1ft0mdoqh name=stream-52f38cae epId=52f38cae local_ufrag=6rn9q1ft0mdoqh] Component.updateRemoteCandidates#484: new Pair added: 172.31.22.254:10000/udp/host -> 192.168.1.4:38297/udp/host (stream-52f38cae.RTP).
JVB 2022-02-28 17:35:37.047 WARNING: [333] [confId=18847a21791dc493 gid=31408 stats_id=Adolfo-NSh conf_name=6322f5bf@conference.meet.gathr.com ufrag=6rn9q1ft0mdoqh epId=52f38cae local_ufrag=6rn9q1ft0mdoqh] ConnectivityCheckClient.startCheckForPair#374: Failed to send BINDING-REQUEST(0x1)[attrib.count=6 len=92 tranID=0x56E666417F01F1ECD5081742]
java.lang.IllegalArgumentException: No socket found for 172.31.22.254:10000/udp->192.168.1.4:38297/udp
at org.ice4j.stack.NetAccessManager.sendMessage(NetAccessManager.java:631)
at org.ice4j.stack.NetAccessManager.sendMessage(NetAccessManager.java:581)
at org.ice4j.stack.StunClientTransaction.sendRequest0(StunClientTransaction.java:267)
at org.ice4j.stack.StunClientTransaction.sendRequest(StunClientTransaction.java:245)
at org.ice4j.stack.StunStack.sendRequest(StunStack.java:680)
at org.ice4j.ice.ConnectivityCheckClient.startCheckForPair(ConnectivityCheckClient.java:335)
at org.ice4j.ice.ConnectivityCheckClient.startCheckForPair(ConnectivityCheckClient.java:231)
at org.ice4j.ice.ConnectivityCheckClient$PaceMaker.run(ConnectivityCheckClient.java:938)
at org.ice4j.util.PeriodicRunnable.executeRun(PeriodicRunnable.java:206)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
JVB 2022-02-28 17:35:37.047 INFO: [333] [confId=18847a21791dc493 gid=31408 stats_id=Adolfo-NSh conf_name=6322f5bf@conference.meet.gathr.com ufrag=6rn9q1ft0mdoqh epId=52f38cae local_ufrag=6rn9q1ft0mdoqh] ConnectivityCheckClient$PaceMaker.run#942: Pair failed: 172.31.22.254:10000/udp/host -> 192.168.1.4:38297/udp/host (stream-52f38cae.RTP)
JVB 2022-02-28 17:35:37.047 WARNING: [332] [confId=18847a21791dc493 gid=31408 stats_id=Adolfo-NSh conf_name=6322f5bf@conference.meet.gathr.com ufrag=6rn9q1ft0mdoqh epId=52f38cae local_ufrag=6rn9q1ft0mdoqh] ConnectivityCheckClient.startCheckForPair#374: Failed to send BINDING-REQUEST(0x1)[attrib.count=6 len=92 tranID=0x57E666417F0130E64FC7C9DE]
java.lang.IllegalArgumentException: No socket found for 172.31.22.254:10000/udp->192.168.1.4:38297/udp
at org.ice4j.stack.NetAccessManager.sendMessage(NetAccessManager.java:631)
at org.ice4j.stack.NetAccessManager.sendMessage(NetAccessManager.java:581)
at org.ice4j.stack.StunClientTransaction.sendRequest0(StunClientTransaction.java:267)
at org.ice4j.stack.StunClientTransaction.sendRequest(StunClientTransaction.java:245)
at org.ice4j.stack.StunStack.sendRequest(StunStack.java:680)
at org.ice4j.ice.ConnectivityCheckClient.startCheckForPair(ConnectivityCheckClient.java:335)
at org.ice4j.ice.ConnectivityCheckClient.startCheckForPair(ConnectivityCheckClient.java:231)
at org.ice4j.ice.ConnectivityCheckClient$PaceMaker.run(ConnectivityCheckClient.java:938)
at org.ice4j.util.PeriodicRunnable.executeRun(PeriodicRunnable.java:206)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
JVB 2022-02-28 17:35:37.047 INFO: [332] [confId=18847a21791dc493 gid=31408 stats_id=Adolfo-NSh conf_name=6322f5bf@conference.meet.gathr.com ufrag=6rn9q1ft0mdoqh epId=52f38cae local_ufrag=6rn9q1ft0mdoqh] ConnectivityCheckClient$PaceMaker.run#942: Pair failed: 172.31.22.254:10000/udp/host -> 192.168.1.4:38297/udp/host (stream-52f38cae.RTP)
JVB 2022-02-28 17:35:37.187 INFO: [26] HealthChecker.run#171: Performed a successful health check in PT0.000001278S. Sticky failure: false
Is there any solution then please let me know .
Did you restart all services - both on your JVB and your main JMS server?
Hi @Freddie
Yes, I have restarted all the services. Previously my JMS server had an old prosody version. After that, I have upgraded to the latest version. Is that will be the reason for this error?
JVB 2022-02-28 17:43:25.243 INFO: [55] [confId=c19af6438da4751d gid=9262 stats_id=Adolfo-NSh componentId=1 conf_name=6322f5bf@conference.meet.gathr.com ufrag=enbp61ft0ms2c4 name=stream-74f5579f epId=74f5579f local_ufrag=enbp61ft0ms2c4] Component.updateRemoteCandidates#484: new Pair added: 172.31.22.254:10000/udp/host -> 192.168.1.4:41849/udp/host (stream-74f5579f.RTP).
JVB 2022-02-28 17:43:25.246 WARNING: [67] [confId=c19af6438da4751d gid=9262 stats_id=Adolfo-NSh conf_name=6322f5bf@conference.meet.gathr.com ufrag=fv39r1ft0ms1im epId=35b57a57 local_ufrag=fv39r1ft0ms1im] ConnectivityCheckClient.startCheckForPair#374: Failed to send BINDING-REQUEST(0x1)[attrib.count=6 len=92 tranID=0x3E0B6E417F01DF1EC99A7C34]
java.lang.IllegalArgumentException: No socket found for 172.31.22.254:10000/udp->192.168.1.4:42135/udp
at org.ice4j.stack.NetAccessManager.sendMessage(NetAccessManager.java:631)
at org.ice4j.stack.NetAccessManager.sendMessage(NetAccessManager.java:581)
at org.ice4j.stack.StunClientTransaction.sendRequest0(StunClientTransaction.java:267)
at org.ice4j.stack.StunClientTransaction.sendRequest(StunClientTransaction.java:245)
at org.ice4j.stack.StunStack.sendRequest(StunStack.java:680)
at org.ice4j.ice.ConnectivityCheckClient.startCheckForPair(ConnectivityCheckClient.java:335)
at org.ice4j.ice.ConnectivityCheckClient.startCheckForPair(ConnectivityCheckClient.java:231)
at org.ice4j.ice.ConnectivityCheckClient$PaceMaker.run(ConnectivityCheckClient.java:938)
at org.ice4j.util.PeriodicRunnable.executeRun(PeriodicRunnable.java:206)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
JVB 2022-02-28 17:43:25.247 INFO: [67] [confId=c19af6438da4751d gid=9262 stats_id=Adolfo-NSh conf_name=6322f5bf@conference.meet.gathr.com ufrag=fv39r1ft0ms1im epId=35b57a57 local_ufrag=fv39r1ft0ms1im] ConnectivityCheckClient$PaceMaker.run#942: Pair failed: 172.31.22.254:10000/udp/host -> 192.168.1.4:42135/udp/host (stream-35b57a57.RTP)
JVB 2022-02-28 17:43:25.252 WARNING: [67] [confId=c19af6438da4751d gid=9262 stats_id=Adolfo-NSh conf_name=6322f5bf@conference.meet.gathr.com ufrag=enbp61ft0ms2c4 epId=74f5579f local_ufrag=enbp61ft0ms2c4] ConnectivityCheckClient.startCheckForPair#374: Failed to send BINDING-REQUEST(0x1)[attrib.count=6 len=92 tranID=0x440B6E417F017B8588B96936]
java.lang.IllegalArgumentException: No socket found for 172.31.22.254:10000/udp->192.168.1.4:41849/udp
at org.ice4j.stack.NetAccessManager.sendMessage(NetAccessManager.java:631)
at org.ice4j.stack.NetAccessManager.sendMessage(NetAccessManager.java:581)
at org.ice4j.stack.StunClientTransaction.sendRequest0(StunClientTransaction.java:267)
at org.ice4j.stack.StunClientTransaction.sendRequest(StunClientTransaction.java:245)
at org.ice4j.stack.StunStack.sendRequest(StunStack.java:680)
at org.ice4j.ice.ConnectivityCheckClient.startCheckForPair(ConnectivityCheckClient.java:335)
at org.ice4j.ice.ConnectivityCheckClient.startCheckForPair(ConnectivityCheckClient.java:231)
at org.ice4j.ice.ConnectivityCheckClient$PaceMaker.run(ConnectivityCheckClient.java:938)
at org.ice4j.util.PeriodicRunnable.executeRun(PeriodicRunnable.java:206)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
JVB 2022-02-28 17:43:25.252 INFO: [67] [confId=c19af6438da4751d gid=9262 stats_id=Adolfo-NSh conf_name=6322f5bf@conference.meet.gathr.com ufrag=enbp61ft0ms2c4 epId=74f5579f local_ufrag=enbp61ft0ms2c4] ConnectivityCheckClient$PaceMaker.run#942: Pair failed: 172.31.22.254:10000/udp/host -> 192.168.1.4:41849/udp/host (stream-74f5579f.RTP)
I get that message as soon as a meeting is on the second (external) videobridge. I am not using Colibri, and can’t find any config file where the term “Colibri” is mentioned (on both servers):
This I find in the jvb.log of the second videbridgeserver, but I can’t make anything out of it.
JVB 2023-01-11 09:10:19.498 WARNING: [169] [confId=f2e09a639747d9d6 conf_name=open_session@conference.meet.[SERVER] meeting_id=dde4edeb] Conference.lambda$new$0#239: Took 759 ms to process an IQ (total delay 778 ms): <iq xmlns='jabber:client' to='jvb@auth.meet.[SERVER]/tzm19-IblApb' from='jvbbrewery@internal.auth.meet.[SERVER]/focus' id='anZiQGF1dGgubWVldC5pbnRlZ3JhdGEtY2Vnb3MuZGUvdHptMTktSWJsQXBiAEVBSTNRLTIxAA9GzXuKivJr' type='get'><conference-modify xmlns='jitsi:colibri2' meeting-id='dde4edeb-d4c6-410c-9b50-064450cc1833' name='open_session@conference.meet.[SERVER]' rtcstats-enabled='false' create='true'><endpoint xmlns='jitsi:colibri2' create='true' id='41c18ec8' stats-id='Miracle-Ulx'><media type='video'><payload-type xmlns='urn:xmpp:jingle:apps:rtp:1' clockrate='90000' id='100' name='VP8'><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' subtype='fir' type='ccm'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='nack'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' subtype='pli' type='nack'/><parameter value='800' name='x-google-start-bitrate'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='transport-cc'/></payload-type><payload-type xmlns='urn:xmpp:jingle:apps:rtp:1' clockrate='90000' id='107' name='H264'><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' subtype='fir' type='ccm'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='nack'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' subtype='pli' type='nack'/><parameter value='800' name='x-google-start-bitrate'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='transport-cc'/><parameter value='42e01f;level-asymmetry-allowed=1;packetization-mode=1;' name='profile-level-id'/></payload-type><payload-type xmlns='urn:xmpp:jingle:apps:rtp:1' clockrate='90000' id='101' name='VP9'><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' subtype='fir' type='ccm'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='nack'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' subtype='pli' type='nack'/><parameter value='800' name='x-google-start-bitrate'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='transport-cc'/></payload-type><payload-type xmlns='urn:xmpp:jingle:apps:rtp:1' clockrate='90000' id='96' name='rtx'><parameter value='100' name='apt'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' subtype='fir' type='ccm'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='nack'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' subtype='pli' type='nack'/></payload-type><payload-type xmlns='urn:xmpp:jingle:apps:rtp:1' clockrate='90000' id='97' name='rtx'><parameter value='101' name='apt'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' subtype='fir' type='ccm'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='nack'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' subtype='pli' type='nack'/></payload-type><payload-type xmlns='urn:xmpp:jingle:apps:rtp:1' clockrate='90000' id='99' name='rtx'><parameter value='107' name='apt'/></payload-type><rtp-hdrext xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0' id='3' uri='http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time'/><rtp-hdrext xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0' id='5' uri='http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01'/></media><media type='audio'><payload-type xmlns='urn:xmpp:jingle:apps:rtp:1' id='111' clockrate='48000' name='opus' channels='2'><parameter value='10' name='minptime'/><parameter value='1' name='useinbandfec'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='transport-cc'/></payload-type><payload-type xmlns='urn:xmpp:jingle:apps:rtp:1' clockrate='16000' id='103' name='ISAC'/><payload-type xmlns='urn:xmpp:jingle:apps:rtp:1' clockrate='32000' id='104' name='ISAC'/><payload-type xmlns='urn:xmpp:jingle:apps:rtp:1' clockrate='8000' id='126' name='telephone-event'/><rtp-hdrext xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0' id='1' uri='urn:ietf:params:rtp-hdrext:ssrc-audio-level'/><rtp-hdrext xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0' id='5' uri='http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01'/></media><transport ice-controlling='true'><sctp/></transport><sources/><capability name='source-names'/></endpoint></conference-modify></iq>
JVB 2023-01-11 09:10:19.741 WARNING: [177] [confId=f2e09a639747d9d6 conf_name=open_session@conference.meet.[SERVER] meeting_id=dde4edeb epId=41c18ec8 stats_id=Miracle-Ulx local_ufrag=bs9u51gmfu2h8k ufrag=bs9u51gmfu2h8k name=stream-41c18ec8 componentId=1] MergingDatagramSocket.initializeActive#599: Active socket already initialized.
JVB 2023-01-11 09:10:19.773 WARNING: [177] [confId=f2e09a639747d9d6 conf_name=open_session@conference.meet.[SERVER] meeting_id=dde4edeb epId=2846e040 stats_id=Eusebio-AGQ local_ufrag=cc0501gmfu2hvb ufrag=cc0501gmfu2hvb name=stream-2846e040 componentId=1] MergingDatagramSocket.initializeActive#599: Active socket already initialized.
Meetings work, video quality is unaffected.
When you added a second bridge did you make sure that is handled in nginx config?
Default config expect jvb on localhost.
No, because I am not using colibri, and besides that message everything works fine. Going to fool around with nginx later, when all is quiet.
You are using it, which is shown on the first line of the screenshot.
But I wonder where…
Without a working colibri channel to the bridge, your deployment will be limited to 180p. Clients can send HD, but noone will receive anything more that 180p, as clients need to request it to jvb to start forwarding resolution matching the view area size.
All your colibri channels land on the bridge on localhost even if you use the other one.
I believe I understood. Those are the steps I followed/ made sure are correct:
JMS
in
nginx/sites-available
upstream jvb1 {
zone upstreams 64K;
server 127.0.0.1:9090;
keepalive 2;
}
upstream jvb2 {
zone upstreams 64K;
server [IP external JVB]:9090;
keepalive 2;
}
RIght underneath the first colibri entry:
# colibri (JVB) websockets for additional JVBs
location ~ ^/colibri-ws/([0-9.]*)/(.*) {
proxy_pass http://$1:9090/colibri-ws/$1/$2$is_args$args;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
tcp_nodelay on;
}
Restart prosody jicofo nginx jitsi-videobridge2
Test:
curl http://[IP external JVB]:9090/
=> OK (receiving Jetty 404)
JVB (Server with external Videobridge)
/etc/jitsi/videobridge/jvb.conf
videobridge {
http-servers {
public {
port = 9090
}
}
websockets {
server-id = "[IP JVB external Server]"
enabled = true
domain = "[Domain Name JMS]:443"
tls = true
}
}
Restart jitsi-videobridge2
Test:
curl http://[IP JMS]:9090/
=> OK (receiving Jetty 404)
Still receiving mentioned errors, but meetings work.
“ufw” is disabled on both machines.
The curl- test was made after finishing all of the steps above, of course, not in between.
What am I missing?
I am confirming now that the error message has disappeared. I don’t get the reason why, maybe “service stop”/ “Service start” should haven been preferred over “restart” while testing with browsersessions still being active.
Thank you all!