Docker Swarm mode

1.  集群模式基本概念

swarm mode(译:集群模式)

standalone mode(译:单机模式)

以集群模式运行Docker

1.1.  集群

Docker引擎内部已经集成了集群管理

一个集群由多个Docker主机组成,它们以集群模式运行。集群中有两种角色:manager和worker。一个给定的主机,它有可能是manager,或者worker,也有可能同时兼具这两种角色。当你创建一个服务的时候,你会定义它们的状态(比如:副本数量、网络和存储资源、对外暴露的端口等等)。Docker负责维护这些状态。如果一个worker节点不可用了,那么Docker会将该节点上的任务转给其它节点。任务是一个运行的容器,它是集群服务的一部分,由manager管理,而非作为一个独立的容器。

相对于单机模式而言,集群模式最关键的优势在于你可以修改服务的配置(比如:networks或volumes等)而不需要手动重启服务。Docker将自动更新配置,停止已经过期的配置的服务任务,并创建与之匹配的新的服务任务。

当Docker以集群模式运行时,你仍然可以在集群的任意一台主机上以单机模式运行,只要它还是集群服务。单机容器与集群服务最主要的区别在于只有集群的manager才可以管理集群,而单机的容器可以被任意守护进程启动。Docker守护进程可以以manager身份、worker身份、或二者兼具的身份参与到集群中。

(小结:

  1. 回忆一下,运行中的容器对外提供服务,也就是说服务的载体是容器
  2. 单机模式是一台主机上运行多个容器,每个容器单独提供服务;集群模式是多台机器组成一个集群,多个容器一起提供同一个服务;
  3. 集群模式的好处是当你修改了服务的配置后无需手动重启服务
  4. 集群与单机最大的区别在于,只有集群中的manager才能管理集群中的一切(包括服务、容器都归它管,你无法再一个woker节点上操作容器)

1.2.  节点

节点是集群中的一个Docker实例,你可以认为它是一个Docker节点。你可以在单台物理机或者云服务上创建一个或多个节点。但是,在生产环境通常是一台物理机或云服务器时一个节点。

为了将你的应用部署到集群中,你需要提交一个服务定义给集群manger节点。manager节点分发任务(task)给worker节点。

manager节点还负责维护集群状态。manager节点选择一个leader来编排任务。

worker节点从manager节点那里接收任务并执行。默认情况下,manager节点上也运行着和worker节点上一样的服务。但是你也可以将它们配置为仅运行manager任务。每个worker节点上都运行着一个agent,它们负责报告分配给该worker节点的任务的相关情况。worker节点向manager节点报告分配给它的任务的当前状态,以便于manager可以更好地分配任务。

1.3.  服务与任务

服务是要在manager节点或worker节点上执行的任务的定义。当你创建服务的时候,会指定运行哪个镜像,以及在容器运行的时候执行哪些命令。

任务就是某个容器,以及要在容器中执行的命令

1.4.  负载均衡

2.  集群创建

创建集群

加入集群

部署服务

检查服务

动态扩容

删除服务

动态滚动更新服务

节点下线

3.  备忘单

4.  文档

https://docs.docker.com/engine/swarm/swarm-tutorial/scale-service/

https://docs.docker.com/engine/swarm/swarm-tutorial/rolling-update/

https://docs.docker.com/engine/swarm/ingress/

https://docs.docker.com/engine/reference/commandline/swarm_update/

 

posted @ 2019-05-20 09:24  废物大师兄  阅读(3521)  评论(0编辑  收藏  举报