阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

爱奇艺 CDN IPv6 调度系统实践

爱奇艺技术产品团队

  • 2019-08-26
  • 本文字数:4584 字

    阅读完需:约 15 分钟

爱奇艺CDN IPv6调度系统实践

IPv6 是“Internet Protocol Version 6”(互联网协议第 6 版)的缩写,是互联网工程任务组(IETF)设计的用于替代 IPv4 的下一代 IP 协议。IPv4 地址资源紧缺严重制约了互联网的应用和发展。IPv6 不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍。


2017 年底,中共中央办公厅和国务院办公厅印发了《推进互联网协议第六版(IPv6)规模部署行动计划》,要求加快推进基于 IPv6 的下一代互联网规模部署工作。计划指出,到 2018 年末国内 IPv6 活跃用户数要达到 2 亿,2020 年末达到 5 亿,2025 年末中国 IPv6 规模要达到世界第一。


新互联网时代科技进步与市场趋势的推动之下,爱奇艺积极响应并全力开展 IPv6 专项部署工作,推动基础网络、后台服务和前端应用全面向 IPv4/IPv6 双栈支持演进,并以实际的用户数和流量贡献,于 2019 年 6 月被 IPv6 规模部署专家委员会评为优秀案例。


爱奇艺调度系统(包括 Anycast DNS 调度和 HTTP 视频调度)作为爱奇艺 CDN 核心系统之一,在爱奇艺技术团队的努力下,已经全面具备 IPv6 服务能力,支持各项业务高效对接 IPv6 基础资源,加快了爱奇艺 IPv6 规模部署进程。

调度系统设计

系统架构

爱奇艺 CDN 调度系统全流程架构如下图所示。



以下是架构图中各个系统的角色介绍:


客户端:爱奇艺提供的播放客户端,覆盖手机、平板、电脑、电视和网页等多个平台,客户端首先访问 DNS 解析 HTTP 视频调度域名,然后请求 HTTP 视频调度获取 CDN 下载地址,最后从 CDN 下载视频数据;


探测服务器:一组开启双栈的 HTTP 服务器,为全网客户端提供探测服务,帮助客户端判断本地 IPv4 和 IPv6 可用情况;


Local DNS:客户端使用的 DNS 服务器地址,由用户所在运营商提供;客户端向 Local DNS 发起域名解析请求,Local DNS 递归查询到爱奇艺 Anycast DNS,最后把结果返回给客户端;


Anycast DNS:爱奇艺自研的高性能 DNS 系统,单机 QPS 可达近百万,基于 Anycast 技术部署,为全球用户提供高可用的 DNS 服务,支持 IPv6 后可提供 IPv6 AAAA 记录查询解析;


HTTP 视频调度:CDN 核心系统之一,根据客户端请求来源地址归属运营商和区域,为用户选择服务质量最优的 CDN,确保用户享受极致播放体验;


爱奇艺混合 CDN:包括自建 CDN 和商业 CDN,为爱奇艺数亿用户提供就近下载服务;


资源管理平台(天工):资源统一管理平台,实现从资源需求收集、商务拓展、资源采购、资源部署、资源管理、基础运维和成本计算的统一管理,旨在打造以流程管理为基础的自动化运维平台;


调度管理平台(伏羲):调度管理平台,管理 DNS 调度和 HTTP 视频调度各种配置和策略。调度管理平台从资源管理平台中自动同步机房和服务器基础信息,借助配置管理平台实现配置的快速下发和生效;同时支持通过域名和 IP 维度进行拨测,实时探测全网服务器健康状态,自动下线故障服务器;


配置管理平台(Fast):作为 CDN 服务器的管理平台,联动资源管理平台和调度管理平台等多个系统,同步资产和服务等基础信息。利用部署在多个运营商+区域的 Proxy 集群,保证全网 CDN 节点的连通率,提供稳定可靠的配置管理服务。


SDN 管理平台:网络配置管理平台,实现基于模板支持自定义业务场景的网设配置功能,支持批量下发自定义业务场景配置,支持 netconf、ssh 和 snmp 多种管理方式。通过生成配置架构及网元全量配置,实现核心 IDC 建设自动化建设。

系统设计

爱奇艺技术团队对客户端、调度和后台管理等多个系统做了大量设计工作来支持 IPv6。


