大家应该都看过某些明星导致社交媒体平台宕机的新闻吧?明星事件带来的突发流量触发业务扩容,以前是扩容虚机,速度慢还情有可原,现在大部分互联网平台都使用容器了,为什么扩容速度有些时候还是跟不上流量增长的节奏呢?

这里主要有两个问题。

01

一是网口发放速度匹配容器扩容速度的问题。如果是即时按需创建容器,比如10秒内启动5000个容器实例,这要求10秒内完成端到端的网口创建、挂接和网络打通。

处理流程上,容器网络控制器需要调用VPC网络API批量创建5000个网口,VPC控制面生成相应的配置,下发到各个主机节点,主机按配置创建好全部网口再挂接到节点上,进而挂接到容器上,与此同时,分布在各个主机和各类网关的数据面转发表也要同步完成刷新。

传统的I层网络架构,无论是管控面还是数据面都存在瓶颈点,全流程网络打通的速度,无法匹配容器扩容速度。

02

再一个就是网口规模的问题,由于ENI原本是针对I层虚机或裸机的网卡扩展机制,数量受节点规格的限制,有的厂商是按照主机的flavor限定ENI的规格数量,某些厂商提供了固定的最大数量,比如8个,这些规格约束有商业成本的考虑,但根本原因还是规模目标不同。

容器为了榨干节点资源,支持0.1核甚至更小的容器,单节点理论上可部署近千容器实例,也就需要近千网口,这与现有VPC网络的管控面和数据面规模有数量级差距。

网络资源预热

让秒级扩容成为可能

如何应对发放速度不匹配问题?

计算机系统结构的经典答案:

加“Cache”层, 就是按预定策略在节点建立预分配ENI的warm pool,集群纳管节点时,自动创建并配置好若干个ENI放入pool中,在批量启动容器的时候只需要把已经ready的ENI从warm pool中取出挂接到容器即可。

网络资源预热能够有效弥补VPC 网络资源分配性能不能匹配容器生命周期的现状。加‘Cache’的机制能够支撑容器大批量创建删除场景。

Warm pool机制主要解决端到端网络打通时间长的问题。目前VPC网络单节点网卡是串行处理的,而且单个网络设备绑定时间也达到了30s-60s,不做预热的情况下容器网络端到端打通时间在一分钟以上。分钟级容器启动时间是不可接受的。

Warm pool机制在裸金属节点上预挂载一定数量ENI(用户可根据服务部署并发量自定义配置),容器随时调度到预热节点上都有即时可用的ENI网卡。经过warm pool的优化,容器网络端到端打通时间缩短为1s-2s。

华为云容器网络Yangtse的warm pool其实早在裸金属容器之前就已经在云容器实例CCI中得到了实践,是CCI能以30秒扩容1000容器的绝对优势领先业界的技术手段之一。

突破ENI数量限制

支持大规模容器扩容

上文中讲到了,单服务器ENI的规格上限,限制了容器的高密度部署和大规模快速扩容,在第二代裸金属容器中,我们把容器网络组件全部卸载到了华为云擎天卡上,突破了传统架构的约束,最大ENI数量提升数十倍,单服务器可部署的容器数量也相应提升。

同时,得益于擎天架构资源共池优势,裸金属容器还可以向虚拟机容器扩容,而在虚拟机容器上,容器网络Yangtse使用了Trunkport技术,结合ENI的优势,在保障性能的前提下,单台服务器理论上可为千容器同时提供直通网络能力。

ELB直通容器

应对海量冲击更平稳

解决了速度和规模的问题后,其实还存在一个隐藏的杀手,处理不好,可能使我们新扩容出来的容器全部命丧于此。

在传统的容器网络对接外部ELB方案中,外部流量会从ELB先到Kubernetes的Node Port(工作节点所在主机的端口),然后再转发给后端容器,增加的这一跳不仅带来了时延和故障几率,也影响了ELB使用时的灵活性。

当应用业务流量增长触发扩容时,如果ELB直接全量发放分摊的流量请求,海量请求会迅速压垮(overload)新扩的容器,造成扩容失败。

发生这种情况跟业务的处理逻辑或运行时行为相关:新扩容的后端实例需要一边处理请求一边加载热点数据到本地Cache,或者需要根据接收到的请求即时编译(JIT)和加载相应的代码模块,这都需要“慢启动”(slow-start)过程,即根据业务模型,自定义初始流量比例和阶梯递增速率,比如:15%的初始流量,每5秒增加10%。

但是,当ELB挂接宿主服务器(节点)的网络端口(Node Port)时,特别是一个节点上部署多个容器时,由于存在节点二次分发,ELB无法感知到最终的后端容器,进而无法做到容器级别的流控,也难以保证稳态后的负载均衡。

容器网络Yangtse实现了与华为云ELB v3独享型负载均衡实例的直通,独享型ELB v3资源独立,实例的性能不受其它实例的影响,而且流量从ELB直通至后端容器,保证转发性能和稳定性。

