image.png
    swarm相当于就是在多个服务器上部署docker服务,然后做一个集群。
    每个服务器上的docker服务可以分为两个角色,一个Manager一个Worker,只有Manager可以使用管理命令,而Worker只能作为工作节点被动的分配服务(容器)
    其中有一个Raft一致性协议,也就是说管理节点至少要有三个或者三个以上,这样的话当一个管理节点宕机了之后会有其他管理节点接替该节点的位置继续工作。另外若是有两个管理节点那么一个管理节点宕机后,则另一个管理节点也不能工作。

    对于服务与容器的概念,一个服务可能由多个容器进行支撑,例如MySQL服务。该服务可能由10个MySQL容器来支持,那么使用swarm就可以做到同时在多个工作节点启动MySQL容器,且自动维护使其负载均衡。
    另外就是动态扩缩容,如果10个MySQL不够的话,需要动态扩容到100个,那么可以使用swarm方便地进行扩容,而不需要再去配置网络信息和其他的东西,原来的服务正常运行就行。且swarm支持回滚操作。
    总结:高可用性,弹性,方便管理