Docker 三剑客-------docker swam,visualizer监控、stack部署集群、Portainer可视化
Docker 三剑客-------docker swam、visualizer监控、stack部署集群、Portainer可视化
文章目录
- Docker 三剑客-------docker swam、visualizer监控、stack部署集群、Portainer可视化
- 一、docker swarm
- docker swarm简介
- docker swarm部署
- 1.管理节点上的初始化
- 2.节点升降级
- 3.镜像加载
- 4.实现负载均衡
- 二、visualizer监控
- 1.将监控镜像导入本地仓库
- 2.创建监控
- 三、docker stack部署集群
- 1.docker stack与docker-compose的区别:
- 2.编辑yml脚本
- 3.执行脚本,启动集群
- 4.service回滚与更新
- 四、Portainer可视化
- 1.Portainer镜像的加载
- 2.启动服务与测试
一、docker swarm
docker swarm简介
Swarm 是 Docker 公司研发的容器编排工具,用来管理 Docker 集群,它将一群 Docker 宿主机变成一个单一的,虚拟的主机。Swarm 使用标准的 Docker API接口作为其前端访问入口,换言之,各种形式的 Docker Client(docker client in go, docker_py,docker 等)均可以直接与 Swarm 通信
swarm集群:
swarm 集群构成 | 特性 | 负责任务 |
---|---|---|
管理节点(manager) | 整个集群的管理工作的负责节点 | 负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作,包括docker client的命令反馈,节点与仓库的镜像拉取,Docker swarm API进行交互等等 |
工作节点(worker) | swarm node | 负责使用docker守护进程管理多个容器,负责运行相应的服务来执行任务(task) |
Discovery 模块 | Swarm发现Docker集群中的节点的模块。 | discovery是Swarm中用于维护Docker集群状态的机制 |
Scheduler 模块 | Swarm内部的调度模块 | 初始化后,swarm通过发现机制发现所有注册的Docker Node,并收集到所有Docker Node的状态以及具体信息,此后将用此来进行Docker管理请求的处理转发 |
Swarm API模块 | 监听服务模块,可以将该模块抽象为Swarm Server | Swarm Server被初始化并完成监听之后,用户即可以通过Docker Client向Swarm发送Docker集群的管理请求 |
docker swam环境准备
主机域名(ip) | MANAGER STATUS | 配置 |
---|---|---|
server2(172.25.6.2) | manager(Leader/Reachable) | 见博客haproxy仓库 |
server3(172.25.6.3) | node1(worker1) | 同server2 |
server4(172.25.6.4) | mode2(worker2) | 同server2 |
server1(172.25.6.1) | 私人haproxy仓库 | 见博客haproxy仓库 |
结合haproxy仓库搭建(见博客),server1、server2配置与此博客相同,server3、server4的基本配置同server2
docker swarm部署
1.管理节点上的初始化
[root@server1 harbor]# docker swarm init ##生成加加入集群的指令,server1 为manager
To add a worker to this swarm, run the following command:docker swarm join --token SWMTKN-1-65nnbf8kw2rwlftk488a492m4xq95s2leew0taqcwxlu1mlhv2-bgrxrhlkfkc29rstr0q078ns1 172.25.6.1:2377 #以woork身份加入集群的命令,在其他需要加入集群的节点执行此命即可To add a manager to this swarm, run 'docker swarm join-token manager' andfollow the instructions.
#开启swarm集群,node1为管理节点,上面提示中给出了join woker的方式,如果要以manager身份加入集群,查看join-token,命令docker swarm join-token manager
server2,server3,server4节点加入集群,以worker身份
[root@server2 ~]]# docker swarm join --token SWMTKN-1-65nnbf8kw2rwlftk488a492m4xq95s2leew0taqcwxlu1mlhv2-bgrxrhlkfkc29rstr0q078ns1 172.25.6.1:2377[root@server3 ~]]# docker swarm join --token SWMTKN-1-65nnbf8kw2rwlftk488a492m4xq95s2leew0taqcwxlu1mlhv2-bgrxrhlkfkc29rstr0q078ns1 172.25.6.1:2377[root@server4 ~]]# docker swarm join --token SWMTKN-1-65nnbf8kw2rwlftk488a492m4xq95s2leew0taqcwxlu1mlhv2-bgrxrhlkfkc29rstr0q078ns1 172.25.6.1:2377
[root@server1 ~]# docker node ls ##node节点查看
2.节点升降级
[root@server1 ~]# docker node promote server2 ##server的node节点提升为manager(leader),此时为Reachable(备胎)
Node server2 promoted to a manager in the swarm.
[root@server1 ~]# docker node demote server1 ##server1上的manager下台,此时server2的node节点正式为manager(leader)
Manager server1 demoted in the swarm.
[root@server2 ~]# docker node rm server1 -f ##node节点强制(-f)删除,此时形成1个manager2个node的集群
server1
3.镜像加载
[root@server1 ~]# docker load -i myapp.tar ##myapp.tar镜像可在使用docker pull 命令获取
[root@server1 ~]# docker tag ikubernetes/myapp:v1 reg.westos.org/library/myapp:v1
[root@server1 ~]# docker push reg.westos.org/library/myapp:v1 ##镜像上传
[root@server1 ~]# docker tag ikubernetes/myapp:v2 reg.westos.org/library/myapp:v2
[root@server1 ~]# docker push reg.westos.org/library/myapp:v2
4.实现负载均衡
[root@server2 ~]# docker service create --name webservice --publish 80:80 --replicas 3 myapp:v1 ##创建集群服务,名为webservice 端口映射80:80 开启三个副本 镜像为myapp:v1,
副本节点可以用:docker service scale webservice=6,进行扩充
[root@server1 ~]# curl 172.25.6.2/hostname.html ##可看到三个副本节点
[root@server1 ~]# curl 172.25.6.3/hostname.html
[root@server1 ~]# curl 172.25.6.4/hostname.html
二、visualizer监控
1.将监控镜像导入本地仓库
[root@server1 ~]# docker load -i visualizer.tar ##导入监控镜像
[root@server1 ~]# docker tag dockersamples/visualizer reg.westos.org/library/visualizer ##标记镜像路径(默认)
[root@server1 ~]# docker push reg.westos.org/library/visualizer ##上传镜像
2.创建监控
创建名为viz,端口映射为8080,使用镜像为visualizer的监控
[root@server2 ~]#docker service create \
--name=viz \
--publish=8080:8080/tcp \
--constraint=node.role==managere \
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
visualizer
网页访问监控visualizer,输入:172.25.6.2:8080,或直接docker service ls
service回滚、更新在见docker stack部署集群部分
[root@server2 ~]# docker service ls
三、docker stack部署集群
基于 Docker Swarm 之上来完成应用的部署,面向大规模场景下的多服务部署和管理。
1.docker stack与docker-compose的区别:
- Docker stack不支持“build”指令,它是需要镜像是预先已经构建好的, 所以docker-compose更适合于开发场景;
- Docker Compose是一个Python项目,使用Docker API规范来操作容器。
- Docker Stack功能包含在Docker引擎中,是swarm mode的一部分。
- Docker stack不支持基于第2版写的docker-compose.yml ,也就是version版本至少为3。然而Docker Compose对版本为2和3的 文件仍然可以处理;
- docker stack把docker compose的所有工作都做完了,因此docker stack将占主导地位。
2.编辑yml脚本
[root@server2 ~]# vim docker-compose.yml
version: "3.8"
services:web:image: myapp:v1ports:- "80:80"networks:- webnetdeploy:replicas: 10 ##副本节点数量update_config:parallelism: 2delay: 5srestart_policy:condition: on-failure
visualizer:image: visualizer:latestports:- "8080:8080"stop_grace_period: 1m30svolumes:- "/var/run/docker.sock:/var/run/docker.sock"deploy:placement:constraints:- "node.role==manager"networks:webnet:
3.执行脚本,启动集群
[root@server2 ~]# docker stack deploy -c docker-compose.yml mycluster ##yml脚本执行
[root@server2 ~]# docker service ls
[root@server2 ~]# docker service scale mycluster_web=10 ##扩容节点数量,
注:可以直接更改yml脚本:replicas: 20(随意),在重启执行脚本直接进行扩容或缩荣
扩容:20
[root@server2 ~]# docker stack ps mycluster ##命令行查看
4.service回滚与更新
[root@server2 ~]# docker service rollback mycluster_web ##回滚
[root@server2 ~]# docker service update --image myapp:v2 --update-parallelism 10 --update-delay 5s mycluster_web ##更新,更改镜像为 myapp:v2
四、Portainer可视化
对于非运维人员来将采用命令行的方式建立了swarm集群并应用是非常具有学习成本的,所以进行swarm集群管理添加图形化管理界面的配置
1.Portainer镜像的加载
加载三部曲:导入、标记、上传
[root@server1 ~]# docker load -i portainer-agent.tar ##镜像的导入
[root@server1 ~]# docker load -i portainer.tar
[root@server1 ~]# docker tag portainer/portainer:latest reg.westos.org/portainer/portainer:latest
##镜像标记:reg.westos.org/portainer(新建仓库路径)[root@server1 ~]#docker tag portainer/agent:latest reg.westos.org/portainer/agent:latest[root@server1 ~]# docker push reg.westos.org/portainer/portainer:latest ##镜像上传[root@server1 ~]# docker push reg.westos.org/portainer/agent:latest
2.启动服务与测试
[root@server2 ~]# docker stack deploy -c portainer-agent-stack.yml portainer ##portainer脚本执行,portainer-agent-stack.yml为官网下载,可直接应用
[root@server2 ~]# docker service ls ##服务查看
[root@server2 ~]# docker stack ls ##集群状态查看
网页访问图形管理界面,映射端口为9000 172.25.6.2:9000
设置两次密码,8位以上,否则报错
进入界面,完成
Docker 三剑客-------docker swam,visualizer监控、stack部署集群、Portainer可视化相关推荐
- Docker-三剑客之machine、compose、swam集群、visualizer监控、stack部署集群、Portainer可视化
目录: 介绍 一.docker-machine 1.machine安装 2.使用docker-machine 二.Docker-compose 1.docker-compose配置 2.修改hapro ...
- docker 分布式管理群集_Coolpy7分布式物联网MQTT集群搭建
Coolpy7分布式技术,支持多个Coolpy7 Core提供跨数据中心(多活)模式组建群集,支持群集零手动维护(基于Gossip分布式协议作为群集节点状态维护).Coolpy7从版本号V7.3.2. ...
- mysql8.0 利用docker容器安装配置多主多从集群
mysql8.0 利用docker容器安装配置多主多从集群 原文:https://www.cnblogs.com/lkl6/p/14191419.html
- Kubernetes v1.13 二进制部署集群
Kubernetes v1.13 二进制部署集群(HTTPS+RBAC) 官方提供的几种Kubernetes部署方式 minikube Minikube是一个工具,可以在本地快速运行一个单点的Kube ...
- Kubernetes学习之路(26)之kubeasz+ansible部署集群
目录 1.环境说明 2.准备工作 3.分步骤安装 3.1.创建证书和安装准备 3.2.安装etcd集群 3.3.安装docker 3.4.安装master节点 3.5.安装node节点 3.6.部署集 ...
- 云服务器-异地部署集群服务-Kubernetes(K8S)-网络篇
重要!!! 注意: 本文使用二进制安装,过程非常繁琐,所以不推荐大家使用这种安装方式.请使用更简洁的kubeadm安装,具体请参考 云服务器-异地部署集群服务-Kubernetes(K8S)-Kube ...
- Ceph实战(十一):重磅!!!一键部署集群的脚本
您好,我是码农飞哥,本篇文章是Ceph实战专栏的第十一篇文章,前面的系列文章我们分别介绍了集群的部署,介绍了集群的组件,最后到介绍到Ceph的IO流程等等.这一篇文章是结束之作,我将介绍一下重点介绍快 ...
- swarm部署集群_WildFly Swarm –将Java EE应用程序部署为独立的Jar
swarm部署集群 WildFly Swarm提供了一个简单的解决方案,用于将Java EE应用程序部署为独立的Jar文件. 这使得部署应用程序非常容易,尤其是REST或Web服务. Swarm在这方 ...
- SRS部署集群服务 Edge 模式[SRS V4.0]
SRS 部署集群服务 Edge 模式 前言 Edge原理 下载并编译SRS 准备三台服务器,一台也可以,但是播放多了会有卡顿问题 配置SRS 测试SRS集群服务 前言 SRS是一个简单高效的实时视频服 ...
最新文章
- 图灵赠书——程序员12月书讯
- 皮一皮:这位家长,建议自己退群聊...
- numpy数组的索引和切片
- SpringBoot AOP完全讲解二:统一处理请求日志
- android闹钟——原代码【转】
- 三面美团Java岗,尚学堂java马士兵全套
- 详解linux下安装python3环境
- PHP mongodb运用,MongoDB在PHP下的应用学习笔记
- 字符串处理 —— 单模式匹配 —— MP 算法与 KMP 算法
- 中国AI军团争霸机器阅读理解大赛,搜狗创下全球新纪录
- htmlentities和htmlspecialchars 的区别
- w10 计算机配置管理模板,win10老是配置更新,设置这个,让你无处可更...
- python 中英文 分离_利用Python将文本中的中英文分离方法
- Vscode tab键使用
- 台式计算机电源线 规格,电脑电源线规格的介绍
- 洛谷 1144 最短路计数 bfs
- 用户权限影响瑞星安装
- el-input-number 失去焦点blur事件,
- WRF替换静态地理数据中的土地利用数据(WRF替换下垫面数据)
- Lawliet|Python学习笔记2——控制结构异常处理
热门文章
- 常用的计算机病毒检测方法都有哪些?
- grpc-gateway搭建
- HashMap概述与用法总结
- statistical thinking in Python EDA
- WebService:一些常用的webservice网址
- github/git问题之 LibreSSL SSL_connect: Operation timed out in connection to github.com:443
- 2011-07 《信息资源管理 02378》真卷解析,逐题解析+背诵技巧
- 仪器仪表的介绍及发展
- 大数据各岗位薪资多少?一张图告诉你答案
- python用户输入字符串串从小到大排序_python字符串从小到大排序