EdgeVis Server enabling Multi-Site Resilience

This article describes how to create a ‘cluster’ of servers to provide an automatic fail-over capability in the event of a server outage.

Updated this week

Introduction

What is Multi-Site Resilience?

At its simplest, Multi-site Resilience (MSR) is the ability to have multiple servers work together to provide an automatic fail-over capability so that, should one server fail, the remaining servers take over and all existing encoders/viewing clients continue to operate without user intervention.

Multiple servers join together to create a Server Cluster.


NOTE: The maximum number of servers in a cluster is FOUR. If you require a larger deployment, more sophisticated (but complex) solutions are available - please contact Digital Barriers for further details.


Each machine in the cluster automatically synchronises accounts and rules and provides a connection point for encoders and viewing clients to connect to. On initial connection to any of the servers an encoder/viewer will then be supplied the address of all available servers to ensure the latest cluster information is shared:

When a viewing client asks for a video stream, it is seamlessly directed to the appropriate server that hosts that particular encoder – this can mean that viewers are simultaneously connected to multiple servers within the cluster at the same time.

In the event of an issue with one of the servers within the server cluster, the encoder already knows the location of the remaining servers and will automatically connect to another server. This failover can take up to 10 seconds to occur, during which time viewers will not receive video for encoders connected to the lost server.

Viewers will also automatically connect to another server within the cluster, and will learn the new location of all encoders from the lost server. This allows video playback to resume automatically, without intervention of the user.

Auto load-balancing

To avoid overloading any one server in the server cluster, the cluster will automatically move encoders from one server to another to roughly create an equal number of encoders across each server. All of this happens transparently, and encoders/viewers will be directed to the correct location automatically. Encoders are only moved when they are not in use to avoid any user disruption.

After a lost server returns to the server cluster, the cluster will load balance (after a period of stability) to ensure load is again evenly spread across all servers.

It is possible to override the server’s default balancing behaviour by using the Server Pool/Preference capability. This will force the encoders to ignore auto load-balancing and default to a supplied server (or collection of servers).

Scoping bandwidth requirements

When deciding the bandwidth and processing power required for each server within the cluster, it is important to calculate based on worst case situations. For example, should one server go offline in a two-server cluster, then all encoders/viewers will be hosted on one server, which must be able to handle the load and bandwidth throughput of all attached encoders.

What problems is MSR designed to solve?

MSR is designed to:

  • Replace the old manual primary/backup server scheme
    EdgeVis encoders running pre-V7.1 firmware can be configured to connect to two different servers, and fail over to the backup server in case of an issue with the primary server. This scheme has a number of shortcomings including manual synchronisation of accounts between servers and viewing clients are required to manually find which server an encoder is connected to.

  • Provide an automatic, transparent scheme for encoders and users
    MSR is designed to remove the complexity of failover for end-users, both during deployment/setup and during normal operation – should one server go offline, all encoders and viewing clients will automatically continue to operate using another server.

  • Make it easier to manage large deployments
    Once a server has over 500 encoders, it is recommended to consider using additional servers to maintain performance levels. This introduces complexity for users who have to manually create and manage the same user accounts on each server. With MSR, and its ability to load-balance, adding an additional server (that meets the hardware and connectivity requirements) should increase the capacity of the system.

What problems does MSR not solve?

There are many different forms of redundancy and failover. MSR does not:

  • Provide a hot-failover capability
    For some, it is preferable that only one server operates under normal conditions – and if this server goes offline a second server kicks in and takes over the responsibility of the first server. MSR does not provide this kind of mechanism. With MSR, under normal conditions, all servers in a cluster are online an operational at all times.

  • Allow selective routing of video across limited bandwidth links
    Video is always sent from the server that hosts the encoder – there is no server-to-server routing of video traffic. Within a cluster each server is created equally, and it is assumed that any encoder/viewer has a link of equal connection quality to any server in the cluster. It is not possible to have a ‘local’ server that is used to view the video locally, and a ‘remote’ server that is only occasionally used when remote viewers wish to view the same video stream – all video will be served from the same server.

  • Dynamic bonding/scaling of server clusters
    MSR is designed with the assumption that all servers (and their accounts databases) are online for normal operation, and should a server go ‘offline’ (including communication issues between two servers), that efforts are made to re-join all servers as quickly as possible. When the link between the servers is repaired the two servers will resynchronise database changes and it is possible that there may be conflicting changes – the server that has been running longest takes priority and will replicate to all other servers.
    Standard operating procedure should be that servers only be ‘offline’ from the cluster for as little time as possible, and assume that any changes made to accounts on an ‘offline’ server could be potentially lost.


