容器编排Swarm
一、多机多容器管理痛点
之前我们都是在一台云服务器中创建多个容器进行项目部署操作,但是实际过程中会出现多台云服务器多容器的情况,如何管理这多台云服务器中的多个容器?
- 怎么去管理多台服务器中的多个容器?
- 怎么能方便的横向拓展?即在集群中再增加一台云服务器部署应用?
- 如果一台服务器中的某个容器down了,怎么能自动恢复?
- 如何去更新容器而不影响业务?
- 如何去监控追踪这些容器?
- 怎么去调度、控制容器的创建?
- 怎么保护隐私数据?
二、Swarm模式
1.简介
- Swarm是一个容器编排的工具,当然还有其他的工具可以用来做容器的编排。
- Swarm它是内置于docker中的,安装完docker后即可以使用swarm了,只是一开始我们使用的是单机模式,需要手动开启Swarm模式。
2.架构
三、创建Swarm集群
1.环境准备
在本机准备四个虚拟机,分别模拟四个节点:
节点1:192.168.8.135
节点2:192.168.8.136
节点3:192.168.8.138
节点4:192.168.8.137
2.将节点1服务器声明swarm Manager节点
docker swarm init --advertise-addr=192.168.8.135
出现提示当前节点已经是一个Manager节点,且如果要向这个集群中添加worker节点,执行下面的语句即可。
3.将节点2、节点3、节点4当作worker节点添加到swarm集群中
4.在节点1中查看该swarm集群中的节点情况
docker node ls
显示有一个leader节点,三个worker节点
四、Swarm Service和Swarm集群操作
1.在Swarm Manager节点创建Service
docker service create --name=busybox_demo busybox sh -c "while true; do sleep 3600;done"
2.在Manager节点中查看Service
docker service ls
3.在Manager节点中查看容器
发现有一个service名字.xxxx的容器
4.横向扩展
manager节点中查看service信息发现有一项信息:MODE = replicatied 表示这个service可以横向扩展。
// 在swarm集群中拓展出5个
docker service scale busybox_demo=5
5.在Manager节点中查看Service和分布情况
docker service ps busybox_demo
在其他节点服务器中执行docker ps会发现各个节点上都存在容器了。
6.在Node3节点中强制删除一个容器
- 在Node3节点中删除容器
- 去Manager节点查看service信息,发现水平拓展的剩下了4个
- 很快,水平拓展又变回了5个
- 说明,当Swarm集群中有容器退出或失效了,Manager会在集群中选取一个节点,重新启动一个容器进行修补。
7.在Manager节点中删除Service
docker service rm [service名字]
删除Service后,Manager节点会自动寻找在那些节点上有这个Service的容器,然后会去自动删除。