【实战演练】快速获取容器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文件内容
尝试从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,解决集群自动化测试难题相关推荐
- 快速获取容器VIPs,解决集群自动化测试难题
出品丨Docker公司(ID:docker-cn) 编译丨小东 每周一.三.五晚6点10分 与您不见不散 说在前面 要想使用容器集群来启动自动化测试,那么我们就必须要了解容器的 VIPs .我一直在 ...
- 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还 ...
最新文章
- JDK6.0+Eclipse3.2+MyEclipse5.0GA+Tomcat5.0+Win2003搭建J2EE开发平台.
- S4的ESH Bug导致Search help巨慢
- 小云(云层-陈霁)的发展史
- 详解 HTTPS 移动端对称加密套件优
- Android--建立能与访问者进行相互通信的本地服务
- java 读取配置文件的几种方法
- Java课程中实际项目案例分析
- 华为鸿蒙主题设计,2020华为全球主题设计大赛,简直就是神仙打架啊!
- 作为公共组软件工程师如何工作
- JS 监听浏览器的回退 事件 [二〇一八年九月二十五日]
- 什么是文本分析,文本分析主要运用到了哪些关键技术?
- 优秀前端工程师必备: checkbox radio--单钩 多钩 大比较:你是♂||♀ , 还是 ♂♀...
- python 实现发送手机短信验证码后台方法
- 《魔兽》遭黑客入侵 主城横尸遍野
- 【工业控制】多变量动态矩阵预测控制(DMC)【含Matlab源码 1499期】
- neutron组网规划(flat、vlan类型)
- 计算机科学引论2021英文,计算机科学引论= Computing Essentials : 英文
- iOS Swift No.21 - 协议2
- 电子元器件篇---MOS管
- 【docker】docker建立最简单最小的helloworld镜像
热门文章
- ScalaNote24-模式匹配和高阶函数练习题
- 树莓派CM4烧录Ubuntu20镜像与ROS2的安装(无屏)
- 国内外自然语言处理研究机构
- 小甲鱼python零基础课后习题001我和Python的第一次亲密接触
- azure linux 配置端口,快速入门 - 在 Azure 门户中创建 Linux VM - Azure Virtual Machines | Microsoft Docs...
- 前端JS如何获取主域名(根域名)
- 微信小程序同wifi内局域网调试失败问题几种解决办法
- C# 如何更改程序集名称
- Astah如何导出图片
- iPhone 13维修换屏问题:芯片决定面容ID“生死”