Readiness Checklist

Before you begin…

Multi-site resilience (MSR) is an enterprise level feature that requires careful planning. As part of the preparation for enabling Server Redundancy please review the following checklist to determine if there are any additional steps that should be performed, and whether your current encoder/viewer installations are compatible with MSR:

The following sections outline each of the items in more detail…

Check…

Description

Checked?

Check 1

Server system requirements

Check 2

Server-to-Server connection requirements

Check 3

Do existing encoder firmware need upgraded?

Check 4

Are current viewing clients/VMS/utilities compatible?

Only if each item has been checked (and any required actions de-risked and planned) should you proceed onto the installation steps in the next chapter.

Failure to prepare for MSR can create a situation where encoders will attempt to connect to the wrong backup server, and older viewing clients will no longer be able to connect.

Check 1 - Server system requirements

The following hardware specifications will support up to 500 encoders and 500 video streams simultaneously. Users looking to support more than 500 encoders should consider utilising multiple servers – please refer to the Installation Steps section for instructions for installing a multi-server installation using MSR.

  • A 64-bit PC running Windows 8 and above or Ubuntu 18.04 LTS/20.04 LTS, Red Hat / Centos 7.6
    Other Linux distros may work, but installation support will be limited on other platforms

  • Up to 20 encoders (stand-alone server)

    • Dual-Core 2.0GHz+ processor, Quad-core or Intel i3 or higher recommended

    • 4GB RAM, 8GB recommended

  • Up to 200 encoders

    • Intel i5/Xeon Quad-Core 2.5GHz+ processor (note that many mobile i5/i7 processors are only dual core)

    • 8GB RAM

  • Over 200 encoders

    • Intel i5/Xeon Quad-Core 2.5GHz+ processor (note that many mobile i5/i7 processors are only dual core)

    • 16GB RAM

  • At least 4GB free disk space

  • A static IP address (both on the local network, and externally to the Internet)

All installation types of EdgeVis Server require:

  • An internet connection that can support the combined bandwidth needs of the encoders and viewers

  • Specific ports opened/forwarded on any intervening Internet firewall/router for video transmission. Not opening individual ports can be used to disable access to those services from the internet:

Encoder

Port 9300 (UDP)

Viewer

Port 9300 (TCP) – Initial connection channel (unencrypted)

Port 9301 (TCP) – Initial connection channel (encrypted)

Ports 2048 (UDP) – Video / Full-res / Recording Download channel

Server Web Management Interface

Port 9443 (TCP)

  • An accurate synchronised system clock (Windows will do this automatically; Linux may require an NTP client)


Running EdgeVis Server in a multiple server configuration requires the following:

  • Each of the PCs in the cluster must be accessible to the other PCs without using port forwarding. For example, they must all be on the same local network or on networks connected together using a VPN.

  • Specifically, these ports must be accessible on each server PC (from every other server PC):

    • Port 1527 (TCP)

    • Ports 47100 & 47500 (TCP)

    • Port 9443 (TCP)

  • The connections between all the server PCs must meet these requirements:

    • Maximum 100ms round trip time

    • Minimum 10mbps bandwidth, 50mbps recommended
      Slower links will result in a longer recovery period after a failure.

  • Multiple servers may share one internet connection with port-remapping.

Cloud/virtual machine users

Running in a virtual machine/cloud environment is supported, however it should be noted that it is not uncommon for virtual machines to share resources between other users and performance can suffer in an unpredictable manner.

To counter this, it is recommend to over-specify any virtual machine. For example, Amazon users should consider a m5.xlarge instance for systems running > 20 encoders.


Linux users

This article primarily deals with installation of MSR on Microsoft Windows, however Linux installations can also utilise MSR. To enable MSR on Linux follow these instructions, and when instructed to install EdgeVis Server, refer to the document EdgeVis Server v8.X - Linux Installation and Upgrading for Linux guidance.


ACTION: Does your server hardware/installation meet these requirements?

Check 2 – Server-to-Server connection requirements

