You've already forked directdnsonly
feat: add peer sync worker for zone_data exchange between nodes 🔄
Adds optional peer-to-peer zone_data replication between directdnsonly instances. Enables eventual consistency in DA Multi-Server topologies without a shared datastore. - InternalAPI: GET /internal/zones (list) and ?domain= (detail) exposes zone_data to peers via existing basic auth - PeerSyncWorker: interval-based daemon thread that fetches zone_data from configured peers, storing newer entries locally; peer downtime is silently skipped and retried next interval - WorkerManager: wires PeerSyncWorker alongside reconciler; exposes peer_syncer_alive in queue_status - Config: peer_sync block with enabled/interval_minutes/peers[] - Tests: 13 tests covering sync, skip-older, skip-unreachable, empty peer list, bad status, and missing zone_data scenarios
This commit is contained in:
@@ -30,6 +30,18 @@ app:
|
||||
# password: secret
|
||||
# ssl: true
|
||||
|
||||
# Peer sync — exchange zone_data between directdnsonly instances
|
||||
# Enables eventual consistency without a shared datastore.
|
||||
# If a peer is offline, the sync is silently skipped and retried next interval.
|
||||
# Use the same credentials as the peer's app.auth_username / auth_password.
|
||||
#peer_sync:
|
||||
# enabled: true
|
||||
# interval_minutes: 15
|
||||
# peers:
|
||||
# - url: http://ddo-2:2222 # URL of the peer directdnsonly instance
|
||||
# username: directdnsonly
|
||||
# password: changeme
|
||||
|
||||
dns:
|
||||
default_backend: bind
|
||||
backends:
|
||||
|
||||
Reference in New Issue
Block a user