Introduction
By default, EdgeVis Server auto load-balances all encoders across all servers within an MSR server cluster infrastructure to attempt to share the load (and risk). For many scenarios, this behaviour is preferred especially when all servers, their reliability, and their internet connections are roughly equal.
However, there are scenarios where finer-grained control of an encoder’s server location is desired:
When creating a primary/backup style deployment where one server should be used for all encoders, and the backup only be used in emergencies.
When there are geographical concerns – e.g. encoders are located nearer particular servers, and to ensure the best performance by avoiding network traffic crossing large distances.
Political/operational segregation – it may be desired to keep certain encoders on a particular set of servers (e.g. two departments utilising MSR to provide redundancy, but in normal operation preferring to keep their own encoders on their own server).
EdgeVis Server allows the user to create server pools and then set a preferred server pool on an encoder – either on a server-wide or domain-wide level.
Note: Any encoder that does not have a server preference set will continue to be auto load-balanced. If an encoder is assigned to a server pool, it will fail over between all servers within the pool. Should none of those servers be available it will then attempt to utilise any remaining server in the MSR infrastructure.
There are four steps (on an existing MSR server cluster) to make the best use of server pools:
Step 1: Create the server pool(s)
As a System Administrator (or a user with Server pool management permission), from the Server Home Page select Advanced Server Settings -> Multi-site resilience -> Manage Server Pools – this will present a list of existing server pools.
On a new server this list will be empty – select Add pool to create a server pool. Enter a name (e.g. ‘Primary-Servers’ or ‘West-Coast’) that will provide users with the context of which servers are in the pool and why.
In a primary/backup scenario, it is only required to create one server pool, as this is the pool that will be used to hold the primary servers. For other scenarios, create each pool as required for each geographical/organisational structure.
Step 2: Add individual servers to a specific pool
From the Server Home Page select Advanced Server Settings -> Multi-site resilience – this will present a list of servers within the multi-server MSR cluster.
Click on each desired server and select Edit this server’s pool(s). This will present a list of available server pools to select from. In complex scenarios it is possible to select multiple server pools for a server, however it is normally recommended to only add a server to one pool.
Step 3: Set a server-wide server pool policy for encoders
Note: This step is optional – if it is not performed the standard behaviour for encoders (unless overridden by Step 4) will be to auto load-balance all encoders across all servers in the MSR cluster.
From the Server Home Page select Advanced Server Settings -> Encoder settings -> Server preference.
This presents two options:
List of server pools
Tick the pool(s) that all encoders on the server should connect to by default. If more than one pool is selected, then the servers from all pools are combined into one list that all encoders will primarily connect to. It is important to remember that this is only a preference, and that should none of the servers within the selected pool(s) be available, the encoders will attempt to connect to one of the remaining servers within the MSR cluster (outside of the selected pools).
Allow encoders to move server while streaming
The server will normally only move encoders from one server to another (either through load-balancing, or back to a preferred server) when the encoder is not in use. This is to avoid a short amount of downtime for connected viewers while the encoder disconnects/reconnects. Tick this option if it is preferable for encoders to be moved back to their preferred server even if a client is viewing the video – this is most useful in a primary/backup server scenario where encoders are streamed 24/7.
It is possible to lock either of these settings down using the padlock icon – this will block users from performing Step 4.
Step 4: Set a per-domain server pool policy
Note: This step is optional – if it is not performed the standard behaviour for encoders (unless overridden by Step 4) is to use the settings (if any) applied in Step 3.
It is possible to set both settings configured in Step 3 on an individual domain basis – this is the primary method of segregating encoders on a geographical/organisational basis. Create Domains to contain encoders that should be grouped into the same server pool.
From the Domain Home Page select Encoder settings -> Server preference. This presents the same options as Step 3. By default, each setting will be configured to Inherit server default but by changing this to Domain specific setting it is possible to provide a domain override to the default behaviour.
For both settings either select the desired pool/setting or allow the domain to use the inherited setting from Step 3.