Each installation of EdgeVis Server contains a database that holds all accounts, permissions, alarm rules and events. One database will, during normal operation, be designated the master and will service requests from every server within the cluster. Each other database within the cluster will contain a synchronised copy of the all data, to allow another to take over if required. To enable this synchronisation the following requirements MUST be met:

  • Each of the PCs in the cluster must be accessible to the other PCs without using port forwarding. For example, they must all be on the same local network or on networks connected together using a VPN.

  • Specifically, these ports must be accessible on each server PC (from every other server PC):

    • TCP 1527

    • TCP 47100

    • TCP 47500

    • TCP 9443

  • The connections between all server PCs must meet these requirements:

    • Maximum 100ms round trip time

    • Minimum 10mbps bandwidth, 50mbps recommended. Note this is the bandwidth dedicated to server to server communication and not the total bandwidth of the link. For example, a 100 mbps link with 95mbps of other traffic would not be suitable.

    • The slower the link between server PCs, the longer it will take for the databases to resync after major outages. Minor outages are handled through syncing differences, while major outages (or a new server PC) will require a full synchronisation – the faster the connection, the faster all databases will be synced.

Where the servers exist in different locations it may be necessary to create a VPN connection between sites to allow all servers to communicate with each other.

ACTION: Have you verified that it is possible to connect the servers within the cluster via the ports listed above, and that the link between is of sufficient speed/latency?

Check 3 – Do existing encoder firmware need upgraded?

All existing encoder firmware are compatible with servers using multi-site resilience (MSR). However older firmware will work in a compatibility mode, the behaviour of which will depend on the configuration of the encoder.

Review the table below and decide if it would be prudent to upgrade all encoders to 7.1+ firmware IN ADVANCE of upgrading the server.

Firmware version

Backup server configured?

New behaviour in

7.0.X and below

Only PRIMARY Server configured

Encoder will only ever connect to the server originally configured as the PRIMARY server. Should that server go offline, the encoder will remain offline.

RECOMMENDED ACTION: Add to list to be upgraded.

7.0.X and below

PRIMARY and BACKUP configured

Similar behaviour to original primary/backup scheme - as long as PRIMARY and BACKUP servers are part of the server cluster.

Encoder will connect to PRIMARY and fail over to the BACKUP server should the PRIMARY server go offline. The encoder will stay there until rebooted.

RECOMMENDED ACTION: Add to list to be upgraded.

7.1+

Only PRIMARY Server configured

This is the default configuration, and the encoder will automatically connect to any available servers within the cluster.

7.1+

PRIMARY and BACKUP configured

The encoder will ignore the BACKUP server setting, and automatically connect to any available servers within the cluster.

While it is recommended to upgrade encoder firmware prior to enabling MSR, upgrading encoder firmware post server installation is also possible. Encoders upgraded to 7.1+ will automatically learn the list of servers within the cluster and reconnect using the PRIMARY server.

ACTION: Create a list of encoders that should be upgraded to enable MSR

Mobile Encoders

Older Mobile Encoders do not support the PRIMARY/BACKUP scheme and will only connect to the server address provided. Users should be encouraged to upgrade to the latest version available within the respective app store to enable MSR compatibility once the server upgrade is complete.

ACTION: Create a list of mobile encoder users that should be informed to update their app

Check 4 – Are current viewing clients/VMS/utilities compatible?

Older viewing clients will not function properly on a server with multi-site resilience (MSR) enabled – they do not understand that encoders may be moved between servers, and users would incorrectly be told encoders are off-line.

ACTION: Review the tables below, and check that existing users will not be ‘cut-off’ after enabling MSR.

ACTION: Create a list of users/software that must be upgraded once the upgrade is complete.

There are three categories that a viewing client will fall into:

  • Fully-compatible

  • Partially-compatible – will work within a limited compatibility mode

  • Not-compatible – will not work, and will need upgraded to continue

Fully-Compatible Clients

Client

Version

EdgeVis Client

V7.1 or above (all platforms)

Third-party VMS/applications

Using EdgeVis Decoder SDK V7.1 or above

VMS Gateway
(formerly ONVIF Gateway)

V7.1 or above (release due in Q4 2017)

D200/D400/D1000

V7.1 or above (release due in Q4 2017)

ACTION: It is important users of third-party VMS/applications check with their supplier that their software uses an appropriate version of the EdgeVis Decoder SDK.

Partially-Compatible Clients

