docker容器间网络仿真工具-pumba

docker-tc&pumba

docker-tc:docker-tc项目仓库
pumba:pumba项目仓库
这两个项目理论上都可以实现对容器间的网络环境进行各种模拟干预,包括延迟,丢包,带宽限制等。
但是我在实际使用时,发现docker-tc这个工具在进行网络进行模拟时,会使我的程序卡住,一直不执行(程序在不进行任何限速的时候,可以正常工作),因此舍弃这种方式。
pumba相对于docker-tc的缺点是在不使用其他全局监控插件时不能做到完全自动化,docker-tc可以通过在docker compose中使用label标签进行全自动的部署。pumba需要在容器启动后再进行网络相关的设置,因此需要单独开一个终端进行pumba指令的执行,执行期间是独占的,因此也无法将其整理成bash脚本的一个部分。

pumba

安装

方式1:

wget https://github.com/alexei-led/pumba/releases/download/0.10.1/pumba_linux_amd64
sudo mv pumba_linux_amd64 /usr/local/bin/pumba
chmod +x /usr/local/bin/pumba && pumba --help

方式2:

sudo curl -L https://github.com/alexei-led/pumba/releases/download/0.10.1/pumba_linux_amd64 --output /usr/local/bin/pumba
chmod +x /usr/local/bin/pumba && pumba --help

如果出现了pumba的帮助手册就说明安装成功,就可以使用pumba进行docker容器间网络的设置!
如果你需要下载最新版本的pumba,可以需要自己查看版本并更新链接:https://github.com/alexei-led/pumba/releases

实验环境

我的实验环境是三个容器位于同一个自定义的子网,然后它们需要通过网络连接完成协同推理,pumba的作用是限制它们之间的网络环境。
docker-compose.yml定义如下:

# Settings and configurations that are common for all containers
x-paoding-common: &paoding-common
  image: pao-ding:1.0
  volumes:
    - /home/yons/.cache/torch/hub/checkpoints:/root/.cache/torch/hub/checkpoints/
    - /home/yons/whisperliang/Pao-Ding:/Pao-Ding
  
services:
  # # you can make the workfolw automatic by this script
  # paoding-master:
  #   <<: *paoding-common
  #   command: "bash -c 'sleep 10 && python3 main.py master'"
  #   networks:
  #     paoding-network:
  #       ipv4_address: 174.28.0.250
  #   depends_on:
  #     paoding-trainer:
  #       condition: service_healthy
  #     paoding-worker0:
  #       condition: service_healthy
  #     paoding-worker1:
  #       condition: service_healthy

  # paoding-trainer:
  #   <<: *paoding-common
  #   command: python3 main.py trainer
  #   networks:
  #     paoding-network:
  #       ipv4_address: 174.28.0.2
  #   healthcheck:
  #     test: ["CMD", "curl", "-f", "http://localhost:8000"]
  #     interval: 10s
  #     timeout: 5s
  #     retries: 20

  # execute python3 main.py master in docker paoding-master-trainer
  # make sure that pumba script works
  paoding-master-trainer:
    <<: *paoding-common
    command: python3 main.py trainer
    networks:
      paoding-network:
        ipv4_address: 174.28.0.2
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000"]
      interval: 10s
      timeout: 5s
      retries: 20

  paoding-worker0:
    <<: *paoding-common
    command: python3 main.py worker -i 0
    networks:
      paoding-network:
        ipv4_address: 174.28.0.3
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000"]
      interval: 10s
      timeout: 5s
      retries: 20

  paoding-worker1:
    <<: *paoding-common
    command: python3 main.py worker -i 1
    networks:
      paoding-network:
        ipv4_address: 174.28.0.4
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000"]
      interval: 10s
      timeout: 5s
      retries: 20

# volumes:
#   data1-1:

networks:
  paoding-network:
    driver: bridge
    ipam:
      config:
        - subnet: 174.28.0.0/24

实验场景

首先我需要进行的是在特定带宽下进行容器间协同推理的实验。

pumba netem --duration 2m --tc-image gaiadocker/iproute2 rate --rate 32mbit re2:^pao-ding

