Phillip
Phillip

Reputation: 457

High Availability in SymmetricDS

To all those SymmetricDS nerds over there, this one's for you all.

Right, so we have a main db, DB-01. We have 3 instances of our application running namely R1,R2,R3. Each instance has its own in-memory db namely D1,D2,D3 which it(application) is accessing respectively. We are using SymmetricDS to do one-way sync from DB-01 to D1,D2,D3. So, there is a server node, corporate C0, pointing to DB-01 and 3 client nodes, stores S1,S2,S3 pointing to D1,D2,D3 respectively.

All is working fine.

But now, we would like to introduce High Availability and there by FAILOVER into this topology i.e., at any time there will be 2 server nodes running, say Master and Slave, that would be accessing the same DB-01. If Master server goes down, clients should automatically connect to the Slave node and continue operation.

What all might be the configuration changes required to accomplish this? Are there any examples or documentations that i can reproduce to understand this concept?

Upvotes: 2

Views: 439

Answers (1)

EST
EST

Reputation: 517

We do this via clustering with 2 SymmetricDS services running on 2 app servers pointing to the High Availability (HA) connections. Then all you need is HA connections to failover like normal and Symmetric DS clustering does the rest.

Link for the user manual on clustering.

https://www.symmetricds.org/doc/3.13/html/user-guide.html#_clustering

EDIT let me get some configs for you on here service 1:

engine.name=<SDS_SERVICE_1>

db.driver=net.sourceforge.jtds.jdbc.Driver
db.url=jdbc:jtds:sqlserver://<HA_connection1>:1433/<DB>;useCursors=true;bufferMaxMemory=10240;lobBuffer=5242880
db.user=***********
db.password=***********

registration.url=http://<IP>:7004/sync/<SDS_MAIN>
sync.url=http://<IP>:7004/sync/<SDS_SERVICE_1>

group.id=<GID>
external.id=100

auto.registration=true
initial.load.create.first=true

sync.table.prefix=sym
start.initial.load.extract.job=false

cluster.lock.enabled=true
cluster.server.id=11
cluster.lock.timeout.ms=600000
cluster.lock.refresh.ms=60000

compression.level=-1
compression.strategy=0

Service 2:

engine.name=<SDS_SERVICE_2>

db.driver=net.sourceforge.jtds.jdbc.Driver
db.url=jdbc:jtds:sqlserver://<HA_connection2>:1433/<DB>;useCursors=true;bufferMaxMemory=10240;lobBuffer=5242880
db.user=***********
db.password=***********

registration.url=http://<IP>:7004/sync/<SDS_MAIN>
sync.url=http://<IP>:7004/sync/<SDS_SERVICE_2>

group.id=<GID>
external.id=100

auto.registration=true
initial.load.create.first=true

sync.table.prefix=sym
start.initial.load.extract.job=false

cluster.lock.enabled=true
cluster.server.id=12
cluster.lock.timeout.ms=600000
cluster.lock.refresh.ms=60000

compression.level=-1
compression.strategy=0

Upvotes: 0

Related Questions