Setting up Docker Swarm is pretty simple. BUT VMWare NSX is a little annoying, in that it blocks the VXLAN transport port (TCP Port 4789) at the hypervisor level. I’m sure this seemed GREAT for security, but it majorly messes up any application USING VXLAN inside the transport zone. Suck as Docker Swarm inside a cloud provider who uses VMWare NSX. As long as you know about this, you can work around it, however, as you can specify an alternate VXLAN port when you initialize your swarm! So let’s do that!
We will be bringing up a swarm on a cluster today with one manager and four nodes – each host has two network interfaces – we’ll be using ens160 in 10.129.2.0/24 for our transport network. we use the –data-path-port parameter to set the VXLAN port.
Note: Our manager, and all nodes, already need Docker installed, incase this isn’t obvious 😀
root@prod-swarm-manager-1:~# docker swarm init --data-path-port 4788 --advertise-addr 10.129.2.21 Swarm initialized: current node (p9ojg9edmipi7saldcbrcnhyt) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-42rg6zgs3onagtyamztitzgqb21z9hmwnwfdqoabmew4ppk2i5-2r0upkukt2asdfsdf3234512ad 10.129.2.21:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
And we now have a swarm (with one node) up. Time to add more nodes!
root@prod-swarm-node-1:~# docker swarm join --token SWMTKN-1-42rg6zgs3onagtyamztitzgqb21z9hmwnwfdqoabmew4ppk2i5-2r0upkukt2asdfsdf3234512ad 10.129.2.21:2377 This node joined a swarm as a worker. root@prod-swarm-node-2:~# docker swarm join --token SWMTKN-1-42rg6zgs3onagtyamztitzgqb21z9hmwnwfdqoabmew4ppk2i5-2r0upkukt2asdfsdf3234512ad 10.129.2.21:2377 This node joined a swarm as a worker. root@prod-swarm-node-3:~# docker swarm join --token SWMTKN-1-42rg6zgs3onagtyamztitzgqb21z9hmwnwfdqoabmew4ppk2i5-2r0upkukt2asdfsdf3234512ad 10.129.2.21:2377 This node joined a swarm as a worker. root@prod-swarm-node-3:~# docker swarm join --token SWMTKN-1-42rg6zgs3onagtyamztitzgqb21z9hmwnwfdqoabmew4ppk2i5-2r0upkukt2asdfsdf3234512ad 10.129.2.21:2377 This node joined a swarm as a worker.
We should now have our swarm up and running – run docker node list, to see!
root@prod-swarm-manager-1:~# docker node list ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION p9ojg9edmipi7saldcbrcnhyt * prod-swarm-manager-1 Ready Active Leader 19.03.1 lnp2b2ijurmtamp0if4aner7y prod-swarm-node-1 Ready Active 19.03.1 caxka5zdq0nb9lilcvss1fv82 prod-swarm-node-2 Ready Active 19.03.1 k0ar3rgjzoz1jjncfpr5xd9t1 prod-swarm-node-3 Ready Active 19.03.1 oa0ym3ytsgf5svbs2rz205jwr prod-swarm-node-4 Ready Active 19.03.1
We do, perfect! We now want to manage the swarm with a nice web interface, so lets bring up swarmpit.
root@prod-swarm-manager-1:~# docker run -it --rm \
> --name swarmpit-installer \
> --volume /var/run/docker.sock:/var/run/docker.sock \
> swarmpit/install:1.7
Unable to find image 'swarmpit/install:1.7' locally
1.7: Pulling from swarmpit/install
e7c96db7181b: Pull complete
5297bd381816: Pull complete
3a664477889c: Pull complete
a9b893dcc701: Pull complete
48bf7c1cb0dd: Pull complete
555b6ea27ad2: Pull complete
7e8a5ec7012a: Pull complete
6adc20046ac5: Pull complete
42a1f54aa48c: Pull complete
717a4f34e541: Pull complete
f95ad45cac17: Pull complete
f963bb249c55: Pull complete
Digest: sha256:04e47b8533e5b4f9198d4cbdfea009acac56417227ce17a9f1df549ab66a8520
Status: Downloaded newer image for swarmpit/install:1.7
_ _
_____ ____ _ _ __ _ __ ___ _ __ (_) |_
/ __\ \ /\ / / _` | '__| '_ ` _ \| '_ \| | __|
\__ \\ V V / (_| | | | | | | | | |_) | | |_
|___/ \_/\_/ \__,_|_| |_| |_| |_| .__/|_|\__|
|_|
Welcome to Swarmpit
Version: 1.7
Branch: 1.7
Preparing dependencies
latest: Pulling from byrnedo/alpine-curl
8e3ba11ec2a2: Pull complete
6522ab4c8603: Pull complete
Digest: sha256:e8cf497b3005c2f66c8411f814f3818ecd683dfea45267ebfb4918088a26a18c
Status: Downloaded newer image for byrnedo/alpine-curl:latest
DONE.
Preparing installation
Cloning into 'swarmpit'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 17028 (delta 1), reused 1 (delta 0), pack-reused 17022
Receiving objects: 100% (17028/17028), 4.39 MiB | 3.05 MiB/s, done.
Resolving deltas: 100% (10146/10146), done.
DONE.
Application setup
Enter stack name [swarmpit]: prod-swarmpit
Enter application port [888]:
Enter database volume driver [local]:
Enter admin username [admin]:
Enter admin password (min 8 characters long): SYJpt6FQ@*j2ztPZ53^yF@!q5VRkZRyr*h$ydWGYE67$RWaHWat5Q$g6#zQtA3q^8QgQeSAMBEPT2^z8t2y#GKb5^X%e
DONE.
Application deployment
Creating network prod-swarmpit_net
Creating service prod-swarmpit_db
Creating service prod-swarmpit_agent
Creating service prod-swarmpit_app
DONE.
Starting swarmpit............DONE.
Initializing swarmpit...DONE.
Summary
Username: admin
Password: SYJpt6FQ@*j2ztPZ53^yF@!q5VRkZRyr*h$ydWGYE67$RWaHWat5Q$g6#zQtA3q^8QgQeSAMBEPT2^z8t2y#GKb5^X%e
Swarmpit is running on port :888
Enjoy :)
And bingo! If I hit up the manager host on port 888, I can login and view the swarm state!

0 Comments.