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

简介: 尝试使用 Docker 内部的服务发现功能来识别在 Docker Swarm 集群上部署的 Docker 服务中容器的VIPs ,但是一直没有成功。经过反复尝试,终于找到一种快速、便捷的方法来查找容器的VIPs。

项目背景介绍

要想使用容器集群来启动自动化测试,那么我们就必须要了解容器的 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文件内容
image

image

尝试从jd_master容器中用“dig jd_slave”命令将jd_slave作为目标向Docker DNS服务器发出查询请求,但是它只返还了一个自动的负载均衡IP来指向活动的jd_slave容器。

image

所以这种方法不符合我们的需求。

第二次尝试:研究Docker覆盖网络

在相同的情况下,我使用“less /etc/hosts”命令进行查询,希望在覆盖网络当中获得容器的VIPs。

image
image
image
image

这个尝试是成功的!

第三次尝试:设计外部的服务发现

我们不仅需要服务发现功能,还需要知道容器的状态:

  • 容器镜像名称;
  • 容器测试的执行状态:等待测试/测试/完成;
  • 容器健康检测和监视;
  • 根据测试执行状态来测试观察者和协调者;
  • 在Master上必须向docker.socket 或 docker API 发出指令;

考虑到需求因素,我们需要一个定制的服务发现来处理所有需求。

image

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一样,但使用不同的标签。

目录
相关文章
|
2月前
|
数据采集 JSON JavaScript
Cypress 插件实战:让测试更稳定,不再“偶尔掉链子”
本文分享如何通过自定义Cypress插件解决测试不稳定的痛点。插件可实现智能等待、数据预处理等能力,替代传统硬性等待,有效减少偶发性失败,提升测试效率和可维护性。文内包含具体实现方法与最佳实践。
|
3月前
|
存储 关系型数据库 测试技术
玩转n8n测试自动化:核心节点详解与测试实战指南
n8n中节点是自动化测试的核心,涵盖触发器、数据操作、逻辑控制和工具节点。通过组合节点,测试工程师可构建高效、智能的测试流程,提升测试自动化能力。
|
3月前
|
Web App开发 前端开发 JavaScript
Playwright极速UI自动化实战指南
Playwright告别Selenium痛点,以智能等待、强大选择器、网络拦截与多设备模拟四大利器,提升自动化效率与稳定性。本文通过实战代码详解其加速秘籍,助你构建高效、可靠的UI测试方案。
|
2月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
2月前
|
弹性计算 人工智能 前端开发
在阿里云ECS上部署n8n自动化工作流:U2实例实战
本文介绍如何在阿里云ECS的u2i/u2a实例上部署开源工作流自动化平台n8n,利用Docker快速搭建并配置定时任务,实现如每日抓取MuleRun新AI Agent并推送通知等自动化流程。内容涵盖环境准备、安全组设置、实战案例与优化建议,助力高效构建低维护成本的自动化系统。
621 5
|
2月前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
2月前
|
人工智能 自然语言处理 JavaScript
Playwright MCP在UI回归测试中的实战:构建AI自主测试智能体
Playwright MCP结合AI智能体,革新UI回归测试:通过自然语言驱动浏览器操作,降低脚本编写门槛,提升测试效率与覆盖范围。借助快照解析、智能定位与Jira等工具集成,实现从需求描述到自动化执行的闭环,推动测试迈向智能化、民主化新阶段。
|
2月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
3月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
513 11
|
11月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。