出品丨Docker公司(ID:docker-cn)

编译丨小东

每周一、三、五晚6点10分  与您不见不散

说在前面

要想使用容器集群来启动自动化测试,那么我们就必须要了解容器的 VIPs 。我一直在尝试使用 Docker 内部的服务发现功能来识别在 Docker Swarm 集群上部署的 Docker 服务中容器的VIPs ,但是一直没有成功。经过反复尝试我终于找到一种快速、便捷的方法来查找容器的VIPs。

我在这个项目上使用的是 Apache Jmeter 压力测试工具,所以我们需要将工作节点列表作为参数传递,以便它可以与分布式负载测试环境一起工作。

第一次尝试:

Docker 内部的DNS服务发现

Docker使用DNS服务器来保持注册列表和其容器的更新。

实验需要用到下列物品:

  • 两台服务器:

  1. 一台 (jd_master)只有一个副本的Master;

  2. 另一台服务名称(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,解决集群自动化测试难题相关推荐

  1. 【实战演练】快速获取容器VIPs,解决集群自动化测试难题

    项目背景介绍 要想使用容器集群来启动自动化测试,那么我们就必须要了解容器的 VIPs .文章作者 Marcos Tenrero 一直在尝试使用 Docker 内部的服务发现功能来识别在 Docker ...

  2. CentOS7中使用kubeadm快速部署一套K8S集群

    一.Kubernetes概述 1.1 Kubernetes是什么 Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S K8S用于容器化应用程序的部 ...

  3. 使用FIT2CLOUD在青云QingCloud快速部署和管理Kubernetes集群

    一.Kubernetes概述 Kubernetes是Google一直在推进的容器调度和管理系统,是Google内部使用的容器管理系统Borg的开源版本.它可以实现对Docker容器的部署,配置,伸缩和 ...

  4. 推荐一款可快速全量交付 Kubernetes 集群分布式应用的神器 Sealer

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 什么是集群镜像 顾名思义,和操作系统 .iso 镜像或 Docker 镜像类似,集群镜像是用一定的技术手段把整个集 ...

  5. 《Linux运维实战:Centos7.6基于ansible一键离线部署mongodb4.2.23容器版副本集群》

    一.部署背景 由于业务系统的特殊性,我们需要针对不同的客户环境部署 mongodb副本集群,由于大都数用户都是专网环境,无法使用外网,为了更便捷,高效的部署,针对业务系统的特性,我这边编写了基于ans ...

  6. 五分钟带你玩转Zabbix6.0容器化HA集群

    图片 蔡斯 | Zabbix开源社区签约专家 Zabbix资深玩家,SRE高级运维,架构师.精通服务组件监控.模板制作及告警治理. 擅长领域:Zabbix API定制化开发,对接企业蓝鲸,JMS保垒机 ...

  7. Docker高级篇-Docker容器内Redis集群配置

    Docker容器内Redis集群配置 1.三主三从集成配置 1.1.关闭防火墙.启动docker服务 1.2.新建6个docker容器实例 1.3.进入容器redis-node-1,构建主从关系 1. ...

  8. Shiro结合Redis解决集群中session同步问题

    Shiro结合Redis解决集群中session同步问题 参考文章: (1)Shiro结合Redis解决集群中session同步问题 (2)https://www.cnblogs.com/Luke-M ...

  9. Docker 容器部署 Consul 集群

    Docker 容器部署 Consul 集群 Consul 介绍 Consul 提供了分布式系统的服务发现和配置的解决方案.基于go语言实现.并且在git上开放了源码consul-git.consul还 ...

最新文章

  1. 软件设计模式-7种设计原则总结
  2. selecte设置不可用使用disabled属性注意
  3. C语言二分查找法(指针和数组实现)
  4. js 解析php serialize,php如何解析jquery serialize 提交后的数据
  5. java基础(一)-面向对象思想
  6. 如何在SQL Server中自动进行表分区
  7. 【CCCC】L3-020 至多删三个字符 (30分),序列dp+去重
  8. 国标GB28181协议紫光华智云平台级联国标GB28181协议视频平台EasyGBS注意事项
  9. Linux系统环境:DM8数据库安装
  10. 【数据应用案例】Face2Face升级版——HeadOn
  11. 常见的几种多媒体设计框架
  12. 低效程序员的9个坏习惯
  13. DLP和DMD的区别
  14. 5000字干货 | 决策树、随机森林、bagging、boosting、Adaboost、GBDT、XGBoost总结
  15. 华三防火墙web端口_HCL模拟器防火墙WEB方式登录配置
  16. 【Android】网络小说阅读软件的实现
  17. 简单五子棋,加入存储,读取功能
  18. 详解DNS(理论篇)
  19. 亿起发网站主获取CPS数据接口说明
  20. CMMI的关键过程域(KPA)

热门文章

  1. LFS 好辛苦的工作,据说要坚持至少12个小时,而如果不用“风无痕9588”大侠的脚本代码而手工输入的话,据说要200个小时!
  2. 学习笔记 | 2023 AAAI 对抗性权值扰动改善图神经网络的泛化性能
  3. 自动驾驶学习过程及资料整理
  4. 存量市场之下,电商之战深入腹地且逻辑未变
  5. spark启动历史服务配置时报错java.net.ConnectException: Connection refused; For more details see: http://wiki.ap
  6. 捷信达集团办设置(windows7 或win 8.1)
  7. Android图片上传服务器(File格式)
  8. 2018最新破解pycharm安装过程(含注册码)
  9. 这样设置,让你的 iPhone 用起来更加得心应手
  10. java启动器_Minecraft Java版新启动器正式开放