From c67e956081a84f7a2fe68432d2ba506e0ca0c855 Mon Sep 17 00:00:00 2001 From: Claudio Costa Date: Thu, 24 Aug 2023 14:27:22 -0600 Subject: [PATCH] [MM-51909] Add horizontal scalability section for rtcd (#6614) * Add horizontal scalability section for rtcd * Update source/configure/calls-deployment.rst Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> --- source/configure/calls-deployment.rst | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/source/configure/calls-deployment.rst b/source/configure/calls-deployment.rst index 23087addf20..9a8aca439f5 100644 --- a/source/configure/calls-deployment.rst +++ b/source/configure/calls-deployment.rst @@ -312,6 +312,23 @@ Some caveats apply here. Web socket events (for example: emoji reactions, hand r In general, ``rtcd`` is the preferred solution for a performant and scalable deployment. With ``rtcd``, the Mattermost server will be minimally impacted when hosting a high number of calls. +Horizontal scalability +~~~~~~~~~~~~~~~~~~~~~~ + +The supported way to enable horizontal scalability for Calls is through a form of DNS based load balancing. This can be achieved regardless of how the ``rtcd`` service is deployed (bare bone instance, Kubernetes, or an alternate way). + +In order for this to work, the `RTCD Service URL `__ should point to a hostname that resolves to multiple IP addresses, each pointing to a running ``rtcd`` instance. The Mattermost Calls plugin will then automatically distribute calls amongst the available hosts. + +The expected requirements are the following: + +- When a new ``rtcd`` instance is deployed, it should be added to the DNS record. The plugin side will then be able to pick it up and start assigning calls to the new host. + +- If a ``rtcd`` instance goes down, it should be removed from the DNS record. The plugin side can then detect the change and stop assigning new calls to that host. + +.. note:: + Load balancing is done at the call level. This means that a single call will always live on a single ``rtcd`` instance. + There's currently no support for spreading sessions belonging to the same call across a fleet of instances. + Configure recording -------------------