下面简要说明各个系统模块针对 IPv6 功能的设计工作:


客户端:爱奇艺提供了包括手机、平板、电脑、电视和网页等多种播放客户端,覆盖数亿用户。目前绝大多数客户端都已经支持 IPv6。当客户端启动以及检测到网络变化时,访问爱奇艺 IPv6 探测服务器,分别通过 IPv4/IPv6 发出 HTTP 请求,以此判断本地 IPv4/IPv6 网络连通性;在支持 IPv6 的前提下,客户端优先解析视频调度的 IPv6 地址;客户端在通过 IPv4 或 IPv6 请求调度器时,携带 Net-Stack header,告知视频调度器本地协议栈支持情况;


Anycast DNS:开启双栈,支持通过 IPv4/IPv6 DNS 查询 A 记录和 AAAA 记录。同时提供永远在线的 IPv4&IPv6 权威 DNS 服务;


HTTP 视频调度:开启双栈,支持通过 IPv6 地址查询客户端归属运营商和区域;根据用户请求头中的 Net-Stack 参数以及来源 IP 地址,判断客户端 IPv4/IPv6 支持情况,结合调度策略开关和 IPv6 资源负载,为用户返回 IPv4 或 IPv6 下载地址。对于仅支持 IPv6 的客户端,返回 IPv6 下载地址;对于支持双栈的客户端,会在 IPv6 资源允许的情况下,返回 IPv6 下载地址;对于部分支持双栈的客户端,当 IPv6 资源紧张的情况下,返回 IPv4 下载地址;对于仅支持 IPv4 的客户端,返回 IPv4 下载地址;流程如下图:



HTTP 请求头 Net-Stack 取值示意含义如下:


= X:标识客户端仅支持 IPv4;


= Y:标识客户端仅支持 IPv6;


= Z:标识客户端支持双栈;


爱奇艺混合 CDN: 包括爱奇艺自建 CDN 和商业 CDN,都需要开启双栈,同时支持 IPv4 和 IPv6,结合调度管理平台,可支持部分节点和部分商业 CDN 支持 IPv6 的资源模式,可保证资源可以灰度平滑上线;


资源管理平台:为了支持 IPv6,资源管理平台实现了 IPv6 地址段管理闭环,其中包括:基于 IDC 的 IPv6 地址段录入、自动分配、拨测和回收等功能,为了完成全网 IPv6 地址的分配,开发了基于命令行的自动化分配工具,结合配置管理平台完成了全网存量的 IPv6 的配置。在服务器上线(装机子流程)流程根据 IDC IPv6 的状态,可以自动分配 IPv6 地址。


调度管理平台:从资源管理平台自动同步服务器 IPv6 配置,增加 DNS 调度和 HTTP 视频调度 IPv6 地址库,拨测系统兼容 IPv6;基于区域和机房两个维度的增加 IPv6 开关,精细控制 IPv6 上线节奏,在保障用户体验的同时,逐步增加 IPv6 流量占比;


配置管理平台:各个 CDN 节点接收到 IPv6 配置任务后,使用自己的资产和服务信息对任务模板进行二次渲染,得到最终的配置命令并执行,执行完毕后上报修改状态;


SDN 管理平台:全面支持 IPv6,通过生成配置架构及网元全量配置,实现一键完成核心机房 IPv6 相关配置,有效提升 IPv6 机房资源交付效率。

网络资源准备

为保障各业务上线 IPv6 的基础网络资源需求,数据中心和网络的双栈改造是最早启动的工作环节,在 2018 年底基本完成了数据中心和网络能力的 IPv6 工作。


下面是关键基础网络能力准备情况:


数据中心 IPv6 就绪:爱奇艺的数据中心包括 Core、Storage 和 Cache 三类,目前已经完成所有自建机房的 IPv6 地址申请、部署、分配和注册备案工作,确保 IPv6 网络出口安全可用,全面支持业务双栈上线。


网络能力 IPv6 就绪:爱奇艺自有全球骨干网 QNET 完成 IPv6 升级工作,实现三大运营商和教育网等多家基础电信服务商的 IPv6 对接,并对基于 QNET 的 Anycast 系统进行 IPv6 升级,为 DNS 核心业务提供高可用的 IPv6 服务;


