Docker Swarm one-day Tour

本文介绍如何使用 Docker Swarm 构建高可用的集群架构。通过详细步骤展示如何初始化管理节点、加入工作节点及额外的管理节点,并创建服务。同时介绍了为防止单点故障而采用的 HA 机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务器列表

IPhostnameswarm role
192.168.2.121ubuntumanager
192.168.2.122zipkinworker
192.168.2.123elasticworker
192.168.2.124tensorflowmanager

本次验证所使用的docker 版本如下:

kube@tensorflow:~$ docker version
Client:
 Version:      1.13.1
 API version:  1.26
 Go version:   go1.7.5
 Git commit:   092cba3
 Built:        Wed Feb  8 06:42:29 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.13.1
 API version:  1.26 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   092cba3
 Built:        Wed Feb  8 06:42:29 2017
 OS/Arch:      linux/amd64
 Experimental: false

本次验证的主要架构如下图所示:

这里写图片描述
为了防止Swarm Mange单点故障,引入了HA机制,Swarm Manage自身是无状态的,所以还是很容易实现HA的。 实现过程中采用主备方式,当主节点故障以后,会从新选主提供服务,选主过程中采用分布式锁实现,现在支持etcd、zookeeper、consul三种类型的分布式存储,用来提供分布式锁。 当备节点收到消息后,会将消息转发给主节点

Steps

kube@ubuntu:~$ docker swarm init --listen-addr 192.168.2.121:2377
Swarm initialized: current node (tlm00esjj8c794bnt27ohy6ax) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-1d0zbvscbn5n879a8d8gninqc0zrgio9eu21vvh4c3r48h22o1-a0iw8a8mkwwczrnxeedff57br \
    192.168.2.121:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
kube@ubuntu:~$ docker swarm join-token manager
To add a manager to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-1d0zbvscbn5n879a8d8gninqc0zrgio9eu21vvh4c3r48h22o1-brgeenpout0mom3506l19ioqi \
    192.168.2.121:2377
kube@ubuntu:~$ docker swarm join-token -q  manager      //查看swarm manager的token
SWMTKN-1-1d0zbvscbn5n879a8d8gninqc0zrgio9eu21vvh4c3r48h22o1-brgeenpout0mom3506l19ioqi
kube@ubuntu:~$ docker swarm join-token -q  worker       //查看swarm worker的token
SWMTKN-1-1d0zbvscbn5n879a8d8gninqc0zrgio9eu21vvh4c3r48h22o1-a0iw8a8mkwwczrnxeedff57br
kube@zipkin:~$ docker swarm join \
 --token SWMTKN-1-1d0zbvscbn5n879a8d8gninqc0zrgio9eu21vvh4c3r48h22o1-a0iw8a8mkwwczrnxeedff57br \
192.168.2.121:2377

This node joined a swarm as a worker.
kube@elastic:~$ docker swarm join \
--token SWMTKN-1-1d0zbvscbn5n879a8d8gninqc0zrgio9eu21vvh4c3r48h22o1-a0iw8a8mkwwczrnxeedff57br \
192.168.2.121:2377

This node joined a swarm as a worker.
kube@tensorflow:~$ docker swarm join \
--token SWMTKN-1-1d0zbvscbn5n879a8d8gninqc0zrgio9eu21vvh4c3r48h22o1-brgeenpout0mom3506l19ioqi \
192.168.2.121:2377

This node joined a swarm as a manager
kube@ubuntu:~$ docker  node ls
ID                           HOSTNAME    STATUS  AVAILABILITY  MANAGER STATUS
2p25ctjidc4ep93x9dtc94o41    elastic     Ready   Active        
tlm00esjj8c794bnt27ohy6ax *  ubuntu      Ready   Active        Leader
xw25t5biu4lt22ctfiqyy98ls    tensorflow  Ready   Active        Reachable
y3tbcpks0hmatb2eylxo93516    zipkin      Ready   Active
kube@ubuntu:~$ docker service create --replicas 1 --name svc alpine ping docker.com
yagle957bftymp5r9f4irpqe5
kube@ubuntu:~$ docker service create --replicas 3 --name redis --update-delay 10s --update-parallelism 1 redis:3.2.7
xbfehf2v0pmx8onc6n0jvj145
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值