物理云主机是UCloud提供的专用物理服务器,具备出色的计算性能,满足核心应用场景对高性能及稳定性的需求,也能和其它产品灵活搭配。物理云网关用于承载物理云和公有云各产品间的内网通信,由于用户有多地部署的必要,网关集群面临跨地域跨集群的流量压力。

我们用多隧道流量打散等手段解决了Hash极化造成的流量过载问题,并通过容量管理和隔离区无损迁移限制大象流。新方案上线后,集群从承载几十G升级为可承载上百G流量,帮助达达等用户平稳度过双十一的流量高峰。以下是实践经验分享。

一、流量过载的物理云

为了保证云上业务的高可用性,用户通常会将业务部署在不同地域。此时用户的物理云便需要通过物理云网关相互访问,不可避免地,物理云网关会承载大量物理云主机的跨集群访问流量。

与此同时,为了保证不同用户之间网络流量的隔离和机房内部的任意互访,物理云网关会对用户报文封装隧道,然后发送至接收方。

1、问题出现:Hash极化与过载的物理云

如下图,我们发现物理云集群2中网关设备e的带宽过载,影响了访问集群2的所有业务。通过监控进一步查看到,集群2的流量分布很不均匀,集群中部分设备带宽被打爆,但是剩余的设备流量却很小。通过抓包分析,网关设备e的流量几乎全部来自于物理云集群1。

结合业务分析,确定物理云过载的原因在于:物理云集群1和集群2之间的互访流量出现了Hash极化,导致流量分布不均。

那什么是Hash极化呢?

由于集群之间使用单条隧道传输,隧道封装隐藏了用户的原始信息,例如IP、MAC等,对外只呈现隧道信息,同时隧道采用了唯一的SIP和DIP。那么Hash算法相同,算出的结果一致,导致流量无法做到很好的负载分担,便会使集群的单台设备负载突增,极端情况下就会出现被打爆的现象,进而影响该集群下的所有用户,这就是Hash极化,常出现于跨设备的多次Hash场景。

根据现状,我们分别尝试从以下两个角度解决该问题:

① 如果用户流量可以打散,如何避免封装隧道后的Hash极化?

② 如果用户流量无法打散,又该如何防止“大象流”打爆物理云网络?

下面,我们分别从这两点出发研究对应的解决方案。

2、如何避免封装隧道后的Hash极化?

针对这个问题,起初我们提出了多个解决方案:

方案1:用户流量由交换机轮询发送到集群每台设备。这种方法的优点在于流量可以充分打散,不会出现Hash极化现象。但同时缺点在于网络报文的时序被打乱,可能影响用户业务。

② 方案2:交换机基于隧道内层报文Hash。该方法基于用户的报文打散,优点在于可以较为均衡地打散在集群不同设备上。但问题在于用户报文封装隧道后会再次分片,将导致内层报文信息缺失和分片报文Hash到不同设备上。

③ 方案3:为集群每台设备分配单独的隧道源IP。该方法可以实现有效的流量打散,但由于隧道数量有限,Hash不均的问题在现网实际表现依旧明显。

以上三个方法均不同程度地存在缺点,不能完全解决Hash极化问题。通过一系列的研究,最终我们找到了一种多隧道解决方案。即打破网关的单隧道模式,所有的网关绑定一个网段的隧道IP,基于用户的内层报文信息Hash,并在预先分配的网段中选择隧道的SIP和DIP,保证不同流量尽可能分布在不同的隧道,从而将用户流量打散。

3、如何防止“大象流”打爆物理云网络?

多隧道方案的前提在于用户流量可以被打散,但是如果遇到“大象流”呢?即便是多个隧道也无法将避免被打爆的情况。面对用户的“大象流”,单靠技术手段还不够,我们同时也需要从硬件配置方面做好事前预防和规避。

■ 单机容量管理

首先需要对物理云网关进行合理的容量管理,保证网关可承载带宽高于用户物理云主机的带宽,同时保证整集群的承载能力满足用户需求。

这一点其实与云厂商自身的能力密切相关,目前UCloud网关集群单机的承受能力远远大于单个用户的流量,在承载多用户汇聚流量的情况下,仍能保证个别用户的突发“大象流”不会打爆网关。

■ 隔离区无损迁移

提升单机容量还远远不够,以防万一,UCloud还配备了隔离区,隔离区通常是无流量通过的。

如上图,一旦监测到流量过大,存在集群被打爆的风险时,集群配套的自动迁移系统便会修改需要迁移的物理机数据库信息,并自动更新对应转发规则,部分业务流量便可通过隔离区分担出去。同时我们还会基于强校验技术对迁移结果进行自动验证,保证迁移业务的无损可靠。

