Distribute users between 2 regions using HAProxy

Hi, Jitsi community!
On past Jitsi TheCall (but I think meet.jit.si part not youtube part) I heard some info about how we can split our users to their nearest videobridge using HAProxy and some attribute.
We have on-premise deployment of Jitsi-meed with JVB2.
We have 2 big offices and I want to same conference users from that offices connects to videobidge in local office and not remote office.
As I get, each office has it’s own HAProxy config with unique attribute. When user connect to Jitsi-Meet through HAProxy, it apply to that user session some attribute (e.g office1 for first office and office2 for second office) and then Jicofo look for that attribute and connect user to nearest JVB (in user local office, not in remote office).
I think that kind of JVB configuration fit our needs a lot.
So I need a technical details about that schema to implement it.
So, please help me with that @Boris_Grozev @saghul @damencho @bbaldino @gpolitis
And thank you guys for your great job!

Have you looked at this video?

1 Like

Very useful video, thanks a lot!
I subscribed to Jitsi channel, but didn’t see that video.
But, unfortunately that video doesn’t answer my question.
We can’t use GeoIP, because majority of clients are internal. And there is no about HAProxy attribute to split users.

Hey bro. This is really simple. Seems you want to scale jitsi. It has already been established that HA Proxy is a bad way to go with this. Scaleway has a superior model I think you should implement.

Here is a link

Check out my website and reach out to me if you need anymore help

https://easyjitsi.com/

image

See it right here

Where has it been ‘established’ that HA Proxy is a bad way to do this?

I don’t need scaleway or other cloud solutions. I have a currently working on-premise Jitsi deployment and want to implement nice load balancing between my 2 big offices.

Watch this

Read this

a bad implementation is “bad” irrespective of the technology used… :innocent:

#JustSayin

I dont see anything wrong in using HAProxy.

Ok, took some time to go through the documents provided. Nowhere I find reasonable arguments to assume HAProxy Stick Tables ‘bad’… On the scale of meet.jit.si it is now under consideration to possibly move away from that due to the sheer size of new consumer demand on a global scale.

As long as the development team develops against the infrastructure with HAProxy, I consider it the recommended way to go. We should try to answer incoming questions to this community-board with constructive answers and support instead of driving people away to uncertain alternative directions.

Indeed! Totally agree!

Hi! You can try our config sample: HAProxy Configuration

2 Likes

Sure man. Dont worry.

You need to have jvbs configured to use OCTO and to report their region, and jvbs connect cross region, to all your shards in different regions.
Then clients when hitting their closest HAProxy a custom region param is added and in nginx that param is replaced in config.js which is served to the client. This way the client will report its region to jicofo and jicofo can choose the closest bridge.

1 Like

Hi @damencho,
We also setup OCTO to detect different regions base on userRegion for select correct JVB.
And it only works when we host a full UI source (just only change file config.js with a different deploymentInfo) on where we host the instance of JVB. When we tried to put only config.js file to JVB server and setting Nginx refers to it, Jicofo can’t select the right JVB for user base on their regions.


Here’s our config.js. The shard is the same name for other JVB servers, just different on userRegion. We have gone through many topic on community and Github about multiple JVB setup but not make sure above config is correct. So can you please help us a correct way to apply config.js for different JVB servers?
Thank you,
Otis

When you have multiple jvb reporting different regions, jicofo would select for this user userRegion: "oceania_au" a jvb that reports region oceania_au

1 Like

I have my HAproxy config working to select different front ends based on user location by using stick tables.

Has anyone figured out how to add in haproxy.cfg the suffix #config.deploymentInfo.userRegion=“RegionX” to the incoming http-request to be able to select the closest bridge? if you are not using this method, how do you select the closest bridge to the user ?