Docker swarm集群节点服务更新(2)
我们用redis做为基础进行,进行部署,使用dockerhub的image,和(1)结构一样
更新
创建一个服务
[root@DS-VM-Node117-117-linuxea ~]# docker service create
> --replicas 3
> --name redis
> --update-delay 10s
> marksugar/redis:1
4bv0yd0rylekh6i7t3efswy8t
[root@DS-VM-Node117-117-linuxea ~]#
--update-delay标志配置服务任务或任务集之间的更新之间的时间延迟。您可以将时间描述T为秒Ts,分钟Tm或小时数的组合Th。0m30s表示10分30秒的延迟
查看节点信息
[root@DS-VM-Node117-117-linuxea ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dda61442874f marksugar/redis:1 "/start.sh" 4 minutes ago Up 4 minutes 6379/tcp, 26379/tcp redis.2.0oq4tgo5016im6pyy8eigyed0
[root@DS-VM-Node98-linuxea /data/rds]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8368afff7aae marksugar/redis:1 "/start.sh" 4 minutes ago Up 4 minutes 6379/tcp, 26379/tcp redis.1.bmyko14s690hogqrlff8db130
[root@DS-VM-Node98 /data/rds]#
[root@DS-VM-Node114-linuxea ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a835f7ec1c78 marksugar/redis:1 "/start.sh" 5 minutes ago Up 4 minutes 6379/tcp, 26379/tcp redis.3.cpo3lss13l9vt7s9rqxi5pszb
检查redis服务
[root@DS-VM-Node117-117-linuxea ~]# docker service inspect --pretty redis
ID: 4bv0yd0rylekh6i7t3efswy8t
Name: redis
Mode: Replicated
Replicas: 3
Placement:
UpdateConfig:
Parallelism: 1
Delay: 10s
On failure: pause
ContainerSpec:
Image: marksugar/redis:1
Resources:
更新
迭代到redis:2
[root@DS-VM-Node117-117-linuxea ~]# docker service update --image marksugar/redis:2 redis
redis
- 默认情况下,调度程序应用滚动更新如下:
- 停止第一个任务
- 计划已停止任务的更新。
- 启动更新任务的容器。
- 如果任务的更新返回RUNNING,等待指定的延迟时间,然后启动下一个任务。
- 如果在更新期间的任何时间任务返回FAILED,则暂停更新。
查看滚动更新信息
[root@DS-VM-Node117-117-linuxea ~]# docker service inspect --pretty redis
ID: 4bv0yd0rylekh6i7t3efswy8t
Name: redis
Mode: Replicated
Replicas: 3
Update status:
State: completed
Started: 4 minutes ago
Completed: 2 minutes ago
Message: update completed
Placement:
UpdateConfig:
Parallelism: 1
Delay: 10s
On failure: pause
ContainerSpec:
Image: marksugar/redis:2
Resources:
观察动作完成度
[root@DS-VM-Node117-117-linuxea ~]# docker service ps redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
9nv4wbflniq85iowfhpuqeow6 redis.1 marksugar/redis:2 DS-VM-Node117-117-linuxea.cluster.com Running Running 22 seconds ago
bmyko14s690hogqrlff8db130 _ redis.1 marksugar/redis:1 DS-VM-Node98.cluster.com Shutdown Shutdown less than a second ago
1rrmo8ekz7soaytpwx7hbd1kp redis.2 marksugar/redis:2 DS-VM-Node98.cluster.com Running Running less than a second ago
0oq4tgo5016im6pyy8eigyed0 _ redis.2 marksugar/redis:1 DS-VM-Node117-117-linuxea.cluster.com Shutdown Shutdown 44 seconds ago
28ox09frhbyjvfotual17p03j redis.3 marksugar/redis:2 DS-VM-Node117-117-linuxea.cluster.com Ready Ready 9 seconds ago
cpo3lss13l9vt7s9rqxi5pszb _ redis.3 marksugar/redis:1 DS-VM-Node114.cluster.com Shutdown Running 21 minutes ago
[root@DS-VM-Node117-117-linuxea ~]#
如果失败而暂停这需要重新启动暂停的更新服务 docker service update redis
更新完成
等待几分钟后滚动更新完成:
[root@DS-VM-Node117-117-linuxea ~]# docker service ps redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
9nv4wbflniq85iowfhpuqeow6 redis.1 marksugar/redis:2 DS-VM-Node117-117-linuxea.cluster.com Running Running about a minute ago
bmyko14s690hogqrlff8db130 _ redis.1 marksugar/redis:1 DS-VM-Node98.cluster.com Shutdown Shutdown less than a second ago
1rrmo8ekz7soaytpwx7hbd1kp redis.2 marksugar/redis:2 DS-VM-Node98.cluster.com Running Running less than a second ago
0oq4tgo5016im6pyy8eigyed0 _ redis.2 marksugar/redis:1 DS-VM-Node117-117-linuxea.cluster.com Shutdown Shutdown 2 minutes ago
28ox09frhbyjvfotual17p03j redis.3 marksugar/redis:2 DS-VM-Node117-117-linuxea.cluster.com Running Running about a minute ago
cpo3lss13l9vt7s9rqxi5pszb _ redis.3 marksugar/redis:1 DS-VM-Node114.cluster.com Shutdown Shutdown less than a second ago
[root@DS-VM-Node117-117-linuxea ~]#
排除
如果此时我需要保留一个节点不被更新,这可以排除
drain
[root@DS-VM-Node117-linuxea ~]# docker node update --availability drain DS-VM-Node117.cluster.com
DS-VM-Node117.cluster.com
在查看已经被排除,不会被更新
[root@DS-VM-Node117-linuxea ~]# docker node inspect --pretty DS-VM-Node117.cluster.com
ID: as4u4yh1h5h84y06h2etad4yb
Hostname: DS-VM-Node117.cluster.com
Joined at: 2017-07-28 05:16:16.888583447 +0000 utc
Status:
State: Ready
Availability: Drain
Manager Status:
Address: 10.10.240.117:2377
Raft Status: Reachable
Leader: Yes
Platform:
Operating System: linux
Architecture: x86_64
Resources:
CPUs: 1
Memory: 3.858 GiB
Plugins:
Network: bridge, host, null, overlay
Volume: local
Engine Version: 1.12.3
[root@DS-VM-Node117-linuxea ~]#
可以看出117被分离,并没有更新到117机器上
[root@DS-VM-Node117-linuxea ~]# docker service ps redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
361rt5z5scr3i4ezx3c5fmkmg redis.1 marksugar/redis:1 DS-VM-Node98.cluster.com Running Running less than a second ago
2gxzej0b0zjnlz9qcqs2f02ym redis.2 marksugar/redis:1 DS-VM-Node98.cluster.com Running Running less than a second ago
36kam6gq0x72s6443v8o3awub redis.3 marksugar/redis:1 DS-VM-Node114.cluster.com Running Starting less than a second ago
active
[root@DS-VM-Node117-linuxea ~]# docker node update --availability active DS-VM-Node117.cluster.com
DS-VM-Node117.cluster.com
[root@DS-VM-Node117 ~]# docker node inspect --pretty DS-VM-Node117.cluster.com
ID: as4u4yh1h5h84y06h2etad4yb
Hostname: DS-VM-Node117.cluster.com
Joined at: 2017-07-28 05:16:16.888583447 +0000 utc
Status:
State: Ready
Availability: Active
Manager Status:
Address: 10.10.240.117:2377
Raft Status: Reachable
Leader: Yes
Platform:
Operating System: linux
Architecture: x86_64
Resources:
CPUs: 1
Memory: 3.858 GiB
Plugins:
Network: bridge, host, null, overlay
Volume: local
Engine Version: 1.12.3