Octo not working

Hi team,

I’ve been working on setting up jitsi and am particularly interested in how to scale it.
I’ve watched all your videos and read I think most of the documentation.

I’m able to set up a cluster with one meet server (jicofo, prosody, meet, Nginx, videobridge) and an additional two separate video servers. so 3 video bridges in total, all good. yay!

Now i’m trying to set up octo, as I’d like to have bridges in two different geo regions and have local users use the one closest to them (users in one meeting will be in different parts of the world). But i’m getting stuck and need some help to get going or understand it better.

below is my setup.

After that i’m joining with 3 separate clients like this:

meet[.]testdomain[.]io/test#config.deploymentInfo.userRegion:“region2”
meet[.]testdomain[.]io/test#config.deploymentInfo.userRegion:“region1”
meet[.]testdomain[.]io/test (Ipad client using jitsi app)

The regions appear to be picked up correctly (i think), but all clients end up on the same bridge (server1).

I was expecting Octo to kick in and land the user connecting with deploymentInfo.userRegion:“region2” to end up on server3
server3 > /jitsi/videobridge/sip-communicator.properties
org.jitsi.videobridge.REGION=region2

Also when in the video conference, I see the server count (1), but never what server I’m connected to.

This is what i see in /var/log/jitsi/jicofo.log

Jicofo 2020-03-23 15:55:10.302 INFO: [86] org.jitsi.jicofo.AbstractChannelAllocator.log() Using jitsi-videobridge[.]meet[.]testdomain[.]io to allocate channels for: Participant[test@conference.meet.testdomain.io/f978d545]@1955073960

Note the region strings:
Jicofo 2020-03-23 15:55:09.703 INFO: [50] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Region info, conference=ff6be8 octo_enabled= true: [[null, region2, region2, region2]]

It appears to indicate that octo_enabled is enabled, it somehow picked up region2 (from the first client that connected) but appears to have ignored region1?

It chose video node: ‘jitsi-videobridge’, which is the one locally on the same node as jicofo. Note that this node has ‘org.jitsi.videobridge.REGION=region1’ in /etc/jitsi/videobridge/sip-communicator.properties.

(I’ve seen it successfully use other video nodes too, so the multiple bridges work).

As a new user to this forum, I don’t seem to be allowed to upload files. I’ve uploaded all logs and config files to google drive here: https://drive.google.com/drive/folders/1dtaSh9FleHoOO_AcqEJcCcQ6msDh0ayR

Hoping you can provide some guidance.

Thanks

Ps. i added the [.] things in links as the forum code is complaining about posting to many links/urls

Hi,

There’s a little trick here. The “deploymentInfo” key is not whitelisted, and therefore is not allowed to be overridden via the URL. The easiest (though I admit extremely hacky) way to fix this is to edit the minified javascript is /usr/share/jitsi-meet/libs/app.bundle.js. If you search the file for “disableRtx” (completely unrelated) you will find a list of strings. Add “deploymentInfo” to the list. Then you can verify the region is correctly set by opening a conference and checking “config.deploymentInfo” in the javascript console.

This is expected: we only display “connected to” when you’re connected to a bridge in a region different than yours.

This confirms that clients don’t override the region. It also shows jicofo doesn’t know this bridge’s region (null), though the configuration seems correct. I suspect this has to do with jitsi-videobridge connecting as an XMPP component, I don’t think we’ve tested it this way and unfortunately the feature is now deprecated andd we don’t have the bandwidth to look into it. I suggest you migrate you using MUC (this will soon be the default in debian installations):

Regards,
Boris

Hi Boris,

I followed your instructions to add the deploymentInfo key to my install. I seem to be able to pass the key by appending the following to my meeting URL:

#config.deploymentInfo.userRegion:“region2”

However, when I check with config.deploymentInfo in console, I can see it is not parsing the key correctly and what I see is:

{userRegion: “useast”, userRegion:%22region2%22: undefined}

Any thoughts on how to fix this?

1 Like