- Swarm 是 Docker 公司在 2014 年 12 月初发布的一套较为简单的工具,用来管理 Docker 集群,它将一群 Docker 宿主机变成一个单一的,虚拟的主机。Swarm 使用标准的 Docker API接口作为其前端访问入口,换言之,各种形式的 Docker Client(docker client in go, docker_py,docker 等)均可以直接与 Swarm 通信。Swarm 几乎全部用 Go 语言来完成开发
- Swarm deamon 只是一个调度器(Scheduler)加路由器(router),Swarm 自己不运行容器,它只是接受 docker 客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即使
Swarm 由于某些原因挂掉了,集群中的节点也会照常运行,当 Swarm 重新恢复运行之后,
它会收集重建集群信息。下面是 Swarm 的结构图:
swarm集群
使用的是docker自带的swarm mode,也就是docker集群的管理和编排。所谓的编排就是指多台集群的管理, 主机的配置,容器的调度等。
swarm mode是docker engine中自带的一种模式,很容易使用,并且无须安装其他的软件。 在使用swarm mode的时候,几台主机上都要先安装好docker。
swarm集群的搭建
实验环境:(三台虚拟机安装docker并开启)
docker1:172.25.60.1 swarm
docker2: 172.25.60.2 node
docker3: 172.25.60.3 node
-
在server1作为leader端,先将swarm镜像加入到docker仓库
-
在server1上做swarm的初始化
注意:在当前主机上启动swarm模式,要保存初始化后token,因为在节点加入时要使用token作为通讯的密钥
-
将docker2和docker3加入swarm集群中
此时就需要密钥了
-
查看节点状态
-
导入nginx镜像
-
部署一个服务群集(以nginx为例)
-
先创建一个网络
-
在manager节点部署nginx服务,服务数量为3个 ,使用nginx镜像
-
编写测试页面
-
测试负载均衡( 测试的时候把真机火墙关掉 )
-
此时查看运行的服务为3个
-
拉伸6 个nginx 服务
-
查看有6个nginx 进程是 Running,每个节点上是两个,实现负载均衡
-
添加监控:使用visualizer监控工具
-
先将镜像导入本地仓库
-
创建监控
开启viz服务慢,需要不断刷新等待建立完成,出现1/1才成功
-
查看监控和节点是否在线
-
浏览器测试
-
输入172.25.60.1:8080,可以看到6个nginx的进程被平均分在了三台机子上
-
监控镜像的更新
-
拉伸监控web服务器的数量为30个
-
监控界面会自动更新为30个
-
下载httpd镜像,在三个节点上都要导入到仓库内
-
在manager节点进行镜像的更新
-
在浏览器上查看镜像由nginx变为httpd
搭建Portainer可视化界面管理器
- portainer:是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据的基本操作(包括上传下载镜像,创建容器等作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。
- portainer部署 :Docker Stack ,通过 Docker Stack 我们只需对已有的 docker-compose.yml 配置文件稍加改造就可以完成 Docker 集群环境下的多服务编排。
- 在server1的manager节点导入portainer及其portainer-agent镜像
- 在server2及server3上导入portainer-agent镜像
- 下载二进制配置文件portainer-agent-stack.yml ,并对其进行集群环境下的多服务编排
- 加载运行配置文件
- 完成之后查看端口会出现9000端口
- 浏览器访问172.25.60.1:9000 登陆设置密码并且登陆,用户默认为admin
- 查看相应的容器显示容器正在运行
- 查看能swarm集群管理相应信息