IPv6 网络质量监控:流量监控和网络监控系统完成双栈升级,对比分析 IPv6 和 IPv4 网络质量差异和不同区域 IPv6 网络质量差异,指导和保障 IPv6 业务上线。

IPv6 节点改造

IPv6 节点改造关键是机房基础设施和服务的改造,其中涉及到 CDN 节点和核心的平台。


下面简要介绍一下节点 IPv6 改造的流程:


(1) 通过资源管理平台管理节点的 IPv6 地址段,并为节点的每个服务器和网络设备自动生成 IPv6 地址;


(2) SDN 管理平台从资源管理平台获取节点中网络设备的 IPv6 信息,通过生成配置架构及网元全量配置,实现一键完成核心机房 IPv6 相关配置下发与生效;


(3) 在配置管理平台中创建任务模板,自动下发 IPv6 配置和软件配置到服务器,服务器重启网络,软件配置平滑升级,服务支持 IPv6;


(4) 服务支持 IPv6 后,向调度管理平台注册告知自己具备 IPv6 服务能力;


(5) 调度管理平台自动调整调度策略,在区域开启 IPv6 的情况下,自动切入 IPv6 流量;


整体流程图如下:



借助于爱奇艺 CDN 完善的支撑平台,无论在硬件资源准备,还是服务软件管理,针对 IPv6 的支持已经完全自动化,尤其体现在基础网络设备配置、操作系统支持、IPv6 资源管理、服务 IPv6 支持、服务注册和自动调度等方面均已实现自动化管理并上线。

客户端调度流程

下面是 IPv4 和双栈客户端访问 DNS、视频调度和视频 CDN 的时序图,从图中可以看到爱奇艺 DNS、HTTP 视频调度服务和视频服务均已支持 IPv6,可以根据客户端不同的请求方式返回 IPv4 或者 IPv6 的资源。


平滑上线

上一部分详细介绍了整个 IPv6 业务调度架构和流程,本部分介绍系统上线的关键步骤,其中包括操作系统和软件层面的 IPv6 配置支持以及如何在调度管理平台进行平滑切量上线。

系统配置

系统层面配置包括内核调整和系统 IPv6 配置启用,IPv6 启用方法如下:


(1) grub 配置开启 IPv6


删除/etc/default/grub 配置文件中“ipv6.disable=1”配置


(2) 重新生成 grub ,配置


使用命令 grub2-mkconfig --output /boot/grub2/grub.cfg 生成新的 grub 配置文件


(3) IPv6 全局开关配置


新增/etc/sysconfig/network 配置文件中“NETWORKING_IPV6=yes”配置


(4) 配置网卡 IPv6 地址


更新配置文件/etc/sysconfig/network-scripts/ifcfg-ethx,增加如下选项:


IPV6INIT="yes"IPV6ADDR="分配的IPv6地址"IPV6_DEFAULTGW="分配的IPv6网关"
复制代码


(5) IPv6 地址生效


在 CentOS 7 系统中,需要重启系统,IPv6 地址配置才能 100%确保生效,CentOS 6 系统只需要执行 service network restart 即可生效。


(6) 测试网络连通性


通过 ping6 命令,可以测试 IPv6 地址与外部 IPv6 网络连通性。


以上工作已经开发出完善的命令行工具,实现自动获取分配 IPv6 信息并配置的功能。


系统初始化还需要调整以下内核参数:



以上针对系统内核参数、网络配置和 IP 地址自动分配相关的运维工作,我们使用自研的配置管理平台,已经实现自动化任务模板。针对存量设备,自动从资源管理平台获取 IP 地址,自动配置;针对新设备,装机流程中自动会分配 IPv6 地址,自动调整相关系统配置。

服务软件配置

(1) 调度器和视频 Cache 服务器开启 IPv6 端口监听


调度器和视频 Cache 是基于 Nginx 开发的,线上环境在 server{}模块增加 IPv6 监听配置示例如下:



server{listen [::]:80 backlog=8192;}
复制代码


(2) DNS 服务器开启 IPv6 端口监听


爱奇艺自研 DNS 是基于开源的 acl[1]框架,为了支持 IPv6,acl 框架在基础模块和配置方面都做了很多优化,开启 IPv6 相关的配置如下:


service hpdns{master_disable = no;master_service = |53 # 监听所有网络地址的53端口}
复制代码

业务切量

通过爱奇艺调度管理平台,可以灵活的对 IPv6 流量进行调整控制,对于管理的视频 IDC 节点,设置开启 IDC 的 IPv6 服务支持选项,即可在 IDC 节点层面打开视频服务的 IPv6 访问支持:



调度管理平台支持按照用户区域和运营商配置 IPv6 的开启:



实际的推进过程中,也是通过对用户区域和调度资源(IDC)两个维度进行配置实现灰度切量的,确保不影响用户体验并对用户无感知。

总结和展望

经过一年多的努力,爱奇艺调度系统已经全面具备 IPv6 服务能力,正在按照区域和运营商,逐步增加 IPv6 用户覆盖。截至 2019 年 6 月底,爱奇艺 IPv6 月活用户达到上亿级别,峰值带宽达到数百 G。


未来,我们仍将继续推进 IPv6 部署,稳步增加 IPv6 带宽占比,充分利用 IPv6 技术优势,为用户带来更好的播放体验。同时,推进 IPv6 网络部署和系统架构改造,进一步提升用户体验和降低成本。


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2019-08-26 15:345888

评论

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

HarmonyOS开发者创新大赛总决赛结果公布

HarmonyOS开发者

HarmonyOS

应用日志采集是什么意思?批量采集应用日志软件用哪个?怎么操作?

行云管家

日志采集 IT运维 行云管家 应用日志

了解“预训练-微调”,看这一篇就够了

博文视点Broadview

C/CPP基础练习题(一)运算符,判断

CtrlX

c c++ C# 8月月更

OceanBase 亮相2022全国CIO大会,荣获“2022年度CIO信赖品牌”

OceanBase 数据库

去中心化交易所swap系统开发功能以及逻辑分析

开发微hkkf5566

阿里云计算巢软件免费试用中心正式上线,企业用户可免费试用1个月

阿里云弹性计算

计算巢

设备健康管理“悬丝诊脉”之能源行业浆液循环泵

PreMaint

设备健康管理 设备预测性维护 设备状态监测

视频结构化——原子能力解析

夏夜许游

物体检测 车牌识别 视频结构化 人体检测

动态线程池的9个应用场景你见过几个?

程序员小毕

Java 程序员 面试 程序人生 线程池

数字化转型新CP:云原生+边缘计算 实践分享

York

容器 云原生 数字化转型 边缘计算 边云协同

详解GaussDB(DWS) 资源监控

华为云开发者联盟

数据库 后端

Bytebase 部署体验总结 & 评选结果

Bytebase

数据库 体验官

渗透攻防Web篇-深入浅出SQL注入

京东科技开发者

sql 安全 mybatis Web H5

企业数据现状分析:为什么需要实时数据?如何高效挖掘实时数据价值?

tapdata

Tapdata

运维审计是什么意思?有什么作用?用什么软件好?

行云管家

运维 审计 IT运维 运维审计

什么是“根创新”?从公交支付用上国产数据库说起

OceanBase 数据库

流程挖掘的价值:头部制造业千万级增长的底牌

望繁信科技

阿里云视觉智能开放平台产品上新——能力前瞻

夏夜许游

人工智能 阿里云 元宇宙 图像分割 阿里云视觉智能开放平台

活动报名:Tapdata 开源教程之异构数据库模型推演

tapdata

Tapdata 开源社区

零基础学员如何参加大数据培训?

小谷哥

java学习过程中要注意哪些方面?

小谷哥

🔛报名启动!「数智创新行」系列城市站沙龙首站开启

云桌派

转转客户端持续交付—鲁班的构建管理

转转技术团队

CI/CD

参加java培训和自学技术有什么区别

小谷哥

我吐了!一个奇葩的线上问题,导致我排查了一天

Java永远的神

Java 程序员 面试 程序人生 后端

大数据培训可以成为优秀工程师吗?

小谷哥

前端开发技术培训班靠谱吗

小谷哥

TCP异常场景:三次握手四次挥手丢包情况解析

Java全栈架构师

程序员 面试 TCP 计算机网络 秋招

最长字符串链,什么是“词链”?

掘金安东尼

算法 前端 8月月更

优秀的程序员不能只懂技术

LigaAI

程序人生 敏捷开发 自我提升 职场发展 企业号九月金秋榜

爱奇艺CDN IPv6调度系统实践_语言 & 开发_InfoQ精选文章