By default, the server will treat these versions as incompatible. However, it is possible to enable a compatibility mode on the server that will allow these versions to work in a limited compatibility mode – please refer to Appendix A for further details.

Client

Version

EdgeVis Client

V6.7.x to V7.0.x (Windows only)

Third party VMS/applications

Using EdgeVis Decoder SDK V6.2.3 or above

Milestone

EdgeVis Camera Driver (Device pack 8.9 and above)

Airship

Airship 5.3.1

Not-Compatible Clients

These clients are incompatible with MSR and will not be updated to make them work. Customers must either upgrade to a compatible client or contact their VMS provider to discuss their upgrade options.

Client

Version

EdgeVis Client

V6.6.X and older (Windows only)

EdgeVis Client

V7.0.X and older (iOS/Android)

Third party VMS/applications

Using EdgeVis Decoder SDK V6.2.0 or below

Using TVI Decoder SDK (any version)

TVI Viewer

All versions

TVI Manager

All versions

ONVIF Gateway

All versions

D200/D400/D1000

V1.7.X and older

Milestone

TVI Camera Driver (any version)

EdgeVis Camera Driver (Device pack 8.8 or below)

Airship

5.3.0 and older


What will happen if an incompatible client connects to a server with MSR enabled?

EdgeVis Server will detect incompatible clients and provide a warning when the user attempts to view a list of available video streams. For example, users of TVI Viewer would observe the following:


Installation steps

The installation steps are slightly different for new installations, or for customers wishing to upgrade an existing server installation – Step 1 is different for both situations. Please follow the checklists below as appropriate:

Upgrading an existing EdgeVis Server…

ACTION: Is the server running the latest release (V7.1+)? If not follow the normal upgrade process and upgrade the server before proceeding!

Each of the steps is outlined in the following sections.

Step

Description

Performed?

Step 1a

Prepare server database to work in MSR mode

Step 2

Upgrade encoder firmware and viewing clients/VMS as required

Step 3

Enable MSR mode on the first PC

Step 4

Add additional server PC(s) to the server cluster

Step 5

License the server cluster to allow all servers/encoders/clients to connect

Installing clean servers from scratch…

Each of the steps is outlined in the following sections.

Step

Description

Performed?

Step 1b

Install the Server in stand-alone mode on the first PC

Step 2

Upgrade encoder firmware and viewing clients/VMS as required

Step 3

Enable MSR mode on the first PC

Step 4

Add additional server PC(s) to the server cluster

Step 5

License the server cluster to allow all servers/encoders/clients to connect

Step 1a: Prepare server database to work in MSR mode
(For users who are upgrading an existing server)

Servers that were originally installed using EdgeVis Server 7.0.X and below need to convert their databases to operate in MSR mode.

ACTION: Is the server running the latest release (V8.0+)? If not, upgrade the server before proceeding!

  1. Stop the server service

  2. Take a backup copy of all files within C:\Program Files (x86)\EdgeVis Server\bin (as a precaution)

  3. Open a Command Prompt from the Start Menu, ensuring to right click and selecting Run as Administrator

  4. Run the following commands, leaving the Command Prompt open:

    cd C:\Program Files (x86)\EdgeVis Server\bin


  5. Run the following command in the Command Prompt (this will take several minutes to complete):

    java -DENABLE_CONSOLE=true -jar NetworkServer.jar -pg-migrate


  6. Start the server service, and log in to the server’s web interface to confirm the server is operating again

OR

Step 1b: Install EdgeVis Server on the first PC
(For users who are performing a clean installation)

Refer to the EdgeVis Server Setup Guide and follow the instructions in the earlier section Installing EdgeVis Server on Microsoft Windows to install EdgeVis Server. Linux installation instructions are also available on the support site.

Normally the next step would be to obtain a licence from Digital Barriers for the server – however in this instance it is possible to wait until all servers are set up and working before requesting the licence. Any encoders that require firmware upgrading in the next step can be upgraded using USB flash drives if necessary.

Step 2: Upgrade encoder firmware / viewing clients as required

While reviewing the readiness checklist some of the actions required creating lists of upgrades required:

  • Upgrade encoder firmware to allow full MSR compatibility

  • Upgrade existing Digital Barriers viewing clients and utilities to the latest version to avoid users losing access to their video streams.

  • Upgrade / review any third-party VMS software to ensure continued compatibility

