一、swarm简介
Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。Swarm和Kubernetes比较类似,但是更加轻,具有的功能也较kubernetes更少一些。
docker swarm相关概念
- 节点分为管理节点和工作节点
- 任务是swarm中的最小的调度单位,目前来说就是一个单一的容器。
- 服务是指一组任务的集合,服务定义了任务的属性。
二、swarm实践
1.初始化集群
确保三台docker主机docker版本一样,若不一样,可先关闭docker服务,yum update docker-ce docker-ce-cli ,再开启docker服务。
查看版本是否一致:
[root@node2 docker]# rpm -q docker-ce
docker-ce-18.09.6-3.el7.x86_64
[root@node3 ~]# rpm -q docker-ce
docker-ce-18.09.6-3.el7.x86_64
[root@node4 ~]# rpm -q docker-ce
docker-ce-18.09.6-3.el7.x86_64
nide2:docker swarm init
2.根据提示在其他docker节点上执行命令:
查看节点已经添加上:
3.加速部署,提前下载好镜像
将加速器scp到node3和node4上:
远程复制过去后,重启服务
4.创建服务
5.测试
为了效果明显,编辑默认发布页面并导入到容器中:
[root@node2 ~]# vim index.html
[root@node2 ~]# docker container cp index.html 358df2e59d99:/usr/share/nginx/html
[root@node2 ~]# cat index.html
node2
[root@node3 ~]# vim index.html
[root@node3 ~]# docker container cp index.html web_cluster.2.61gaxn31j8p51rw817dkfp4j5:/usr/share/nginx/html
[root@node3 ~]# cat index.html
node3
[root@node4 ~]# docker container cp index.html web_cluster.3.mibpsq75mdrk5edszi7ug24kh:/usr/share/nginx/html
[root@node4 ~]# cat index.html
node4
结果:
真机测试
6.拉伸。
如果外部访问量大。我们需要进行拉伸
三、做一个监控
首先下载一个visualizer,下载地址:
将visualizer.tar 加载镜像里:
创建服务:
[root@node2 ~]# docker service create \
> --name=viz \
> --publish=8080:8080/tcp \
> --constraint=node.role==manager \
> --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
> dockersamples/visualizer
9y2672mk288001tprqoig4mdl
overall progress: 1 out of 1 tasks
1/1: running [==================================================>]
verify: Service converged
查看一下服务:
在浏览器中输入:172.25.7.2:8080
现在把node的docker给挂掉:
[root@node4 ~]# systemctl stop docker
再次开启:
[root@node4 ~]# systemctl start docker
[root@node2 ~]# docker service scale web_cluster=30
web_cluster scaled to 30
overall progress: 30 out of 30 tasks
verify: Service converged
镜像的更新:
在三个节点node2,node3,node4上分别加载镜像game2048。
[root@node2 ~]# docker service update --image game2048 --rollback-parallelism 5 --update-delay 2s web_cluster
还没更新完毕,在浏览器输入ip可以直接玩game2048,不会影响用户使用
[root@node2 ~]# docker service update --image game2048 --rollback-parallelism 5 --update-delay 2s web_cluster
image game2048:latest could not be accessed on a registry to record
its digest. Each node will access game2048:latest independently,
possibly leading to different nodes running different
versions of the image.
web_cluster
overall progress: 30 out of 30 tasks
verify: Service converged