写点什么

灰度发布在 UCloud 大规模虚拟网络中的应用

  • 2018-11-08
  • 本文字数:1386 字

    阅读完需:约 5 分钟

灰度发布在UCloud大规模虚拟网络中的应用

ServiceMesh 实现控制面灰度

在控制面,早期灰度发布采用 APIGW 的方式实现。APIGW 通常仅部署在用户流量的入口,完全灰度发布就需要完整地部署两套系统。但在微服务化的时代,任何一个微服务发生变更都需要完整地部署两套系统,这不仅成本高且严重影响产品变更速度。ServiceMesh 以类似于将 APIGateway 部署到本地,同时提供集中化控制的方式,完美地解决了这些问题。


UCloud 的轻量级 ServiceMesh 平台基于 Istio,继续使用 Envoy 代理,修改 Pilot 在保留完整的 DSL 支持的基础上实现了脱离 K8S 运行。


因此网络团队对 Pilot 做了高度订制,从而更能满足自身的需求。



  • 订制方案一:按账号灰度。在 GRPC 或者 HTTP 请求中添加⾃自定义 Header x-ucloud-routeby,x-ucloud-routeby 采用 Cookie 的编码格式,在其中包含账户信息,配置 Envoy 根据该 Header 进行策略路由。

  • 订制方案二:采用显式代理而不是 IPTables 透明引流的方式和 Envoy 集成,支持 HTTP 1.0、HTTP 2.0 和 gRPC。在配置了 Envoy 的 Proxy Port 情况下,通过 Envoy 接入 ServiceMesh;如果配置域名且没有配置 Envoy 的 Proxy,则自动采用 ETCD gRPC naming and discovery 的方式; 如果配置 IP 地址和端口,则直连指定地址;



  • 订制方案三:采用 docker-compose 管理 container 实现 sidecar。新方案中仍然采用 container 的方式打包和部署微服务,但采用 Host 的网络方式简化了现存服务的网络通信方式。通过采用 docker-compose 管理 container 实现 sidecar,实现了一个简单的服务管理、版本管理、集群管理、路由策略管理层,为集群中的每台 Node(VM 或物理服务器)生成 docker-compose 配置文件,从而部署和管理每台 Node 的服务。

可编程交换机实现转发面灰度

在转发面灰度的方案选择上,团队采用了可编程交换机(基于 Barefoot Tofino 芯片)来实现灰度网关,替换普通交换机实现强灰度能力。


灰度网关最大提供 64 个 100G 的接口提供 6.4T 带宽,PPS 性能可达 4400 兆,延迟为 us 级别,能够很好支持网络宽带的高性能要求。灰度网关可以提供:一致性哈希 ECMP 的能力;可以基于任意定制字段(包括内层虚拟网络地址以及租户 ID)计算哈希;在计算哈希前优先应用灰度规则,可以根据任意字段定制灰度规则,最小粒度可以做到按 TCP 流来灰度。


转发面灰度示例

有了上述这些新工具,可以通过部署新的策略实现更加细粒的灰度发布,具体方案为:可编程交换机 BGP 宣告集群 VIP 引流,根据选择字段计算一致性哈希后将流量量分发给后端服务器,并按照选择字段(VNI、源地址、目的地址)配置灰度规则。


灰度步骤如下:


  • 按 VM 的粒度将流量量切换到灰度后端服务器;

  • 切换完成后立刻自动回归测试,根据路由表自动生成监测地址列表,并 Ping 检测网络互通性;

  • 测试通过则逐步增加灰度的 VM 地址;

  • 直到整个 VPC 的流量量全部切换到灰度后端服务器;

  • 再切换一个新的 VPC,直到所有分片内的 VPC 都切换到新的灰度后端服务器;

  • 完成灰度发布。


以上内容首次发表于 UCloud Tech Talk 活动,第二期将于 11 月 16 日在上海举办,报名以及更多信息请访问:https://www.bagevent.com/event/2007613


作者简介


徐亮,现任 UCloud 虚拟网络平台部负责人,公司首位 5 级技术专家。曾任职于上海贝尔、腾讯,有十几年电信与互联网行业研发管理经验。加入 UCloud 后主要负责包括可用区、VPC 在内的云平台虚拟网络架构工作,设计、开发过多个虚拟网络 DPDK 网关。



