Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Question] Clustering mode scaling on demand #556

Open
EchedelleLR opened this issue Sep 13, 2023 · 2 comments
Open

[Question] Clustering mode scaling on demand #556

EchedelleLR opened this issue Sep 13, 2023 · 2 comments

Comments

@EchedelleLR
Copy link

EchedelleLR commented Sep 13, 2023

Hi.

I have been trying to organize a configuration to auto-scale Janus on demand.

The very limited documentation of the README.md file suggests it is not possible in that way. I must:

  • run a single signaling proxy per Janus instance
  • this must be configured manually in the local config
  • reload the config

As it is showed, it does not seem clear if I can run an HAProxy on top of a Janus Server and then make the signaling server point to it, or an Nginx, or an Apache2 or a Caddy without having to deal with that very rudimentary scheme (maybe not because only each Janus knows which videoroom is handling unless is specified with a proxy per Janus servers with their specific keyid which marks them properly for the signaling server to know?).

Things also seem to suggest I must know exactly the number I want to run and keep it like that unless there is no need in long time, which prevents dynamic scaling.

The other suggestion is the signaling clustering option showed below but things are also not clear. I must:

  • run several signaling servers
  • specify each other in the local config of each one
  • reload them

As it is showed in this case, it does not seem clear if I must run a different set of Janus instances per signaling server instance and the need of editing the static configuration seems to avoid getting separated sessions (I guess it is the reason) and coordination between the instances.

Things also seem to suggest I must know exactly the number I want to run and keep it like that unless there is no need in long time, which prevents dynamic scaling.

Now, lets imagine a situation in a complicated day in an office:

  • there is a call of 8 users which is well supported in the machine
  • a new call is started with 10 more and autoscaling is needed
  • the autoscaling setups to keep 2 machines
  • the first machine is still running (and is disconnected from the rest) as this is handling a call
  • 2 new instances are up pointing with grpc at each other with their independent Janus instances
  • new calls are addressed to these instances
  • in the middle of that deployment, starting these calls, a new set of calls is needed and the instances need to scale up
  • now we need 3 instances: the first instance is still handling a call and the other two is with other calls connected between them
  • 3 new instances are up pointing at each other with grpc with their independent Janus instances

I have a total of 6 instances because every time I deploy new instances I must re-deploy existing instances pointing at each other since automated handling and reloading in place is not possible.a

The situation seems a bit mixed but I am trying to show that the current approach does not seem clear into how to autoscale instances on demand properly.

Also, there is lack of specification if I can run Janus behind a reverse proxy service balancing several Janus instances (I guess that no because how videorooms are created?).

@EchedelleLR
Copy link
Author

So, as told by the file config, an etcd machine can replace the need to specify targets.

What happens if a client is in a Janus hosted in a signaling server and this one gets shutdown while downscaling? Guessing the second setup of Load Balancer - Signaling Servers + Individual Janus for each signaling server.

Would the call for those users fall or would be routed to the other Janus of the other signaling server and recreated?

@fabiorasta
Copy link

Hi @EchedelleLR , were you able to figure out how to scale the signaling server + janus? I just have a lot of doubts. The documentation is very sparse in this regard.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants