My cluster is currently located in a single data center. I've been trying to change that by adding a single worker node from another data center, but so far it hasn't worked.

I'm able to make this node join the swarm and get listed by the managers, but it is always shown as "Down". Here is what "docker inspect" shows me about this node:

    "Status": {
        "State": "down",
        "Message": "heartbeat failure",
        "Addr": "xxx.xxx.xxx.xxx"

I've opened the following ports in both sides:

2377 tcp
7946 tcp+udp
4789 udp

How do I troubleshoot and fix this?

  • 2
    Found it. My nodes are advertising their private IPs to the external node. Not sure how to fix that, but I guess it's another question
    – ivarec
    Commented Oct 9, 2018 at 2:25
  • 1
    Could you post an answer?
    – 030
    Commented Dec 23, 2019 at 9:22

1 Answer 1


This might not be the answer to your specific cross data-center-ip setup.

I occasionally run into one or more swarm-nodes being status: Down and Availability: Active. Having the Status.Message: "heartbeat failure". This can happen after a reboot.

What helped was to stop the docker daemon, remove /var/lib/docker/swarm/worker/tasks.db and start the docker daemon again.

from: https://github.com/moby/moby/issues/34827#issuecomment-457678500

sometimes it fixes itself: https://stackoverflow.com/a/54126180/2087704

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.