At this stage, the first server in the cluster is still running in single server mode and so all encoders/clients should operate as normal regardless of firmware/version. Take this opportunity to upgrade all of the items in the above checklists, as the upgraded components should continue to operate as before, while minimising down-time/issues during later steps.

Step 3: Enable ‘Multi-Site Resilience’ mode

By default, an EdgeVis Server runs in stand-alone mode and must be converted to MSR mode to allow the creation (and licensing) of a server cluster.

From the server homepage click the Advanced server settings link at the bottom of the page. Then click the Multi-site resilience option.

Click the Enable multi-site resilience button on the right.

Once the operation is complete, this EdgeVis Server will still be operational and is, in effect, a server cluster containing just one server. Any viewing clients that are in the ‘Not-compatible’ category will no longer be able to connect at this point.

Step 4: Install EdgeVis Server on remaining server PC(s)

Run the EdgeVis Server installer on any other PC that will join the server cluster. Follow the standard installation steps until the setup wizard starts.

  • Type of installation – use the second option to connect the second server to the first server:

  • Existing server credentials – enter the internal address for the first server and the credentials for a server administrator account with the Manage cluster permission granted (the default Administrator account is configured for this)

    Note: the first server must be online at this point

  • Addresses for this server – it is required to supply the IP addresses for the server.

    • The external address is the IP address encoders will use to connect to the server from outside the organisation (e.g. from the internet).

      (Simply googling ‘what is my IP’ from a web browser on the server PC can help determine the external IP address if it is not known).

    • The internal address is the IP address of the server on the local network. Note: For server redundancy this IP address must be accessible to all PCs that participate in the cluster.

Logging onto the web interface of the second server, at this stage, will present a message that should confirm the server has joined the server cluster, and is ready to be licensed.

To check the installation of the second server, and clustering support is enabled return to the web interface of the first server and refresh the Multi-site resilience settings page. This should now show the new server as a member of the cluster (with a warning that it is unlicensed).

Step 5: License both servers

With both servers now connected the final stage is to request a licence for the servers within the cluster.

If unfamiliar with the process of how to request a server licence, follow the Installing licences on EdgeVis Server section from the EdgeVis Server Setup Guide to request a licence, as you would for a single standalone server. It is only necessary to make one request – the hardware signature for every PC in the cluster is included in the request.

Once installed the licence is automatically transferred to every PC in the cluster, and it will now be possible to log in to the web interface on each PC in the cluster.

Benefitting from Multi-Site Resilience

For both encoders and viewing clients, end-users should be unaware of the complexity of Multi-site Resilience, and need only supply the address of any of the PCs in the server cluster.

Encoders

Provide the encoder the external address (either IP Address or DNS name) of ANY of the PCs in the server cluster.

  • Encoders will be automatically provided the address of all servers within the cluster when they first connect

  • Encoders will be automatically directed to the correct server to aid with load-balancing

  • Encoders will attempt to connect to a different server within the cluster should its original server fail

All of the above happens behind the scenes and the end-user should only notice a short period of disruption while the encoders/clients switch over to another PC in the cluster.

The choice of which server the encoder joins is decided when the encoder connects to the server (and will normally be the lightest-loaded server). When the encoder is connected, but not streaming, the server may choose to move an encoder to another server as this will balance the load between servers.

Some encoders include a Backup Server address field – this is ignored on servers with redundancy enabled. Encoders upgraded to V7.1 with this setting configured will switch to using the addresses supplied by the cluster.

Viewing clients / Third-party VMS

Provide the client the external address (either IP Address or DNS name) of ANY of the PCs in the server cluster.

  • Clients will be automatically provided the address of all servers within the cluster when they first connect

  • When viewing an encoder, clients will be automatically directed to the correct server hosting that encoder

  • Clients will attempt to connect to a different server within the cluster should its original server fail

All of the above happens behind the scenes and the end-user should only notice a short period of disruption while the encoders/clients switch over to another PC in the cluster.

Server Web Management interface

Administrators are free to log in to any of the servers, using the standard web interface running on port 9443. Each server retrieves the account information from the same database, providing a consistent set of domains/accounts/alarms regardless of which PC in the cluster they are logged into.

To view the current status of a server cluster click the Advanced server settings link at the bottom of the server’s homepage. Then click the Multi-site resilience option. Clicking on each server in the cluster will allow the user to view which encoders/viewers are connected to each respective server .