我使用docker-compose up -d 启动各容器之后,使用pumba指令进行带宽限制。通过正则匹配,pumba可以自动将符合条件的容器带宽进行限制。
然后我们新开一个终端,输入指令docker exec -it pao-ding_paoding-master-trainer_1 /bin/bash进入docker paoding-master-trainer,并执行python3 main.py master进行协同推理
运行结果如下:
带宽限制结果

从图上可以看出带宽被限制到3.6MB/s(预期的是4MB/s,有误差是正常的,而且这比docker-tc似乎更准确一些)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/770408.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大屏开发系列——Echarts的基础使用

本文为个人近期学习总结&#xff0c;若有错误之处&#xff0c;欢迎指出&#xff01; Echarts在vue2中的基础使用 一、简单介绍二、基本使用&#xff08;vue2中&#xff09;1.npm安装2.main.js引入3.使用步骤(1)准备带有宽高的DOM容器&#xff1b;(2)初始化echarts实例&#xff…

React+TS前台项目实战(二十五)-- 全局常用排序组件SortButton封装

文章目录 前言SortButton组件1. 功能分析2. 代码详细注释3. 使用到的全局hook代码4. 使用方式5. 效果展示 总结 前言 今天要封装的SortButton 组件&#xff0c;主要用在表格列排序上&#xff0c;运用于更新路由并跳转更新&#xff0c;起到刷新页面仍然处于当前排序数据。 Sor…

2024最新PyCharm安装教程(附激活码)

今天讲解的是PyCharm安装教程 一、软件简介 PyCharm是一款Python IDE&#xff0c;其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具&#xff0c;比如&#xff0c; 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等等。此外…

鸿翼ECM统一AI检索应用全景,为企业打造全方位搜索服务

随着企业的发展和信息化进程的加快&#xff0c;海量数据已沉淀至企业各类系统&#xff0c;系统间信息孤立、信息利用率低、数据价值无法发挥成为制约企业发展的重要因素。如何对散落在企业各系统中的数据、内容进行统一管理和高效利用&#xff0c;实现高效精准的信息检索&#…

手把手教你一步一步通过AI助手生成利润表分析报告

AI助手之利润表分析报告-操作篇 以下为文字整理部分&#xff1a; 如果要手工制作一份这样的利润分析报告大概要多久时间&#xff1f;从准备数据做成表格&#xff0c;到完成报告&#xff0c;至少需要1天的时间吧&#xff0c;特别是敲文字报告的时候&#xff0c;生怕把数字搞错要…

springboot水环境检测系统的设计与实现-计算机毕业设计041446

摘 要 在我国,水源的污染是不可忽视的问题。对于水质监测进行数据的采集工作,目前主要通过人工实现。因此,部分地区的采集工作,实施起来难度很大,比如恶劣环境和偏僻山区等地。所以,目前对于水质监测的研究,主导方向是建立更加高效完善,智能化的水质监测系统。近几年,无线传感器…

工业 web4.0UI 风格品质卓越

工业 web4.0UI 风格品质卓越

STM32 Cannot access memory

问题描述 最近自己做了一块STM32F103ZET6的板子&#xff0c;在焊接完成后可以在下载器界面看到idcode&#xff0c;但烧录时报错 Cannot access memory 。 解决办法 测量STM32各个供电项&#xff0c;发现时33脚处VDDA电压只有1.8V&#xff0c;是因为R3电阻过大&#xff0c;…

成都欣丰洪泰文化传媒有限公司开网店可靠吗?

在数字化浪潮席卷全球的今天&#xff0c;电商行业无疑是这场浪潮中的佼佼者。而在这波汹涌的电商大潮中&#xff0c;成都欣丰洪泰文化传媒有限公司凭借其专业的电商服务能力和前瞻的市场洞察力&#xff0c;成为了业界的一匹黑马。今天&#xff0c;就让我们一起揭开这家专注于电…

CANoe的capl调用Qt制作的dll

