swarm-wkr-01 silently drops off a service's VXLAN overlay network on reschedule #33
Labels
No labels
blocked
borg-backup
ceph
forgejo
in-progress
infra
netdata
nextcloud
p:high
p:low
p:medium
searxng
service-onboard
swarm-nodes
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
copper/ccnet-prod-devops#33
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Symptom
2026-07-18: SearXNG search requests were returning HTTP 500 for roughly 1-in-3 requests (whichever landed on the replica on
swarm-wkr-01via the routing mesh). Application traceback wasvalkey.exceptions.TimeoutError: Timeout connecting to server— thesearxng_searxngreplica onswarm-wkr-01couldn't reach the sharedsearxng_valkeyinstance (running onswarm-mgr-03) on thesearxng_searxng-internaloverlay network.Root cause
swarm-wkr-01had silently failed to (re)join the VXLAN tunnel for thesearxng_searxng-internalnetwork (vni 4100). Confirmed bytcpdump -i eth0 udp port 4789on both ends during a live connect attempt from awkr-01container tovalkey:6379: zero VXLAN packets leftwkr-01for that network, while the same capture window showed active vni 4100 traffic betweenmgr-01/mgr-02/mgr-03/wkr-02. Basic node-to-node reachability was fine (ICMP, UDP/4789 port open) — this was Docker's overlay-network gossip/membership state onwkr-01getting stuck for that one network, not a firewall/routing/MTU problem.Fix applied
docker service update --force searxng_searxng— forced all 3 tasks to reschedule, and the newwkr-01task rejoined the overlay cleanly (connect_ex: 0to valkey afterward, confirmed viadocker exec ... python3 socket.connect_ex). No moreTimeoutError/500s in service logs post-fix.Why this matters beyond SearXNG
swarm-wkr-01also hostsnextcloud_redis(shared, single-replica) andforgejo_forgejo, both of which have cross-node dependents (nextcloudweb replicas onmgr-01/mgr-02reachingredisonwkr-01;nextcloudweb onwkr-01reachingnextcloud_dbonmgr-03— the same node pair that broke for SearXNG). Checked both post-incident and they're currently healthy, but if either of those services is ever force-rescheduled and hits the same gossip glitch, it would present as Nextcloud 500s/file-locking errors rather than SearXNG ones.Open questions / follow-up
wkr-01got stuck on that one overlay network is still unknown — this looks like a known class of Docker Swarm overlay-network gossip bug, not something specific to this cluster's config.docker network inspect <net>container membership across nodes and/or restarting the Docker daemon on the affected node (more disruptive — bounces every overlay network on that node, not just the affected service).Repro / verification commands used