To start off with a high availability VidiCore set-up you can easily run VidiCore in cluster on multiple servers using a common database, or using an even simpler set-up with multiple instances running on the same server.
In this first part of the high availability series, we will show you an easy way to increase availability on your VidiCore powered video backend. The other parts will add increasingly advanced set-ups leading to a full high availability video backend. In Part #2 we will add HAProxy, in Part #3 we will add pgpool-II for a high availability database, and in the final Part #4 we show how you can work with SolrCloud.
Clustering VidiCore on multiple servers
A cluster can be created by installing VidiCore on multiple servers and configuring all instances to connect to the same database.
The one setting that should be set is the bindAddress, which an instance will bind to and publish to the other members of the cluster.
cluster: bindAddress: vs1.example.com
You can also change the address that is published, for example if there’s a firewall with port forwarding rules set up in front of each server.
cluster: bindAddress: vs1.example.com bindPort: 7800 bindPortRange: 0 externalAddress: fw.example.com externalPort: 7801
For this to work you also need to use an external ActiveMQ instance, so make sure that the embedded broker is disabled and that the configuration points to your ActiveMQ instance.
broker: url: tcp://activemq.example.com:61616 #embeddedBroker: broker:(tcp://localhost:61616)
Quick cluster setup
It is also possible to create a cluster on a single machine by starting multiple server processes each with a different configuration file.
$ cp server.yaml instanceA.yaml instanceB.yaml $ vi instanceA.yaml instanceB.yaml
Make sure that all instances have distinct ports. Then start the instances that are to be part of the cluster:
$ java -XX:MaxPermSize=512m -jar vidispine-server.jar server instanceA.yaml 2>&1 1>instanceA.log & $ java -XX:MaxPermSize=512m -jar vidispine-server.jar server instanceB.yaml 2>&1 1>instanceB.log &
Tail the log and you should see that the processes have found each other and have formed a cluster.
INFO [2015-05-27 13:06:27,652]  org.infinispan.remoting.transport.jgroups.JGroupsTransport: ISPN000094: Received new cluster view: [di2-37999|1] [di2-37999, di2-55654]