工作原理
一、节点
说明: Swarm模式: 可以创建一个或者多个Docker容器组成的集群 支持Docker Engine版本: >= 1.12 节点类型: Manager管理节点、Worker工作节点
Manager节点
作用:
- 维护集群状态(创建、更新、删除……)
- 调度服务(保持副本个数)
- 支持Docker Api进行管理
容错性:
基于
Raft实现,如果管理节点发生故障,不影响工作节点继续使用,只是无法继续管理集群,需要至少一个Manager节点恢复。为了利用Swarm容错特性,建议使用大于1的基数节点 一个
N管理节点集群最多可容忍丢失(N-1)/2管理节点
Worker节点
工作节点用于执行容器,默认情况下Manage节点也作为Worker节点
二、服务
说明: 要在Docker引擎处于Swarm模式下创建容器,需要先创建服务,通常情况下,服务是某个大型项目中的微服务镜像,服务可以是数据库、HTTP服务、或者其他分布式环境中的可执行程序

服务、任务、容器
container为一个独立的进程task为容器的槽,通过service配置service为副本,定义服务,由swarm manager管理,并安排副本task
任务和调度
task为Swarm中调度的原子单元,当创建或者更新服务的状态时,编排器通过调度task来实现。task是一种单向机制的,同过一系列状态进行:分配``准备``运行等。task如果执行失败,则销毁自身,编排器根据服务指定的所需状态新建一个进行替换。
三、Swarm路由网格
说明: Swarm中
所有的节点流量都来自一个路由网格 即使节点没有运行任何任务,也可以通过节点端口访问到容器(也就是说所有容器均会暴露端口)

在使用服务网格前应该防火墙放行以下端口:
7946TCP/UDP,用于服务网络发现4789TCP,容器入口网络
使用外部负载均衡器
- 可以使用
Haproxy``Nginx替代swarm load balancer
操作
创建集群
Manager节点操作
# 初始化docker swarm init --advertise-addr manager_ip# 查看Swarm信息docker info# 查看节点信息 (管理节点自动加入)docker node ls# 获取node加入集群命令 (初始化时会显示)docker swarm join-token manager# 离开集群docker swarm leave --force
添加节点到集群
Worker节点操作
docker swarm join \--token token \manager_ip:2377
创建服务
Worker节点操作
docker service create \--replicas 3 \--name my_web \--publish published=81,target=80 \nginx
—replicas num 设置副本数
—name nginx 设置服务名
—publish published=public_port,target=container_port 发布端口
更新服务
docker service update --publish-add 80 my_web
删除服务
docker service rm my_web
三方工具
swarmpit


