Docker Swarm简介及其原理
Docker Swarm的使用( 请确保主机已安装virtualbox )
1.创建swarm集群管理节点(manager)wor
创建docker机器:
$ docker-machine create -d virtualbox hengda-swarm-manager
初始化 swarm 集群,进行初始化的这台机器,就是集群的管理节点。
查看刚刚创建的虚拟机获得的IP:
$ docker-machine ip hengda-swarm-manager
$ docker-machine ssh hengda-swarm-manager
$ docker swarm init --advertise-addr 192.168.99.101 #这里的 IP 为创建机器时分配的 ip。
以上说明已经初始化成功。输出的下面这句,需要复制出来,增加节点时会用到:
docker swarm join --token SWMTKN-1-35hx80w5697p4rtw43ft7cd2ac7thy3yo6m3lal8mjgrq5s7bf-chbrvn53krg3qhrdd3rio6v7u 192.168.99.101:2377
2.创建swarm集群工作节点(worker)
下面创建两台机器,hengda-swarm-worker1 和 hengda-swarm-worker2
分别进入两台机器,指定前面建立的集群。这里要用到创建集群时提示的命令:
$ docker-machine ssh hengda-swarm-worker1
$ docker swarm join --token SWMTKN-1-35hx80w5697p4rtw43ft7cd2ac7thy3yo6m3lal8mjgrq5s7bf-chbrvn53krg3qhrdd3rio6v7u 192.168.99.101:2377
加入成功,则提示:This node joined a swarm as a worker.
$ docker-machine ssh hengda-swarm-worker2
$ docker swarm join --token SWMTKN-1-35hx80w5697p4rtw43ft7cd2ac7thy3yo6m3lal8mjgrq5s7bf-chbrvn53krg3qhrdd3rio6v7u 192.168.99.101:2377
3.查看集群信息
进入管理节点hengda-swarm-manager,执行:
$docker info
在集群信息中可以看到集群有3个节点和一个管理节点
4.部署服务到集群中( 注意:跟集群管理有关的任何操作,都时在管理节点上操作的 )
例子,在一个工作节点上创建一个服务helloworld,我们随机指派一个工作节点:
docker@hengda-swarm-manager:~$ docker service create --replicas 1 --name helloworld alpine ping docker.com
5.查看服务部署情况
查看helloworld服务在哪个节点运行:
docker@hengda-swarm-manager:~$ docker service ps helloworld
查看helloworld部署的具体信息:
docker@hengda-swarm-manager:~$ docker service inspect --pretty helloworld
6.扩展集群服务
我们将上述helloworld服务扩展到两个节点:
docker@hengda-swarm-manager:~$ docker service scale helloworld=2
7.删除服务
docker@hengda-swarm-manager:~$ docker service rm helloworld
8.滚动升级服务(本例介绍Redis版本如何滚动升级到更高版本)
创建一个3.0.6版本的Redis:
docker@hengda-swarm-manager:~$ docker service create --replicas 1 --name redis --update-delay 10s redis:3.0.6
滚动升级Redis:
docker@hengda-swarm-manager:~$ docker service update --image redis:3.0.7 redis
9.停止某个节点接收新的任务
查看所有的节点:
三个节点都是Active,表示可以接收新的任务。
停止节点hengda-swarm-worker1:
docker@hengda-swarm-manager:~$ docker node update --availability drain hengda-swarm-worker1
注意:hengda-swarm-worker1状态变为Drain。不会影响到集群的服务,只是hengda-swarm-worker1节点不再接收新的任务,集群的负载能力有所下降。
可以通过以下命令重新激活节点:
docker@hengda-swarm-manager:~$ docker node update --availability active hengda-swarm-worker1