闲谈 因为Qt封装了很多个人感觉很好用的库&#xff0c;所以一直想通过CAPL去调用Qt实现一些功能&#xff0c;但是一直没机会&#xff08;网络上也没看到这方面的教程&#xff09;&#xff0c;这次自己用了两天&#xff0c;踩了很多坑&#xff0c;终于是做成了一个初步的调用方…

Chirp信号生成(FPGA、基于cordic IP核)

一、Chirp生成模块介绍 采用Verilog 生成Chirp&#xff0c;实现输入使能电平&#xff0c;模块输出Chirp信号&#xff0c;Chirp信号频率范围&#xff0c;时间宽度&#xff0c;连续Chirp信号数量可配置。 二、模块例化方法示例 parameter FL d20_000 ; parameter FH…

linux centos tomcat 不安全的HTTP请求方法

1、页面查看 2、在linux主机可使用此命令查看 curl -v -X OPTIONS http://实际地址 3、进入tomcat conf目录vim web.xml&#xff0c;增加以下内容 <!-- close insecure http methods --> <security-constraint><web-resource-collection><web-resource…

springboot项目接入prometheus并展示到grafana

背景 随着业务发展&#xff0c;服务的健康指标变得越来越重要&#xff0c;监控服务的健康指标成为很多公司必要需求。 Prometheus 介绍 Prometheus是一个开源的监控和警报工具集&#xff0c;最初由SoundCloud构建。它自2012年以来已成为许多公司和组织监控其IT基础设施的首选解…

深入了解 Redis 五种类型命令与如何在 Java 中操作 Redis

文章目录 Redis 五种类型命令在 Java 中操作 Redis使用 Spring Data Redis 简化操作 总结 &#x1f389;欢迎来到SpringBoot框架学习专栏~ ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章专栏&#xff1a;SpringBoot…

【嵌入式CLion】进阶调试——WSL下的Linux体验

说明&#xff1a; 1&#xff0c;这里所指的嵌入式其实是指嵌入式微控制器MCU&#xff0c;即单片机 2&#xff0c;万事开头难&#xff0c;本文目前提供了WSL工具链的搭建&#xff0c;后面会持续更新 一、启用RTOS集成 在搭建WSL工具链之前&#xff0c;先讲一下集成的RTOS功能&a…

汇凯金业:数字货币对经济的影响有哪些

随着信息技术的飞速发展&#xff0c;数字货币作为一种新兴的货币形态&#xff0c;正逐步走进人们的视野&#xff0c;并对传统经济体系产生着深远影响。它不仅革新了交易方式&#xff0c;更在重塑金融格局、赋能经济发展等方面展现出巨大潜力。 一、交易效率的“加速器” 数字…

亚马逊跟卖选品erp采集,跟卖卖家的选品利器,提升选品效率!

今天给亚马逊跟卖卖家&#xff0c;分享我现在在用的两种选品方式&#xff0c;做个铺货或者是跟卖都可以&#xff0c;是不是很多卖家选品现在都是亚马逊前端页面或是新品榜单选择产品跟卖&#xff0c;这样找品这就相当于大海捞针&#xff0c;而且新品榜单的产品你能看到那其他卖…

RS232、RS485与RS422初步学习

目录 电平 传输方式 共模和差模干扰 ps&#xff1a;双绞线 485总线结构 ps&#xff1a;终端电阻 RS232接口&#xff08;DB9&#xff09; 优缺点 RS232优缺点 RS485较RS232的优点 为什么RS232还在使用&#xff1f; 电平 RS232、RS485与RS422的电平 区间逻辑备注RS232…

【技巧】ArcgisPro 字段计算器内置函数方法的调用

在arcgisPro中&#xff0c;内置了常用的几种函数方法&#xff0c;如顺序编号&#xff0c;重分类等&#xff1b;调用方法如下&#xff1a;

python-计算矩阵边缘元素之和(赛氪OJ)

[题目描述] 输入一个整数矩阵&#xff0c;计算位于矩阵边缘的元素之和。 所谓矩阵边缘的元素&#xff0c;就是第一行和最后一行的元素以及第一列和最后一列的元素。输入&#xff1a; 输入共 m 1 行。 第一行包含两个整数 m, n (1 < m,n < 100) &#xff0c;分别为矩阵的…