徐亮-灰度发布在UCloud虚拟网络中的应用

徐亮-灰度发布在UCloud虚拟网络中的应用
展开查看详情

1. 灰度发布 在UCloud虚拟网络中的应用 徐亮 UCloud 虚拟网络架构师

2.

3.

4. CONTENT 01/ 为何采用 灰度发布? 02/ 如何实现控制面 灰度发布? 03/ 如何实现转发面 灰度发布? 04/ 总结

5.01 为何采用灰度发布?

6.痛点:如何保证质量并拥抱变化? 软件设计的公理和定理 1. 软件的目的是帮助他人 2. 相比降低开发成本,更重要的是降低维护成本 3. 变化定律:软件存在的时间越久,它的某部分需要变化的可能性越大 4. 缺陷定律:软件出现缺陷的可能性,正比于你对它所做修改的程度 5. 简洁定律:软件任一部分的维护难度,这正比于该部分的复杂程度 6. 测试定律:你对软件行为的了解程度,等于你真正测试它的程度 - Max Kanat-Alexander

7.灰度发布 什么是灰度发布? •有所控制地选择发布的人群及其比例 什么时候需要灰度发布? •任何时候

8.灰度发布示例 定义目标:降低VPC2.0流表发布风险

9.灰度发布示例 选定灰度策略 • 首先按地域,从用户较少地域(海外)到用户多地域(北京二) • 其次内部客户一个一个灰度 • 然后按普通用户按账号ID尾号划分100份,一批一批灰度 • 最后大客户一个一个灰度

10.灰度发布示例 筛选用户:产品经理制定灰度名单

11.灰度发布示例 灰度发布上线:灰度发布新版本

12.灰度发布示例 测试:自动运行测试,根据测试结果确定是否继续灰度或回滚

13. 如何实现虚拟网络控制面 02 灰度发布?

14.控制面灰度发布:APIGW 早期采用APIGW实现虚拟网络控制面灰度发布

15.控制面灰度发布:APIGW 微服务化带来的极大挑战 • 每个微服务升级都需要部署完整的虚拟网络控制面 • 服务A在灰度,服务B不能灰度,导致灰度积压 • 服务A和B一起灰度,增加灰度风险

16.控制面灰度发布:微服务+ServiceMesh

17.Istio 转发面 控制面 • Envoy,Sidecar部署七层代理 •Pilot,转发控制 •Mixer,访问控制、策略控制、监控数据 •Istio-Auth,安全控制

18.Envoy性能测试 2017年09月30日,测试Envoy 1.4 4台2C4G的VM,C -> Envoy -> S1、S2

19. Pilot Route Rules • Qualify rules by destination • Qualify rules by source/headers • Split traffic between service versions • Timeouts and retries • Injecting faults in the request path • Rules have precedence

20. UCloud对Pilot的订制 • 实现ETCD Platform,从ETCD获取Service和 ServiceInstance信息 • 支持ETCD gRPC naming and discovery D • 从Istio剥离,保留完整的DSL支持 C T E • 完全脱离K8S运行和编译 • 采用显式代理而不是IPTables透明引流

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

22.Pilot订制:显式代理 • 支持:HTTP 1.0、HTTP 2.0和gRPC • 如果配置了Envoy的Proxy Port,则通过Envoy接入ServiceMesh; • 如果配置域名且没有配置Envoy的Proxy,则自动采用ETCD gRPC naming and discovery的方式; • 如果配置IP地址和端口,则直连这个地址;

23.Pilot订制:Sidecar •Istio支持在POD内注入pilot proxy实现Sidecar •保留container的方式打包和部署微服务; •但采用Host的网络方式,简化了和现存服务的网络通信方式; •采用docker-compose模拟k8s的POD,管理服务间的依赖; •自动生成docker-compose配置文件,实现每台Node的服务部署和管 理 •标注为sidecar的服务自动添加到每一台Node上;

24. 如何实现虚拟网络转发面 03 灰度发布?

25.转发面灰度发布的性能挑战 随着网卡从1G升级到10G、25G甚至100G,转发面所需的性能越来越高 转发面已经采用DPDK开发,灰度分流器需要更高的转发性能

26.转发面灰度发布的粒度挑战 通常采用交换机ECMP的方式组成DPDK集群 无法精细控制交换机ECMP的调度算法 通常只能逐台设备升级,无法按用户粒度进行灰度发布

27. 转发面灰度发布:灰度网关 可编程交换机替换普通交换机 • 一致性哈希ECMP • 可以任意定制计算哈希的字段,包括内层虚拟网络地址 以及租户ID • 在计算哈希前,根据任意字段定制灰度规则,最小粒度 一个TCP流

28. 转发面灰度发布:可编程交换机 高性能 • 单线100G,最大64口,提供6.4T带宽 • 4400M PPS • us级别时延

29. 转发面灰度发布:可编程交换机 开放性 • 操作系统:Linux • 采用P4lang定制转发面Pipeline • 根据业务自定义表大小 • 通过gRPC接口动态配置表项 • 50ms动态配置Pipeline