Genvid Cluster Servers

Genvid Cluster Servers

Supervisor Servers

The supervisor servers are usually a cluster of micro servers that act as a point of registration and authority for all other Genvid services. Although a single server is enough to run the whole cluster, we recommend 3 or more servers to achieve high availability. These servers keep the state of the orchestration services consistent using a gossip protocol with a simple majority, allowing up to half of the supervisor servers to go down without affecting the service.

The principal tasks run by the servers are:

  • High-Available Key-Value Store for configuration.
  • Secure Key-Value Store that tightly controls access to tokens, passwords, certificates, API keys, and other secrets. (See Using Vault for more information.)
  • Service Registration exposed through both a DNS and an HTTP API.
  • Service Monitoring and Reporting on the health of the different worker instances.
  • Scheduler Service to scale the different services and restart them when they go down.

We recommend the supervisor servers don’t run any other tasks, given the critical nature of the services they handle. Instead, the supervisor servers should delegate tasks to the internal worker servers.

Public, Encoding, and Internal Workers

Worker servers execute and monitor tasks scheduled by the supervisor servers. They run client versions of the orchestration services which report to the supervisor servers.

  • Public workers handle services related to the external streaming clients. To support high loads, you generally need to run far more public-worker instances than internal-worker instances. Public workers are the only servers with public-facing open ports.
  • Encoding workers handle the composition and encoding tasks for your streams. Since you know the number of streams you’re encoding, they have the most stable load.
  • Internal workers handle game-related services, along with the Messaging Bus, and only connect to other trusted servers. Their load depends on the number of streaming clients connecting and what amount of load the public workers pass them.