快速获取容器VIPs,解决集群自动化测试难题
出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五晚6点10分 与您不见不散
说在前面
要想使用容器集群来启动自动化测试,那么我们就必须要了解容器的 VIPs 。我一直在尝试使用 Docker 内部的服务发现功能来识别在 Docker Swarm 集群上部署的 Docker 服务中容器的VIPs ,但是一直没有成功。经过反复尝试我终于找到一种快速、便捷的方法来查找容器的VIPs。
我在这个项目上使用的是 Apache Jmeter 压力测试工具,所以我们需要将工作节点列表作为参数传递,以便它可以与分布式负载测试环境一起工作。
第一次尝试:
Docker 内部的DNS服务发现
Docker使用DNS服务器来保持注册列表和其容器的更新。
实验需要用到下列物品:
两台服务器:
一台 (jd_master)只有一个副本的Master;
另一台服务名称(jd_slave_) 下有多个副本的Workers(Slaves);
Docker compose;
Docker swarm 集群(至少有3台机器用于Raft的一致性工作);
docker-compose.yml文件内容:
我尝试从jd_master容器中用“dig jd_slave”命令将jd_slave作为目标向Docker DNS服务器发出查询请求,但是它只返还了一个自动的负载均衡IP来指向活动的jd_slave容器。
所以这种方法不符合我们的需求。
第二次尝试:
研究Docker覆盖网络
在相同的情况下,我使用“less /etc/hosts”命令进行查询,希望在覆盖网络当中获得容器的VIPs。
这个尝试是成功的!
第三次尝试:
设计外部的服务发现
我们不仅需要服务发现功能,还需要知道容器的状态:
容器镜像名称;
容器测试的执行状态:等待测试/测试/完成;
容器健康检测和监视;
根据测试执行状态来测试观察者和协调者;
在Master上必须向docker.socket 或 docker API 发出指令;
考虑到需求因素,我们需要一个定制的服务发现来处理所有需求。
Flight Controller
默认情况下,在Flight Controller模式中启动自动化测试队列。
它将在一个预先定义的端口上监听HTTP REST请求,所有容器都要调用这个请求来加入测试集群。
从现在起, Flight Controller 将管理和监视所有容器的生命周期和状态。密切关注其健康状况来维持最新的注册表。
WORKER CONTAINER (Alpine)
一旦控制器启动,Flight Controller将作为第一个运行脚本来公布其VIP:
/etc/hosts —> VIP and CONTAINER NAME
在同一覆盖网络中的任何容器都可以访问VIP,可以应用测试重试策略,以便在出现故障时重试测试。
MASTER CONTAINER
同Worker Container一样,但使用不同的标签。
点击下列标题,干货
支持Kubernetes的Docker企业版正式开启公测,新版本特性先睹为快
两种方法让Docker帮您快速构建应用程序(本文以构建Haskell应用程序为例)
实战演练丨在Docker 企业版中打造专属的私人镜像仓库
支持Kubernetes的Docker for Mac版本正式上线,快来下载体验吧!(文尾附下载地址)
如果本文对你有帮助,欢迎分享到朋友圈!获取更多Docker实用技巧,扫描下图二维码!
快速获取容器VIPs,解决集群自动化测试难题相关推荐
- 【实战演练】快速获取容器VIPs,解决集群自动化测试难题
项目背景介绍 要想使用容器集群来启动自动化测试,那么我们就必须要了解容器的 VIPs .文章作者 Marcos Tenrero 一直在尝试使用 Docker 内部的服务发现功能来识别在 Docker ...
- CentOS7中使用kubeadm快速部署一套K8S集群
一.Kubernetes概述 1.1 Kubernetes是什么 Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S K8S用于容器化应用程序的部 ...
- 使用FIT2CLOUD在青云QingCloud快速部署和管理Kubernetes集群
一.Kubernetes概述 Kubernetes是Google一直在推进的容器调度和管理系统,是Google内部使用的容器管理系统Borg的开源版本.它可以实现对Docker容器的部署,配置,伸缩和 ...
- 推荐一款可快速全量交付 Kubernetes 集群分布式应用的神器 Sealer
公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 什么是集群镜像 顾名思义,和操作系统 .iso 镜像或 Docker 镜像类似,集群镜像是用一定的技术手段把整个集 ...
- 《Linux运维实战:Centos7.6基于ansible一键离线部署mongodb4.2.23容器版副本集群》
一.部署背景 由于业务系统的特殊性,我们需要针对不同的客户环境部署 mongodb副本集群,由于大都数用户都是专网环境,无法使用外网,为了更便捷,高效的部署,针对业务系统的特性,我这边编写了基于ans ...
- 五分钟带你玩转Zabbix6.0容器化HA集群
图片 蔡斯 | Zabbix开源社区签约专家 Zabbix资深玩家,SRE高级运维,架构师.精通服务组件监控.模板制作及告警治理. 擅长领域:Zabbix API定制化开发,对接企业蓝鲸,JMS保垒机 ...
- Docker高级篇-Docker容器内Redis集群配置
Docker容器内Redis集群配置 1.三主三从集成配置 1.1.关闭防火墙.启动docker服务 1.2.新建6个docker容器实例 1.3.进入容器redis-node-1,构建主从关系 1. ...
- Shiro结合Redis解决集群中session同步问题
Shiro结合Redis解决集群中session同步问题 参考文章: (1)Shiro结合Redis解决集群中session同步问题 (2)https://www.cnblogs.com/Luke-M ...
- Docker 容器部署 Consul 集群
Docker 容器部署 Consul 集群 Consul 介绍 Consul 提供了分布式系统的服务发现和配置的解决方案.基于go语言实现.并且在git上开放了源码consul-git.consul还 ...
最新文章
- 软件设计模式-7种设计原则总结
- selecte设置不可用使用disabled属性注意
- C语言二分查找法(指针和数组实现)
- js 解析php serialize,php如何解析jquery serialize 提交后的数据
- java基础(一)-面向对象思想
- 如何在SQL Server中自动进行表分区
- 【CCCC】L3-020 至多删三个字符 (30分),序列dp+去重
- 国标GB28181协议紫光华智云平台级联国标GB28181协议视频平台EasyGBS注意事项
- Linux系统环境:DM8数据库安装
- 【数据应用案例】Face2Face升级版——HeadOn
- 常见的几种多媒体设计框架
- 低效程序员的9个坏习惯
- DLP和DMD的区别
- 5000字干货 | 决策树、随机森林、bagging、boosting、Adaboost、GBDT、XGBoost总结
- 华三防火墙web端口_HCL模拟器防火墙WEB方式登录配置
- 【Android】网络小说阅读软件的实现
- 简单五子棋,加入存储,读取功能
- 详解DNS(理论篇)
- 亿起发网站主获取CPS数据接口说明
- CMMI的关键过程域(KPA)
热门文章
- LFS 好辛苦的工作,据说要坚持至少12个小时,而如果不用“风无痕9588”大侠的脚本代码而手工输入的话,据说要200个小时!
- 学习笔记 | 2023 AAAI 对抗性权值扰动改善图神经网络的泛化性能
- 自动驾驶学习过程及资料整理
- 存量市场之下,电商之战深入腹地且逻辑未变
- spark启动历史服务配置时报错java.net.ConnectException: Connection refused; For more details see: http://wiki.ap
- 捷信达集团办设置(windows7 或win 8.1)
- Android图片上传服务器(File格式)
- 2018最新破解pycharm安装过程(含注册码)
- 这样设置,让你的 iPhone 用起来更加得心应手
- java启动器_Minecraft Java版新启动器正式开放