2018-11-08 14:111877

评论

发布
暂无评论
发现更多内容

devops工具链基建建设评价标准

laofo

DevOps cicd 研发效能 持续交付 工程效率

小程序SDK集成到App有哪些好处?

没有用户名丶

一文弄懂访问者模式

小小怪下士

Java 程序员 设计模式

Java变量与数据类型

timerring

Java 后端

一文吃透泛型

程序员大彬

Java java面试

物流路由线路配载前端算法逻辑实现方案

京东科技开发者

前端 京东云 京东物流 企业号 4 月 PK 榜

从内核源码看 slab 内存池的创建初始化流程

bin的技术小屋

操作系统 内存管理 Linux Kenel 内核 动态内存池

WWDC 2023会有哪些内容?WWDC 2023抢先看

Rose

WWDC 2023 Apple发布会

前端代码安全与混淆

京东科技开发者

安全 京东云 企业号 4 月 PK 榜

一文读懂 Nautilus Chain 上首个 DEX PoseiSwap 的通证经济

西柚子

Seal AppManager发布:基于平台工程理念的全新应用部署管理体验

SEAL安全

应用部署 企业号 4 月 PK 榜 Seal软件 SealAppManager

实力爆表,日日新成为AI领航者

柒号华仔

人工智能 AIGC 日日新 商汤

带你揭开神秘的Javascript AST面纱之Babel AST 四件套的使用方法

京东科技开发者

JavaScript AST 京东云 企业号 4 月 PK 榜

Mac上免费好用的PDF编辑器:Acrobat Reader DC2023

Rose

苹果软件 mac软件下载 pdf阅读 Adobe Acrobat Reader DC

全能网页视频下载工具Downie使用教程

Rose

downie 4 Mac 视频下载工具 Downie使用教程 如何下载网页视频

有限资源下如何实现最高效的数据处理?四个“智慧城市”项目寻找“最优解”

TDengine

tdengine 物联网 时序数据库 智慧城市 数据优化

园林绿化设计工具:GardenPlanner Mac版

真大的脸盆

Mac Mac 软件 Mac 系统 园林设计工具 绿化设计

iOS16新特性 | 灵动岛适配开发与到家业务场景结合的探索实践

京东科技开发者

ios 京东云 灵动岛 企业号 4 月 PK 榜

历史性的时刻!OpenTiny 跨端、跨框架组件库正式升级 TypeScript,10 万行代码重获新生!

华为云开源

typescript Vue 组件库

解决事务隔离产生问题的MVCC

Java你猿哥

Java ssm 架构师 MVCC

数据库原理及MySQL应用 | 并发控制

TiAmo

MySQL 数据库 并发控制

关于mac虚拟机Parallels Desktop 常见问题解答

Rose

pd 18 Parallels Desktop 虚拟机 PD常见问题 Mac虚拟机

万字详解 | Java 函数式编程

Phoenix

Lambda 函数式 #java

活动 | GreatSQL社区亮相2023 DTC 分享开源技术成果实践

GreatSQL

对标大厂的技术派方案设计,带你了解一个项目从0到1实现的全过程

Java全栈架构师

数据库 微服务 程序人生 后端 架构师

玖章算术CEO叶正盛在数据技术嘉年华分享NineData AIGC的应用实践

NineData

数据库 数据管理 AIGC 玖章算术 NineData

MyBatis整合Springboot多数据源实现

Java你猿哥

spring Spring Boot mybatis ssm 数据源

Flink CDC 在京东的探索与实践

Apache Flink

大数据 flink 实时计算

GardenPlanner :花园式和景观设计工具

Rose

Garden Planner 景观设计工具 GardenPlanner注册版 花园设计

得帆云DeFusion融合集成iPaaS平台领先行业,打造先锋集成产品

得帆信息

打破信息孤岛 数据集成 集成平台 数据集成平台 ipaas

灰度发布在UCloud大规模虚拟网络中的应用_软件工程_徐亮_InfoQ精选文章