You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为同网络下不同分组的Docker容器设置差异化人工网络延迟

可行解决方案

方案1:单公共网络+tc基于IP地址的精准流量控制(推荐)

该方案无需配置多网卡,所有容器仅使用同一个IP对外暴露,完全解决服务IP共享的冲突问题:

  • 提前创建固定网段的Docker公共网络,为4个容器分配固定IP,示例规划:Group1的C1为172.18.0.2、C2为172.18.0.3,Group2的C3为172.18.0.4、C4为172.18.0.5。
  • 在宿主机上查询该Docker网络对应的网桥名称,可执行命令docker network inspect 你的公共网络名 | grep Bridge获取。
  • 先为网桥配置默认跨组延迟规则,将所有流量默认设置为10ms延迟:
    tc qdisc add dev 网桥名 root handle 1: htb default 10
    tc class add dev 网桥名 parent 1: classid 1:10 htb rate 1000mbit netem delay 10ms
    
  • 再配置同组流量的低延迟规则,单独给同组互访的流量分配2ms延迟队列:
    # 创建低延迟队列
    tc class add dev 网桥名 parent 1: classid 1:20 htb rate 1000mbit netem delay 2ms
    # 配置Group1同组互访的过滤规则
    tc filter add dev 网桥名 parent 1: protocol ip u32 match ip src 172.18.0.2 match ip dst 172.18.0.3 flowid 1:20
    tc filter add dev 网桥名 parent 1: protocol ip u32 match ip src 172.18.0.3 match ip dst 172.18.0.2 flowid 1:20
    # 同理配置Group2同组互访的过滤规则即可
    
  • 验证时直接进入容器执行ping命令测试,同组延迟约2ms、跨组延迟约10ms,完全符合要求。

方案2:保留原有多网卡架构+路由规则适配

如果要保留你现有双网卡的部署结构,可通过调整容器路由实现IP共享兼容:

  • 所有服务统一对外宣告eth0的公共网段IP,无需修改服务配置逻辑。
  • 进入每个容器配置路由/DNAT规则,当请求目标是同组容器的公共IP时,自动将流量转发到对方的eth1组内网IP,这样同组流量走eth1链路(总延迟1ms+1ms=2ms),跨组流量默认走eth0链路(总延迟5ms+5ms=10ms),满足延迟要求。

内容的提问来源于stack exchange,提问作者Aditya Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 05:24:01