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 身份, 或二者兼具的身份参与到集群中.
(小结:
回忆一下, 运行中的容器对外提供服务, 也就是说服务的载体是容器
单机模式是一台主机上运行多个容器, 每个容器单独提供服务; 集群模式是多台机器组成一个集群, 多个容器一起提供同一个服务;
集群模式的好处是当你修改了服务的配置后无需手动重启服务
集群与单机最大的区别在于, 只有集群中的 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/
来源: https://www.cnblogs.com/cjsblog/p/10890534.html