Sign inSign up

riccardone/linker

By riccardone

Updated 5 months ago

Linker reads events from an origin KurrentDb and writes them to a destination

Image
Developer tools
0

1.3K

riccardone/linker repository overview

Linker – Cross-cluster replication for KurrentDb (formerly EventStore).

Replicates events from an origin KurrentDb instance to a destination, preserving ordering and handling conflicts. Supports active-passive, active-active, fan-out and fan-in topologies.

Quick start

docker run --rm \
  -v $(pwd)/config:/config \
  -v $(pwd)/certs:/certs \
  -v $(pwd)/data:/data \
  -e LINKER_CONFIG_PATH=/config/appsettings.json \
  riccardone/linker:latest

Mount points

PathPurpose
/configConfiguration files (appsettings.json)
/certsTLS client certificates (PEM)
/dataPersistent stream-position storage

Minimal configuration

Create /config/appsettings.json:

{
  "DataFolder": "/data",
  "links": [
    {
      "origin": {
        "connectionString": "esdb://admin:changeit@db01:2113?tls=false",
        "connectionName": "db01"
      },
      "destination": {
        "connectionString": "esdb://admin:changeit@db02:2113?tls=false",
        "connectionName": "db02"
      },
      "filters": []
    }
  ]
}

For TLS connections add certificateFile and privateKeyFile pointing to PEM files in /certs.

Key settings

SettingDefaultDescription
DataFolder/dataPersistent storage for stream positions
AutomaticTuningfalseDynamically resize the internal buffer
BufferSize100Bounded-buffer size (1–1000)
HandleConflictstrueWrite conflicts to a special stream
EnableReconciliationfalseVerify stream positions on startup

Topologies

  • Active-Passive – single link, one-way replication
  • Active-Active – two mirrored links (loop prevention via $origin metadata)
  • Fan-Out – same origin, multiple destinations
  • Fan-In – multiple origins, same destination

Tag summary

Content type

Image

Digest

sha256:2bbf239b7

Size

83.1 MB

Last updated

5 months ago

docker pull riccardone/linker