In the event of a server failure an administrator attempting to log in to the web interface must manually enter the IP address of another PC in the cluster within their web browser.

Server Pools and Encoder ‘Server Preference’

By default, EdgeVis Server auto load-balances all encoders across all servers within the MSR infrastructure to attempt to share 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 were one server should be used for all encoders, and the backup only 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 infrastructure) to make the best use of server pools:

  • Step 1: Create the server pool(s)

  • Step 2: Associate individual servers with a specific pool

  • Step 3: Set a server-wide server pool policy for encoders (optional)

  • Step 4: Set a per-domain server pool policy (optional)

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 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 were 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.


Monitoring and Troubleshooting Guide

The server’s web interface will give you feedback on what the current state of the system is. If the system is in anyway degraded, you will see an alert highlighted on the ‘About this server’ page. If you are unable to access the web interface on one of your servers, then try accessing it using the other server(s) in the cluster.

Clicking on the alert link will take you to the ‘Multi-Site Resilience’ page where you will be able to get more information about what the issue is.

On the MSR page you will see an indication of the status of each server in the cluster. The top section is the status of the video server components and the bottom section is the status of the database server components.

Green indicates that the component is online and working.

Grey indicates that the component is online, but in a degraded state. For example, a database will be presented like this when it is syncing data from the cluster after a restart.

Red indicates that the component is offline.

Clicking on a component will give additional information about it. For video components this includes a list of the encoders and viewers attached to it. You can also change the name of the component through this page to make it more relevant to your deployment.

Temporarily disabling a server in an MSR deployment

There may be situations where having a particular server active in a deployment may cause issues for the deployment as a whole. For example, a particular site has an issue that degrades the bandwidth available to the rest of the system but doesn’t disconnect the server. In this situation any encoders or clients that connect to that site may struggle to stay connected or transmit video.

It is possible to manually ‘fence’ a given site to prevent it from participating in the deployment. This can be done from the MSR page without physical access to the site to be ‘fenced’. This allows temporarily disabling of this site while remedial work takes place.

Both EdgeVis Servers and their database can be independently fenced – to remove a site from the cluster it is recommended that both the server and database be fenced.

Fencing a site

  • With an administrator level account, navigate to the Multi-site resilience page (on any server).

  • To fence a server, select it to open its status page and click the Fence server button from the menu on the right. The server will immediately become unavailable to new and existing encoders/viewers.

  • To fence a database, select it to open its status page and click the Fence database button from the menu on the right.

  • Repeat, if necessary, for any additional servers/databases at the affected site.

Any servers/databases that have been fenced will now report as FENCED on the main MSR status page.

Unfence a site

  • With an administrator level account, navigate to the Multi-site resilience page (on any active server).

  • To unfence a server, select it to open its status page and click the Rejoin server button from the menu on the right.

  • To unfence a database, select it to open its status page and click the Rejoin database button from the menu on the right.

  • Repeat, if necessary, for any additional servers/databases at the affected site.

After re-joining the cluster, the servers/databases will now report as ONLINE on the main MSR status page.

Identifying and troubleshooting common failures

Both video and database components for a server are marked as offline

This indicates that the other server is completely disconnected from the cluster.

This state is normal during restart of one of the servers and will resolve itself once the server returns.

If the state doesn’t return to normal then check the following:

  • If you can access the other server’s UI and it reports the opposite status, then it is likely to be a network issue. Check the network connection between the servers is functional and any firewall rules are correct.

  • Check the other server hardware is powered and functional.

  • Check that the EdgeVis Server service is running on the other server.

  • Check the time synchronisation between the servers.

Once the issue has been resolved, the offline server will reconnect to the cluster and its database will synchronise with the other server. After the synchronisation is complete, the cluster will be in a healthy state again.

Video component is marked as offline

This indicates that while both servers are running, the video components of the cluster have disconnected from each other.

Normally, this should resolve itself after no more than 15 minutes.

If the servers remain in this state, then check the following:

  • If you can access the other server’s UI and it reports the opposite status, then it is likely to be a network issue. Check the network connection between the servers is functional and any firewall rules are correct.

  • Check the time synchronisation between the servers.

Database is marked as syncing

This occurs when a server is recovering from a failure.

When the server comes back online, it may need to re-synchronise the database with the other server before it is fully healthy and redundant again.

