Skip to main content

High Availability

Introduction

High availability configuration is supported on each layer of the Soffid stack.

Database replication

Soffid supports two kinds of database replication:

  • Builtin asymmetric replication
  • Database engine replication

Builtin asymmetric database replication

There is an addon available in the download area. This addon lets you define replica databases that will be populated using the sync server engine.

Afterward, you can instruct any sync server to use this replica database upon the master database failover. When the main database is ready, the synchronization server will fall back and use the master database again.

This mechanism provides a simple way to ensure that all the services provided by the synchronization server are alive upon database failure but does not protect the Soffid console. It's useful to ensure single sign-on components work properly upon database failure.

Database engine replication

This is the recommended configuration to achieve database high availability, but the way to configure depends on the selected engine. There is a special table named SC_SEQUENCE that must not be replicated across instances. This table contains a single row with the global counter for new object ids: Its columns are:

SEQ_NEXT: Next sequence number to assign.

SEQ_CACHE: How many sequence numbers must be cached by Soffid.

SEQ_INCREMENT: Gap between sequence numbers.

So, this table can have the following values for a two database replicas. So that one replica will generate positive IDs and the other one will generate negative IDs:

Database
SEQ_NEXT
SEQ_CACHE
SEQ_INCREMENT
First1100+1
Second-1100-1

Another possibility, valid for a three database replica would be the following. One replica will generate 1,4,7,..., the second one will generate 2,5,8,... and the third one will generate 3,6,9,... and so on.

Database
SEQ_NEXT
SEQ_CACHE
SEQ_INCREMENT
First1100+3
Second2100+3
Third3100+3