4、实例:新旧方案下的用户应用对比

在新方案上线前,由于Hash极化现象,集群通常只能承载几十G的流量,并且不时出现过载的状态。

新方案上线后,如下监控图,可以看到流量基本在集群上打散,集群的优势得到了充分发挥,目前集群可以承载上百G的流量,充分抵御用户业务量突增时的风险。例如达达在双十一时60G的流量压力是普遍现象,突发时还会出现流量达到100G的情况,此时集群流量依旧转发正常,对业务毫无影响。

除了提升性能,这次集群升级中对高可用设计也做了优化。

二、集群升级后的高可用性优化

针对集群升级,一般情况下会先部署新灰度集群,然后将用户业务逐步进行迁移。这样的好处在于可以在新集群版本存在缺陷的情况下,最大限度的控制影响范围,当出现故障时,可以及时回迁受影响的用户业务到老集群,避免用户业务受到影响。

在灰度过程中,曾发现一个问题。

在新集群Manager部署完毕后,由于配置错误导致灰度集群接管了旧集群,Manager基于配置文件的集群信息自动接管集群的控制,并直接下发配置信息,旧集群接受错误配置。由于旧集群和新集群配置差异较大,导致旧集群在解释新配置时有误,出现高可用异常。

1、风险分析

为了系统性避免这类问题,我们对配置过程进行了回溯分析,总结了存在的风险:

部署人为干预多,会加大故障概率;

程序的异常保护不够;

集群之间的有效隔离不足,若故障影响范围大。

2、优化:自动化运维&程序优化&隔离影响

■ 自动化运维

自动运维化通过自动化代替人工操作,可以有效避免人为错误的发生。我们对集群部署流程进行了优化,将其分为配置入库部署两个流程,运维人员只需录入必要的配置信息,其余均通过自动化生成部署。

■ 完善校验和告警

此外,我们还对部分程序作了优化,加大对异常配置的校验。例如,配置加载前,首先需进行白名单过滤,如果发现配置异常则终止配置加载,并进行告警通知后续人工介入。

■ 隔离影响

最后,不管自动化运维机制和程序自身多精密,总要假设异常的可能。在此前提下,还需要考虑在故障发生时如何最大程度地减少影响范围和影响时间。我们的解决思路如下:

去除公共依赖

前次问题主要缘于集群所有设备同时依赖了异常的Manager,导致一损俱损。因此需要去除集群设备中的公共依赖,缩减影响范围。例如不同的集群绑定不同Manager,这样可以有效控制影响范围。当然集群的公共依赖不仅仅可能出现在Manager,也可能是一个IP、一个机架等,这就需要我们在实际项目中仔细甄别。

设置隔离区在影响范围可控的情况下,一个Manager异常只会影响集群中的部分设备,在该情况下还应该迅速剔除异常设备或者直接迁移该集群下的所有用户到隔离区,争取最快时间排除故障。

总结

随着技术的发展和业务的扩张,系统架构越发复杂、关联度越发紧密,对技术人员的要求也越来越高。在物理云网关集群的开发过程中,不可避免会遇到很多“坑”,但是无论何时都需秉承一点:一切技术都是为了业务服务。为此,我们把方案设计的经验分享出来,希望能够给予大家更多思考与收获。

