網絡

干貨丨愛奇藝CDN IPv6系統配置

廣告
廣告

微信掃一掃,分享到朋友圈

干貨丨愛奇藝CDN IPv6系統配置
0 0

1. 背景  

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規模部署進程。 2. 調度系統設計2.1 系統架構愛奇藝CDN調度系統全流程架構如下圖所示。

圖2-1 IPv4/IPv6調度架構圖以下是架構圖中各個系統的角色介紹:

  • 客戶端:愛奇藝提供的播放客戶端,覆蓋手機、平板、電腦、電視和網頁等多個平臺,客戶端首先訪問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建設自動化建設。

2.2 系統設計愛奇藝技術團隊對客戶端、調度和后臺管理等多個系統做了大量設計工作來支持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下載地址;流程如下圖:

圖2-2 IPv4/IPv6調度流程圖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機房資源交付效率;

2.3 網絡資源準備為保障各業務上線IPv6的基礎網絡資源需求,數據中心和網絡的雙棧改造是最早啟動的工作環節,在2018年底基本完成了數據中心和網絡能力的IPv6工作。下面是關鍵基礎網絡能力準備情況

  • 數據中心IPv6就緒:愛奇藝的數據中心包括Core、Storage和Cache三類,目前已經完成所有自建機房的IPv6地址申請、部署、分配和注冊備案工作,確保IPv6網絡出口安全可用,全面支持業務雙棧上線。
  • 網絡能力IPv6就緒:愛奇藝自有全球骨干網QNET完成IPv6升級工作,實現三大運營商和教育網等多家基礎電信服務商的IPv6對接,并對基于QNET的Anycast系統進行IPv6升級,為DNS核心業務提供高可用的IPv6服務;
  • IPv6網絡質量監控:流量監控和網絡監控系統完成雙棧升級,對比分析IPv6和IPv4網絡質量差異和不同區域IPv6網絡質量差異,指導和保障IPv6業務上線。

2.4 IPv6節點改造IPv6節點改造關鍵是機房基礎設施和服務的改造,其中涉及到CDN節點和核心的平臺。下面簡要介紹一下節點IPv6改造的流程:(1) 通過資源管理平臺管理節點的IPv6地址段,并為節點的每個服務器和網絡設備自動生成IPv6地址;(2) SDN管理平臺從資源管理平臺獲取節點中網絡設備的IPv6信息,通過生成配置架構及網元全量配置,實現一鍵完成核心機房IPv6相關配置下發與生效;(3) 在配置管理平臺中創建任務模板,自動下發IPv6配置和軟件配置到服務器,服務器重啟網絡,軟件配置平滑升級,服務支持IPv6;(4) 服務支持IPv6后,向調度管理平臺注冊告知自己具備IPv6服務能力;(5) 調度管理平臺自動調整調度策略,在區域開啟IPv6的情況下,自動切入IPv6流量;整體流程圖如下:

圖2-3 節點改造流程借助于愛奇藝CDN完善的支撐平臺,無論在硬件資源準備,還是服務軟件管理,針對IPv6的支持已經完全自動化,尤其體現在基礎網絡設備配置、操作系統支持、IPv6資源管理、服務IPv6支持、服務注冊和自動調度等方面均已實現自動化管理并上線。2.5 客戶端調度流程    下面是IPv4和雙棧客戶端訪問DNS、視頻調度和視頻CDN的時序圖,從圖中可以看到愛奇藝DNS、HTTP視頻調度服務和視頻服務均已支持IPv6,可以根據客戶端不同的請求方式返回IPv4或者IPv6的資源。

圖2-4 IPv4/IPv6播放流程圖 3. 平滑上線 上一部分詳細介紹了整個IPv6業務調度架構和流程,本部分介紹系統上線的關鍵步驟,其中包括操作系統和軟件層面的IPv6配置支持以及如何在調度管理平臺進行平滑切量上線。3.1 系統配置系統層面配置包括內核調整和系統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信息并配置的功能。系統初始化還需要調整以下內核參數:

內核參數參數作用
net.ipv6.conf.bond0.accept_dadIPv6 DAD(重復地址檢測Duplicate Address Detect)主要是為了探測是否有其它的節點使用了該地址;對于分配靜態單播地址的網卡接口,設置相關接口參數為0,提高系統初始化速度。
net.ipv6.route.max_size內核參數net.ipv6.route.max_size是IPv6路由緩存條目的最大值,在CentOS 7中,對于此參數的預設值過小;此參數可根據生產系統實際情況評估設置,也可調整成與net.ipv4.route.max_size預設值保持一致。
net.ipv6.conf.all.disable_ipv6net.ipv6.conf.eth0.disable_ipv6在全局系統層面預設開啟了IPv6的支持,也可以對網絡接口內核參數進行具體調整,設置相關接口參數為0,確保IPv6配置開啟。

以上針對系統內核參數、網絡配置和IP地址自動分配相關的運維工作,我們使用自研的配置管理平臺,已經實現自動化任務模板。針對存量設備,自動從資源管理平臺獲取IP地址,自動配置;針對新設備,裝機流程中自動會分配IPv6地址,自動調整相關系統配置。3.2 服務軟件配置(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端口…}


3.3 業務切量
通過愛奇藝調度管理平臺,可以靈活的對IPv6流量進行調整控制,對于管理的視頻IDC節點,設置開啟IDC的IPv6服務支持選項,即可在IDC節點層面打開視頻服務的IPv6訪問支持:

調度管理平臺支持按照用戶區域和運營商配置IPv6的開啟:

實際的推進過程中,也是通過對用戶區域和調度資源(IDC)兩個維度進行配置實現灰度切量的,確保不影響用戶體驗并對用戶無感知。4. 總結和展望 經過一年多的努力,愛奇藝調度系統已經全面具備IPv6服務能力,正在按照區域和運營商,逐步增加IPv6用戶覆蓋。截至2019年6月底,愛奇藝IPv6月活用戶達到上億級別,峰值帶寬達到數百G;未來,我們仍將繼續推進IPv6部署,穩步增加IPv6帶寬占比,充分利用IPv6技術優勢,為用戶帶來更好的播放體驗。同時,推進IPv6網絡部署和系統架構改造,進一步提升用戶體驗和降低成本。[1]: https://github.com/acl-dev/acl

我還沒有學會寫個人說明!

畢業即失業,找工作找到懷疑人生 | 十年系列

上一篇

百度投資知乎,智能小程序是合作中樞

下一篇

你也可能喜歡

干貨丨愛奇藝CDN IPv6系統配置

長按儲存圖像,分享給朋友

ITPUB 每周精要將以郵件的形式發放至您的郵箱


微信掃一掃

微信掃一掃
重庆时时后一8码方法