How can the same JVB's work with multiple JMS (Prosody/jicofo)?

Hi All,

I’m trying to point two different JMS deployment to same JVB’s server. ( without any load balancer).
My intention is to two different jitsi deployment (Prosody + Jicofo) which can access the same JVB’s server.

Architecture -
image

I have few question on this :-

  1. Is this solution feasible to implement ?

  2. How sharing JVB’s point to two different domain of JMS’s like below
    jitsi.abc.com domain name of JMS1 (Prosody+ Jicofo)
    jitsi.xyz.com domain name of JMS2 (Prosody+ Jicofo)

  3. What domain name we need to provide in shaing JVB if we consider above domain of JMS’s.

Please advice

What is the actual problem you are trying to solve?

We have a use case where we need to provide Jitsi service with our custom app to two different entity.
Hence it is difficult to afford multiple JVB’s instance for each entity.
So we are trying to make JVB’s as a sharing service between two different JMS’s.

If you think the above Architecture is feasible and what are the things I need to take care, would be really helpful.

Team,

Consider above architecture, If I provide domain jitsi.abc.com to JMS1 and
domain jitsi.xyz.com to JMS2. (JMS’s included Prosody+Jicofo).
In that case, what domain I have to provide during jitsi video bridge installation for JMS1 and JMS2.
We want that JVB to be shared by JMS1 and JMS2.

That doesn’t matter it can be different, it can be the same. It can be totally different from the DNS you use.
The only touching point between the virtual host that is configured in prosody and the nginx config is here: jitsi-meet/jitsi-meet.example at d40aecb05db7dd85ebc5e91832d4a3dadd5b88b7 · jitsi/jitsi-meet · GitHub

So let’s say you configure your nginx using the jitsi-meet template to use DNS jitsi.abc.com, but then when installing jitsi-meet you enter meet.jitsi as address. Then in nginx config just on the Host param - the link I shared above don’t pass $http_host; but meet.jitsi and you can have DNS to be different from the virtual host names used in the rest of the environment. This is how docker install is configured by the way.

Hi @damencho ,

So I configured 2 different JMS (nginx, jicofo + prosody) servers with two different hostnames.
For example -

After that I have configured JVB with domain jitsi.abc.com on server.
And update file sip-communicator.properties and provided private IP of JMS’s server as shard1 and shard2.

org.jitsi.videobridge.xmpp.user.shard1.HOSTNAME=Private-IP-OF-JMS-1
org.jitsi.videobridge.xmpp.user.shard2.HOSTNAME=Private-IP-OF-JMS-2
org.jitsi.videobridge.xmpp.user.shard.DOMAIN=auth.jitsi.abc.com
org.jitsi.videobridge.xmpp.user.shard.USERNAME=jvb
org.jitsi.videobridge.xmpp.user.shard.PASSWORD=test123
......

But getting error when trying to create a conference call from any JMS’s server either JMS-1 or JMS-2, getting below error -

Jicofo 2023-05-30 13:43:52.211 WARNING: [42] BridgeSelector.selectBridge#183: There are no operational bridges.
Jicofo 2023-05-30 13:43:52.211 SEVERE: [42] [room=opencoloursdesignatetwice@conference.jitsi.xyz.com meeting_id=47b47885-0d19-4305-9363-58f15c80aff3 participant=229d74a9] ParticipantInviteRunnable.doRun#217: Can not invite participant, no bridge available.

Is this the right way to make JVB share between two different JMS servers ?
Please correct me How we can share JVB between two different JMS servers.

You need to duplicate all the settings for the different shards.

In the snippet above you have various settings for 3 shards with id: shard1, shard2 and shard.

So currently I used below code block in my both JMS server file - /etc/nginx/sites-enabled/jitsi.abc.com.conf and /etc/nginx/sites-enabled/jitsi.xyz.com.conf -

    # colibri websocket(s) for videobridge(s)
    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;
    }

I followed this doc to setup JMS and JVB - A guide to setting up a Jitsi Meet server with seperate videobridges in 2022. - Blog: Semaphor

If above steps is not correct in this case - Are you saying to duplicated all the setting for the different shards ?
In the snippet above you have various settings for 3 shards with id: shard1, shard2 and shard.-
Can you point me where I need to update ?

I’m talking about this. This config defines settings for 3 shards and some of those I suppose are incomplete, you need to fix that.

1 Like

Thanks for the guidance,

I have updated as below now and it is working but wanted to confirm - Is this the right approach ?

org.ice4j.ice.harvest.DISABLE_AWS_HARVESTER=true
org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=meet-jit-si-turnrelay.jitsi.net:443
org.jitsi.videobridge.ENABLE_STATISTICS=true
org.jitsi.videobridge.STATISTICS_TRANSPORT=muc
org.jitsi.videobridge.xmpp.user.shard1.HOSTNAME=Private-IP-OF-JMS1
org.jitsi.videobridge.xmpp.user.shard1.DOMAIN=auth.jitsi.abc.com
org.jitsi.videobridge.xmpp.user.shard1.USERNAME=jvb
org.jitsi.videobridge.xmpp.user.shard1.PASSWORD=test123
org.jitsi.videobridge.xmpp.user.shard1.MUC_JIDS=JvbBrewery@internal.auth.jitsi.abc.com
org.jitsi.videobridge.xmpp.user.shard1.MUC_NICKNAME=e44eb0fc-4e60-4cd3-a95e-4e43084a9853
org.jitsi.videobridge.xmpp.user.shard1.DISABLE_CERTIFICATE_VERIFICATION=true
org.jitsi.videobridge.xmpp.user.shard2.HOSTNAME=Private-IP-OF-JMS2
org.jitsi.videobridge.xmpp.user.shard2.DOMAIN=auth.jitsi.jms.xyz.com
org.jitsi.videobridge.xmpp.user.shard2.USERNAME=jvb
org.jitsi.videobridge.xmpp.user.shard2.PASSWORD=test123
org.jitsi.videobridge.xmpp.user.shard2.MUC_JIDS=JvbBrewery@internal.auth.jitsi.jms.xyz.com
org.jitsi.videobridge.xmpp.user.shard2.MUC_NICKNAME=e44eb0fc-4e60-4cd3-a95e-4e43084a9853
org.jitsi.videobridge.xmpp.user.shard2.DISABLE_CERTIFICATE_VERIFICATION=true

So Is it fine that MUC_JIDS and MUC_NICKNAME common between two shards ?
Currently Cert verification is disable - I will update it after sometime.

I have to add 2 more JVB hence on both new JVB’s - I have to follow the same approach right ?

MUC_NICKNAME needs to be unique per jvb. So this is fine if the other jvbs will have different identifier for connecting the mucs. Same muck nickname for different shards is fine.

Yep, just make unique nicknames for them.

1 Like