项目背景介绍

要想使用容器集群来启动自动化测试,那么我们就必须要了解容器的 VIPs 。文章作者 Marcos Tenrero 一直在尝试使用 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一样,但使用不同的标签。

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

  1. 快速获取容器VIPs,解决集群自动化测试难题

    出品丨Docker公司(ID:docker-cn) 编译丨小东 每周一.三.五晚6点10分  与您不见不散 说在前面 要想使用容器集群来启动自动化测试,那么我们就必须要了解容器的 VIPs .我一直在 ...

  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. JDK6.0+Eclipse3.2+MyEclipse5.0GA+Tomcat5.0+Win2003搭建J2EE开发平台.
  2. S4的ESH Bug导致Search help巨慢
  3. 小云(云层-陈霁)的发展史
  4. 详解 HTTPS 移动端对称加密套件优
  5. Android--建立能与访问者进行相互通信的本地服务
  6. java 读取配置文件的几种方法
  7. Java课程中实际项目案例分析
  8. 华为鸿蒙主题设计,2020华为全球主题设计大赛,简直就是神仙打架啊!
  9. 作为公共组软件工程师如何工作
  10. JS 监听浏览器的回退 事件 [二〇一八年九月二十五日]
  11. 什么是文本分析,文本分析主要运用到了哪些关键技术?
  12. 优秀前端工程师必备: checkbox radio--单钩 多钩 大比较:你是♂||♀ , 还是 ♂♀...
  13. python 实现发送手机短信验证码后台方法
  14. 《魔兽》遭黑客入侵 主城横尸遍野
  15. 【工业控制】多变量动态矩阵预测控制(DMC)【含Matlab源码 1499期】
  16. neutron组网规划(flat、vlan类型)
  17. 计算机科学引论2021英文,计算机科学引论= Computing Essentials : 英文
  18. iOS Swift No.21 - 协议2
  19. 电子元器件篇---MOS管
  20. 【docker】docker建立最简单最小的helloworld镜像

热门文章

  1. ScalaNote24-模式匹配和高阶函数练习题
  2. 树莓派CM4烧录Ubuntu20镜像与ROS2的安装(无屏)
  3. 国内外自然语言处理研究机构
  4. 小甲鱼python零基础课后习题001我和Python的第一次亲密接触
  5. azure linux 配置端口,快速入门 - 在 Azure 门户中创建 Linux VM - Azure Virtual Machines | Microsoft Docs...
  6. 前端JS如何获取主域名(根域名)
  7. 微信小程序同wifi内局域网调试失败问题几种解决办法
  8. C# 如何更改程序集名称
  9. Astah如何导出图片
  10. iPhone 13维修换屏问题:芯片决定面容ID“生死”