天翼网关 ddns设置_UCloud物理云网关百G级集群设计实践相关推荐

  1. UCloud物理云网关百G级集群设计实践

    物理云主机是UCloud提供的专用物理服务器,具备出色的计算性能,满足核心应用场景对高性能及稳定性的需求,也能和其它产品灵活搭配.物理云网关用于承载物理云和公有云各产品间的内网通信,由于用户有多地部署 ...

  2. 2021最新版-AWS亚马逊云RDS创建Aurora MySQL集群

    AWS亚马逊云RDS创建Aurora MySQL集群 文章目录 AWS亚马逊云RDS创建Aurora MySQL集群 1.进入AWS-RDS控制台创建数据库 2.选择你要创建的数据库 3.Amazon ...

  3. 阿里云环境下搭建HadoopHA集群

    阿里云环境下搭建HadoopHA集群 1. HadoopHA介绍 1.1 hadoop高可用集群的简介 ​ hadoop是一个海量数据存储和计算的平台,能够存储PB级以上的数据,并且利用MapRedu ...

  4. 华为云 和 阿里云 跨服务器搭建Hadoop集群

    目录 华为云 和 阿里云 跨服务器搭建Hadoop集群 说明 期间遇到的问题 CentOS6 7 8更换阿里yum源 修改服务器名称 安装JDK 安装Hadoop 编写集群分发脚本 xsync scp ...

  5. 阿里云ECS服务器部署HADOOP集群(三):ZooKeeper 完全分布式集群搭建

    本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建,多添加了一个 datanode 节点 . 1 节点环境介绍: 1.1 环境介绍: 服务器:三台阿里 ...

  6. 阿里云服务器(ECS)集群解决方案

    阿里云服务器(ECS)集群解决方案 参考文章: (1)阿里云服务器(ECS)集群解决方案 (2)https://www.cnblogs.com/568yscom/p/10769175.html 备忘一 ...

  7. 计算机怎么加网关命令,默认网关怎么设置,教您默认网关怎么设置

    什么是默认网关呢?小编我有一个十分通俗十分简单的说法.一般我们现在的电脑主机使用的网关就是默认网关.但是有的时候我们也是需要设置它的嘛~所以小编下面就来给你们说说如何设置默认网关. 我们现在在生活中这 ...

  8. docker 安装oracle_阿里云使用Docker搭建Hadoop集群

    摘要 吐血整理,搭建了两遍,亲测可用!!! 我买的是阿里云2C4G的服务器,使用的是CentOS 7.7版本.在搭建过程中踩了不少坑,本篇文章希望对大家有用 CentOS 7.7安装Docker 查看 ...

  9. [实战] 用数人云,部署弹性 ELK 集群就五步

    2019独角兽企业重金招聘Python工程师标准>>> 摘要:本篇文章介绍了如何通过数人云部署一套标准的 ELK 日志收集系统.第一步,将主机组织成集群:第二步,发布 Elastic ...

  10. [实战] 用数人云,部署弹性 ELK 集群就五步 1

    摘要:本篇文章介绍了如何通过数人云部署一套标准的 ELK 日志收集系统.第一步,将主机组织成集群:第二步,发布 ElasticSearch 实例:第三步,发布 Kibana 实例:第四步,发布 Log ...

最新文章

  1. c语言用随机数定义数组中,C语言 将发生的随机数存入数组,数据不能相同
  2. 20155339 Exp6 信息搜集与漏洞扫描
  3. php 二维数组字段合并,PHP将二维数组某一个字段相同的数组合并起来的方法,二维数组数组_PHP教程...
  4. Android自定义进度条
  5. SAP CRM产品主数据里的七种ID
  6. php图片左右滚动代码怎么写,css图片滚动代码怎么写?轮播图横向滚动展示
  7. linux 下载、安装 maven
  8. 关于成员变量和局部变量是否都会被默认初始化的问题
  9. 浅析阿里数据技术架构(下)大规模分布式知识图谱
  10. 最新最全linux系统调优指南(centos7.X)
  11. c51流水灯实验报告汇编语言,51单片机流水灯实验报告.doc
  12. 移动端车牌识别SDK集成免手工录入
  13. [渝粤教育] 西南科技大学 民事诉讼法学 在线考试复习资料(1)
  14. 软技能:程序员如何在职场上少走弯路
  15. python def函数调用_Python - def 函数
  16. 开源高手推荐十大最流行开源软件
  17. 2019的百度网盘下载速度太慢老是限速怎么解决?
  18. 王牌特工:黄金圈 经典例句
  19. java接口自动化监控_java接口自动化(三) - 手工接口测试到自动化框架设计之鸟枪换炮...
  20. 【基于动态内存+文件操作】通讯录管理系统

热门文章

  1. 西门子PLC程序调试方法
  2. 诺基亚培育低端机市场 迂回战术威胁中华酷联
  3. QQ 微信转链,如何实现淘宝京东苏宁唯品会拼多多,返利转链思路
  4. 使用 ngrok 进行内网穿透
  5. Atitit 艾提拉整理清明节的诗歌集合 清明节的特征 万物复苏 百草发芽 尝试从股市 其他外国诗歌集 得到清明的诗歌 约谈春天 歌颂春天 下雨 不见方三日、 夜来风雨声,花落知多少。(
  6. 「HEOI 2014」南园满地堆轻絮
  7. [转载] 达特茅斯学院 Dartmouth College
  8. python pkl、npy数据转换为csv
  9. c语言反步法编程,CCM模式下Boost电路的反步法非线性控制与仿真.pdf
  10. VMware ESXi 7.0 U2 SLIC Unlocker USB 网卡驱动集成镜像 202109 更新