一、docker swarm的介绍
1.1 swarm介绍
主要解决问题:
解决docker server的集群化管理和部署。
Swarm通过对Docker宿主机上添加的标签信息来将宿主机资源进行细粒度分区,通过分区来帮助用户将容器部署到目标宿主机上,同样通过分区方式还能提供更多的资源调度策略扩展。
swarm能做什么:
- 管理节点高可用,原生支持管理节点高可用,采用raft共识算法来支撑管理节点高可用。
- 应用程序高可用,支持服务伸缩,滚动更新和应用回滚等部署策略。
1.2 swarm架构
在图中可以看出Docker Client使用Swarm对集群(Cluster)进行调度使用。
可以看出,Swarm是典型的master-slave结构,通过发现服务来选举manager。
manager是中心管理节点,各个node上运行agent接受manager的统一管理,
集群会自动通过Raft协议分布式选举出manager节点,无需额外的发现服务支持,
避免了单点的瓶颈问题,同时也内置了DNS的负载均衡和对外部负载均衡机制的集成支持
1.3 swarm概念
1.3.1 Swarm
1.3.2 Node
1.3.3 Manager
1.3.4 Service
1.3.5 Task
1.3.6 概念汇总
二、docker swarm的部署
2.1 使用swarm的前提
2.2 构建swarm集群
2.2.1 创建集群manager
2.2.2 work加入manager
2.3 node节点的管理
2.4 service节点的管理
2.4.1创建一个服务器
1)使用nginx镜像,创建一个具有一个副本(--replicas 1)的nginx服务
2)查询Swarm中服务的信息
3)查询哪个节点正在运行该服务
4)在Swarm中动态扩展服务(scale)
核对容器开辟情况
5)模拟宕机node节点
【结论】
在swarm cluster集群中启动的容器,
在worker node节点上删除或停用后,
该容器会自动转移到其他的worker node节点上。
【其他命令】
【故障演示】
【重建集群】
2.5 部署swarm集群监控
三、数据的管理
3.1 将宿主机挂载到容器
3.2 将目录挂载到容器
3.3 NFS数据持久存储
3.4 docker stack批量部署
3.4.1 docker stack的介绍
单机模式下,我们可以使用Docker Compose来编排多个服务,而Docker Swarm只能实现对单个服务的简单部署。
本文的主角Docker Stack,通过Docker Stack我们只需对已有的docker-compose.yml配置文件稍加改造就可以完成
Docker集群环境下的多服务编排。
3.4.2 docker stack与docker compose的区别
3.4.3 docker stack的命令
3.4.4 docker stack部署项目
192.168.80.25:5000
192.168.80.25:ip:8080