In some cases this may require a full copy of the database. In these cases the server may report this state for some time depending on the speed of the link between the sites.

If this state doesn’t resolve itself, check available bandwidth on the link between the sites as it may not be fast enough to complete the synchronisation.

Appendix A: Partially-Compatible Client Mode

This mode allows clients listed in the Partially-Compatible Clients section to connect to the server and view streams.

Prerequisites

In order for the system to work with these clients, any clients that are behind the same firewall as the server must be able to connect the server’s Remote IP in order to view streams correctly. You can verify this by opening a Web browser on a PC (that would be running a client) entering the address to connect to the server’s configuration interface:

https://[SERVER’S REMOTE IP]:9443/

If the page displays correctly then the partially compatible clients will work.

If the test does not work then either the firewall does not support this mode of operation or requires additional configuration (for which you should consult the documentation for your specific make and model of the device).

If this mode is enabled and the firewall is not capable of or configured to allow this type of access, then these clients will still connect to the server and list all video streams - however, when opening a stream, they will not receive any video.

Enabling Partially-Compatible Client Mode

Note: If you have Multi-site Resilience enabled (or are planning on enabling it) these steps need to be repeated on each server in the cluster and when adding new servers.

  1. Stop the server service

  2. Edit the config.ini within C:\Program Files (x86)\EdgeVis Server\bin and add the following line:

    client_compatibility_mode = true

  3. Start the server service

  4. Verify that the required clients can connect

Appendix B: Using One External IP for an MSR Site

One of the requirements for MSR is that the server publishes its external address to the encoders and clients that connect to the system. From version 7.2 onwards it is possible to have multiple MSR servers with the same external IP address, allowing multiple servers to co-exist on the same internet connection. This appendix covers how to configure this.

Additional Prerequisites

In addition to the standard MSR requirement it is also necessary to have:

  • A router/firewall with a port forward feature, assigned with the external address for the system.

  • At least one server sharing the same IP address must use the standard EdgeVis network ports.

Overview

By default two servers at the same site would attempt to use the network ports and would not be able offer the same external IP address through the same router/firewall. To allow the servers to be accessible externally via the same IP address the router/firewall must forward a different set of ports for each server.

The standard set of ports for video access is as follows:

  • TCP - 9300 & 9301

  • UDP - 2048 & 9300

It is possible to reconfigure these ports on subsequent servers using the same external address.

For example:

Server 1 (default ports)

TCP - 9300 & 9301

UDP - 2048 & 9300

Server 2 (reconfigured ports)

TCP - 9400 & 9401

UDP - 2148 & 9400

Configuring

Step 1 - Deploy MSR cluster

Deploy the cluster as described in the installation steps in the main document. When prompted, enter the same external address for each server behind the same router/firewall.

Step 2 - Select a set of ports for each server

Each server requires a set of unique ports, i.e. there must be no other EdgeVis Server (or other device) behind the same external address using it. A cluster must have at least one server using the default ports.


NOTE: The server listening on the default port must be active when connecting new devices and new clients.


Step 3 - Configure the router/firewall

Configure the router/firewall to ‘port forward’ each set of ports to the corresponding EdgeVis Server’s internal address.


NOTE: Refer to the manufacturer’s router/firewall documentation for further information if necessary.


Step 4 - Re-configure the network ports on EdgeVis Server

  • Log in to the Server’s management web interface on the server that won’t be changing ports (i.e. the server that will continue to use port 9300).

  • Navigate to the Multi-site resilience status page.

  • For each of the other servers at the site:

    • Click on the server to access its status page.

    • Click the Edit this server’s ports menu item button.

    • Enter the set of ports selected for that server in Step 2.

    • Submit the changes and the edited server will restart.

    • Repeat, if necessary, for all remaining servers at this site.

Step 5 - Test the deployment

  • Configure a single encoder and client to connect to the cluster from the external network.

  • Take down all but one of the servers, and verify that the client can successfully stream from the encoder.

  • Repeat for each server; bringing it up, shutting down the pervious server and check the client can stream.

Troubleshooting:

  • If the client isn’t able to connect then the issue will be with one of the ‘Viewer control’ ports.

  • If the encoder isn’t able to connect then the issue will be with the ‘Encoder’ port.

  • If both can connect and the video isn’t streaming then the issue is with the ‘Viewer video’ port.


Did this answer your question?