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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 尝试使用 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一样,但使用不同的标签。

目录
相关文章
|
13天前
|
运维 监控 Cloud Native
自动化运维的魔法书云原生之旅:从容器化到微服务架构的演变
【8月更文挑战第29天】本文将带你领略自动化运维的魅力,从脚本编写到工具应用,我们将一起探索如何通过技术提升效率和稳定性。你将学会如何让服务器自主完成更新、监控和故障修复,仿佛拥有了一本能够自动翻页的魔法书。
|
27天前
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
9天前
|
Linux pouch 容器
CentOS7部署阿里巴巴开源的pouch容器管理工具实战
关于如何在CentOS 7.6操作系统上安装和使用阿里巴巴开源的Pouch容器管理工具的实战教程。
43 2
CentOS7部署阿里巴巴开源的pouch容器管理工具实战
|
7天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【9月更文挑战第5天】性能测试是确保应用在高负载下稳定运行的关键。本文介绍Apache JMeter和Locust两款常用性能测试工具,帮助识别并解决性能瓶颈。JMeter适用于测试静态和动态资源,而Locust则通过Python脚本模拟HTTP请求。文章详细讲解了安装、配置及使用方法,并提供了实战案例,帮助你掌握性能测试技巧,提升应用性能。通过分析测试结果、模拟并发、检查资源使用情况及代码优化,确保应用在高并发环境下表现优异。
28 5
|
6天前
|
测试技术 Apache 数据库
从慢如蜗牛到飞一般的感觉!Python性能测试实战,JMeter&Locust助你加速🏃‍♂️
【9月更文挑战第6天】你的Python应用是否曾因响应缓慢而让用户望而却步?借助JMeter与Locust,这一切将迎刃而解。JMeter作为Apache基金会的明星项目,以其强大的跨平台和多协议支持能力,成为性能测试领域的魔法师;而Locust则以Python的简洁与高效,让性能测试更加灵活。通过实战演练,你可以利用这两款工具轻松识别并解决性能瓶颈,优化数据库查询、网络配置等,最终使应用变得敏捷高效,轻松应对高并发挑战。
9 1
|
9天前
|
Kubernetes Linux API
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
该博客文章详细介绍了在CentOS 7.6操作系统上使用kubeadm工具部署kubernetes 1.17.2版本的测试集群的过程,包括主机环境准备、安装Docker、配置kubelet、初始化集群、添加节点、部署网络插件以及配置k8s node节点管理api server服务器。
37 0
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
|
15天前
|
测试技术 API 开发者
.NET单元测试框架大比拼:MSTest、xUnit与NUnit的实战较量与选择指南
【8月更文挑战第28天】单元测试是软件开发中不可或缺的一环,它能够确保代码的质量和稳定性。在.NET生态系统中,MSTest、xUnit和NUnit是最为流行的单元测试框架。本文将对这三种测试框架进行全面解析,并通过示例代码展示它们的基本用法和特点。
29 7
|
13天前
|
IDE Java 测试技术
揭秘Java高效编程:测试与调试实战策略,让你代码质量飞跃,职场竞争力飙升!
【8月更文挑战第30天】在软件开发中,测试与调试对确保代码质量至关重要。本文通过对比单元测试、集成测试、调试技巧及静态代码分析,探讨了多种实用的Java测试与调试策略。JUnit和Mockito分别用于单元测试与集成测试,有助于提前发现错误并提高代码可维护性;Eclipse和IntelliJ IDEA内置调试器则能快速定位问题;Checkstyle和PMD等工具则通过静态代码分析发现潜在问题。综合运用这些策略,可显著提升代码质量,为项目成功打下坚实基础。
33 2
|
15天前
|
机器学习/深度学习 Kubernetes 算法框架/工具
ONNX 与容器化:实现端到端的 ML 管道自动化
【8月更文第27天】在现代机器学习 (ML) 工作流程中,模型的训练、转换、部署和管理通常涉及多个步骤和技术栈。Open Neural Network Exchange (ONNX) 提供了一种统一的方式来表示和交换机器学习模型,而容器化技术(如 Docker 和 Kubernetes)则为部署和管理这些模型提供了灵活且可扩展的方式。本文将探讨如何结合 ONNX 和容器化技术来构建端到端的 ML 管道自动化系统。
29 1
|
24天前
|
缓存 开发者 Docker
Dockerfile是Docker容器化过程中的核心组件,它允许开发者以一种可重复、可移植的方式自动化地构建Docker镜像
【8月更文挑战第19天】Dockerfile是构建Docker镜像的脚本文件,含一系列指令定义镜像构建步骤。每条大写指令后跟至少一个参数,按序执行,每执行一条指令即生成新的镜像层。常用指令包括:FROM指定基础镜像;RUN执行构建命令;EXPOSE开放端口;CMD指定容器启动行为等。优化策略涉及减少镜像层数、选择轻量基础镜像、利用缓存及清理冗余文件。示例:基于Python应用的Dockerfile包括设置工作目录、复制文件、安装依赖等步骤。掌握Dockerfile有助于高效自动化构建镜像,加速应用部署。
21 1