moby / moby/swarmkit

docker node promotion of multiple nodes failed on large cluster

Open
#2,471 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area/raft kind/bug
Dominant language
Go
Stars
3.7k
Forks
676
Avg merge
4d 9h
Merged PRs (30d)
6

Description

Issue: In a large size swarm cluster, e.g. 500 nodes, when I do docker node promote <node1> <node2>. It returns two nodes have been promoted to manager. However, if run docker node ls, it seems like one of the two nodes is still displayed as regular worker. If I ssh into that node supposed to be promoted to a manger and run docker node ls there, it just hangs forever. After while if I perform docker node ls again on the leader node, it shows that failed to promote node is down and reachable.
This problem doesn't happen on smaller clusters.

Docker version:
Client:
Version: 18.01.0-ee-1-tp5
API version: 1.30
Go version: go1.8.3
Git commit: 8188efd
Built: Thu Dec 7 01:32:10 2017
OS/Arch: linux/amd64

Server:
Version: 18.01.0-ee-1-tp5
API version: 1.30 (minimum version 1.12)
Go version: go1.8.3
Git commit: 8188efd
Built: Thu Dec 7 01:31:04 2017
OS/Arch: linux/amd64
Experimental: false

To reproduce:

  • testkit create --name test-500 500 0
  • ssh docker@<test-node-0>
  • docker node promote <test-node-1> <test-node-2>
    -- At this point you will see both nodes have been promoted
  • docker node ls
    --You will only see one of the two nodes becomes manager
  • ssh into the failed node
  • docker node ls on that node will be no responding

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with testkit create --name test-500 500 0, then follow the node promotion path for docker node promote when promoting two nodes at once. Compare manager membership and docker node ls behavior on the leader and failed node. Done means both nodes become managers and remain responsive in the 500-node cluster.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, go
Domain
distributed-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.