关于裸金属容器网络的揭秘,就到这里了。后续我们将围绕华为云云原生技术平台Vessel,逐一为您解读华为云容器的黑科技。

点击这里→了解更多精彩内容

无惧海量并发,运维准点下班全靠它相关推荐

  1. 无监控,不运维:解读企业全栈式监控运

    企业应用由单体应用系统向分布式系统的发展趋势已经不可逆转.十年前 "SOA" 大频率的出现在软件系统招标技术架构要求书中,相信用不了多久"微服务架构"也会被频繁 ...

  2. IoT物联网海量设备监控运维的挑战和实现方案

    随着大量物联网场景开始涌现,海量碎片化设备和巨量时序数据给物联网平台带来了一系列新的要求和新的技术挑战. 监控运维的技术挑战 灵活多变的监控需求 物联网平台监控场景面临的是上亿级别的海量设备,相比传统 ...

  3. 无监控、不运维。运维系统架构设计附带思维导图

    无监控.不运维 运维行业有句话:"无监控.不运维". 是的,一点也不夸张,监控俗称"第三只眼".没了监控,什么基础运维,业务运维都是"瞎子" ...

  4. 面对海量资产运维的行云管家应对之道

    随着互联网和云计算的发展及企业业务创新的需要,企业的IT资产越来越多,参与运维的岗位也越来越多样,当IT资产和运维团队达到一定规模时,对IT资产的日常管理和运维过程都会变得复杂且混乱.由此,海量资产的 ...

  5. GitHub 热榜:轻量级无 Agent 的自动化运维平台!

    大家好,我是 JackTian. 作为一名运维工程师,大家都知道.早在几年前,偏传统运维,以 cacti.nagios 为主流,到后来的 zabbix.Prometheus.Open-Falcon 等 ...

  6. mysql运维监控工具排名_最全的监控工具盘点|无监控,不运维!

    原标题:最全的监控工具盘点|无监控,不运维! 随着互联网行业的不断发展,各种监控工具多得不可胜数.这里列出网上最全的监控工具.让你可以拥有超过80种方式来管理你的机器.在本文中,我们主要包括以下方面: ...

  7. 工业互联网平台核心技术之七:运维技术-无监控,不运维

    运维管理是工业互联网平台使能技术之一,在平台中的地位极其重要.在工业互联网平台的运维管理中,我们经常听到关于运维的话题:"无监控,不运维". 随着云计算和互联网的高速发展,大量应用 ...

  8. 云网络运维必备神器:全链路故障诊断与分析

    摘要:华为云Stack全链路故障诊断与分析平台,以云网络中的逻辑网络.虚拟网络.物理网络作为网络故障分析诊断切入点,以三层网络路径拓扑为核心,端到端实现三层网络路径可视化. 本文分享自华为云社区< ...

  9. 轻松记海量Linux运维面试题

    技术内容: 提示:根据面试的企业.岗位不同,考察技术问题不一,万变不离其宗,掌握核心技术问题是关键!若您的非技术问题,不占优势,则必须要能讲好技术内容. 一.专项题 1.Tomcat 讲述一下Tomc ...

最新文章

  1. Django之模型层和ORM
  2. 栈的应用--进制转换
  3. git 子模块在项目中的使用
  4. 三维坐标 偏转_三维坐标变换原理-平移, 旋转, 缩放
  5. sql 可以多个分组吗_你知道吗?罗非鱼的品种多达100多个,不单是食用鱼也可以是观赏鱼...
  6. python 图像识别男女_python实现图像识别功能
  7. 机器学习中分类和聚类的区别
  8. Traitors Eight 硅谷“八叛徒”
  9. 电脑快捷键大全 Alt
  10. android msf 漏洞,MSF之ms各种漏洞
  11. Not a managed type
  12. Access安全吗?Access安全性之QA详解
  13. peewee的使用与异步peewee-async在tornado中的使用总结
  14. Java 11已经不再完全免费,不要陷入Oracle的Java 11陷阱
  15. MiniFilter文件系统学习
  16. linux教程for语句,Bash 中的 For 循环详解
  17. 联邦平均算法(Federated Averaging Algorithm,FedAvg)
  18. Centos 系统分区扩容操作指南
  19. 1K=1024 还是 1000
  20. 2019全国大学生信息安全大赛线下初体验 --体验黑客的儿童节

热门文章

  1. java 五个数字_关于java:五个任意整数找出其中第二大的数字
  2. linux系统怎么清理指定日期的文件,Linux系统删除指定时间段文件的方法(2)
  3. python数据挖掘与分析实战pdf_《Python数据分析与挖掘实战》PDF+完整源码
  4. 随便选一张扑克牌_教大家怎么快速记忆扑克牌?一学就会
  5. 回炉重造-数据结构之数组列表
  6. Ubuntu 16.04 更新源
  7. Python 第一章 基础知识
  8. 多拉A梦——日语歌词
  9. SQL中 Left Join 与 Right Join 与 Inner Join 与 Full Join的区别
  10. leetcode 1189 python