最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

B站多云管理平臺(tái)建設(shè)

2023-03-28 12:50 作者:嗶哩嗶哩技術(shù)  | 我要投稿

本期作者


? ? SYS平臺(tái)? ??

B站系統(tǒng)部平臺(tái)團(tuán)隊(duì),

負(fù)責(zé)全站基礎(chǔ)設(shè)施管理平臺(tái)化和自動(dòng)化、

混合云IaC、資源運(yùn)營(yíng)CMDB等業(yè)務(wù)系統(tǒng)研發(fā)



1.前言


為什么使用多云:

  • 公有云因?yàn)槠鋸椥?、按需使用以及多地域的覆蓋等優(yōu)勢(shì),企業(yè)在高速發(fā)展的過程中往往會(huì)選擇公有云來提供應(yīng)用所需的基礎(chǔ)設(shè)施;

  • 為了高穩(wěn)定性和成本最優(yōu)的考慮,一般會(huì)引入多家云廠商;

  • ? ? ? 多云部署防止單一云廠商故障導(dǎo)致服務(wù)完全不可用;

  • ? ? ? 采用多云也提升了采購(gòu)上的議價(jià)能力,避免單一廠商綁定,在價(jià)格談判中處于劣勢(shì);

  • 不同的云廠商在覆蓋的地域、產(chǎn)品的能力上不一致,引入多云可以充分發(fā)揮各廠商的服務(wù)能力和產(chǎn)品優(yōu)勢(shì)。

多云帶來的問題:

  • 公司內(nèi)因?yàn)樵粕腺Y源使用的業(yè)務(wù)比較多,資源新增和交付主要依賴人工溝通并在控制臺(tái)上進(jìn)行操作,效率很低,在遇到大批量的資源交付、服務(wù)器、數(shù)據(jù)庫(kù)和負(fù)載均衡等多產(chǎn)品聯(lián)合交付等場(chǎng)景的時(shí)候,無法滿足業(yè)務(wù)的高速迭代需求;

  • 不同的業(yè)務(wù)使用的云產(chǎn)品不同,基本上都涵蓋了主要的IaaS和PaaS類的云產(chǎn)品,資源分布在多個(gè)公有云、多個(gè)云賬號(hào)下,無法準(zhǔn)確掌握全部資源情況,尋找資源困難,難以區(qū)分哪個(gè)資源由哪個(gè)業(yè)務(wù)使用;

  • 用戶在公有云控制臺(tái)上權(quán)限混亂缺乏管理,存在權(quán)限泄露問題,操作不同資源需要通過密碼登錄不同公有云不同賬號(hào),難以批量操作,高危操作缺乏審批流程;

  • 網(wǎng)絡(luò)配置復(fù)雜,需要學(xué)習(xí)和掌握很多專業(yè)的網(wǎng)絡(luò)知識(shí),難以排查網(wǎng)絡(luò)連通性問題;

  • 公有云成本逐步上漲,但缺乏成本的可視化,以及支持成本優(yōu)化的能力


2.平臺(tái)介紹


針對(duì)上面提到的問題,多云管理平臺(tái)建設(shè)迫在眉睫,如何來幫助業(yè)務(wù)用好云,幫助云管管好云是多云管理平臺(tái)建設(shè)的最終目標(biāo)。通過調(diào)研一些業(yè)內(nèi)的CMP平臺(tái),以及團(tuán)隊(duì)內(nèi)部多輪的討論、與業(yè)務(wù)用戶的交流,對(duì)于多云管管理平臺(tái)我們定義它應(yīng)該至少具備:

  • 體驗(yàn)友好,簡(jiǎn)潔易用;

  • 包括以下功能:

  • ? ? ?資源管理

  • ? ? ?資源編排

  • ? ? ?用戶管理

  • ? ? ?成本管理

    從2022年4月開始規(guī)劃和調(diào)研,7月份第一版本發(fā)布上線,到現(xiàn)在經(jīng)過多輪迭代,B站的多云管理平臺(tái)ARES已經(jīng)在幫助業(yè)務(wù)用好云、云管管好云上邁出了堅(jiān)實(shí)的一步,在降本增效方面發(fā)揮著重要的作用。


    ?2.1?平臺(tái)架構(gòu)


    圖1:平臺(tái)架構(gòu)圖



    • 整體采用分層架構(gòu),最頂層面向用戶,提供用戶的統(tǒng)一入口,用戶通過統(tǒng)一前端完成資源的整個(gè)生命周期的管理,同時(shí)也提供接口;

    • 中間層為業(yè)務(wù)邏輯層,主要功能分為項(xiàng)目管理、資產(chǎn)管理、用戶管理、資源編排和成本管理,涵蓋云資源的增刪改查等操作以及生命周期的管理,同時(shí)也管理了多云的賬單以及云上的用戶賬號(hào);

    • ? ? ?項(xiàng)目管理:主要是管理ARSE項(xiàng)目元信息,圍繞項(xiàng)目管理多云資源、賬號(hào)和賬單;

    • ? ? ? 資產(chǎn)管理:主要是管理資源的資產(chǎn)信息,通過標(biāo)準(zhǔn)化,統(tǒng)一多云資產(chǎn)管理,消除多云的差異;

    • ? ? ? 用戶管理:主要是全生命周期管理云上用戶賬號(hào);

    • ? ? ? 資源編排:通過資源編排能力,幫助用戶既可以自動(dòng)部署單個(gè)資源,又可以處理復(fù)雜的聯(lián)動(dòng)資源的部署需求;

    • ? ? ? 成本管理:主要是對(duì)云上賬單進(jìn)行分析處理,提供成本可視化和用量數(shù)據(jù),為平臺(tái)運(yùn)營(yíng)提供成本優(yōu)化的數(shù)據(jù)支持。

    • 底層是引擎層,主要是通過IaC和api結(jié)合的形式對(duì)接各云廠商,完成所有上層動(dòng)作的最終執(zhí)行。


      3.平臺(tái)功能


      ?3.1?項(xiàng)目為中心的全局管理


      為什么以項(xiàng)目為中心?

      ??????? 在ARES立項(xiàng)階段,最先考慮的一個(gè)問題是以什么維度來劃分資源和權(quán)限,每個(gè)用戶的資源管理邊界在哪,基于現(xiàn)狀,隨著業(yè)務(wù)發(fā)展,公司組織和部門會(huì)相應(yīng)的調(diào)整,導(dǎo)致資源的歸屬會(huì)經(jīng)常變動(dòng),并且從成本角度,云上的資源需要比較細(xì)粒度的進(jìn)行成本拆分,基于此,參考公有云的管理邏輯,我們定義了項(xiàng)目的概念,作為ARSE管理多云的核心。


      3.1.1?項(xiàng)目與資源和賬單的關(guān)系


      首先,項(xiàng)目作為多云平臺(tái)的管理中心,公司組織是預(yù)算執(zhí)行以及成本歸屬的重要單位,所以我們需要先定義項(xiàng)目和公司組織的關(guān)系。通過分析公司組織的特點(diǎn):

      1. 公司組織為樹形結(jié)構(gòu),葉子結(jié)點(diǎn)為業(yè)務(wù)部門;

      2. 每個(gè)業(yè)務(wù)部門都會(huì)有多個(gè)業(yè)務(wù)項(xiàng)目,分別由不同的業(yè)務(wù)團(tuán)隊(duì)負(fù)責(zé);

      我們定義公司組織和項(xiàng)目的關(guān)系為1:N,一個(gè)項(xiàng)目只能歸屬為唯一一個(gè)組織,但是一個(gè)組織下可以有多個(gè)項(xiàng)目。

      其次,云項(xiàng)目是云廠商控制臺(tái)的概念,雖然不同公有云的名稱不同但表示的含義是相同(比如A云叫資源組,B云叫企業(yè)項(xiàng)目),這里我們統(tǒng)一稱為云項(xiàng)目。根據(jù)同一個(gè)賬號(hào)下云項(xiàng)目是唯一的特性,我們定義項(xiàng)目與云賬號(hào)、云項(xiàng)目之間的關(guān)系:

      • 一個(gè)項(xiàng)目可以關(guān)聯(lián)多個(gè)云賬號(hào);

      • 一個(gè)云賬號(hào)下,一個(gè)項(xiàng)目只能關(guān)聯(lián)一個(gè)云項(xiàng)目;

      • 云項(xiàng)目的名字必須和項(xiàng)目相同;

      最后,在公有云中,資源是可以歸屬到云項(xiàng)目下的,可以以云項(xiàng)目的粒度在云上管理資源。但是,云項(xiàng)目有個(gè)問題就是無法關(guān)聯(lián)所有的資源,我們這里采用定義一個(gè)云標(biāo)簽來輔助資源的管理,以bili_project為key,項(xiàng)目名為value,利用標(biāo)簽對(duì)于資源的覆蓋范圍更大這一優(yōu)勢(shì)來作為云項(xiàng)目的補(bǔ)充。針對(duì)項(xiàng)目與云資源的關(guān)系:

      • 對(duì)于存量資源,經(jīng)過治理,把資源按照云項(xiàng)目和云標(biāo)簽進(jìn)行了正確的分組;

      • 對(duì)于增量資源,在創(chuàng)建資源的時(shí)候根據(jù)項(xiàng)目和云項(xiàng)目的映射關(guān)系,自動(dòng)歸屬資源到對(duì)應(yīng)的云項(xiàng)目,同時(shí)打上對(duì)應(yīng)的云標(biāo)簽;

      從這里可以看出,通過云項(xiàng)目和標(biāo)簽作為中介,可以關(guān)聯(lián)項(xiàng)目和資源,因?yàn)橘~單里可以根據(jù)資源的云項(xiàng)目以及標(biāo)簽來定義賬單項(xiàng)的歸屬,所以也就定義了項(xiàng)目和賬單的關(guān)系,由此可以把賬單歸屬到公司部門。


      3.1.2 項(xiàng)目與用戶權(quán)限的關(guān)系


      項(xiàng)目定義了四種角色:研發(fā)負(fù)責(zé)人、研發(fā)成員、運(yùn)維負(fù)責(zé)人和運(yùn)維成員,只有是這四種角色的用戶才能對(duì)項(xiàng)目下的資源有限定的權(quán)限:

      • 研發(fā)負(fù)責(zé)人角色權(quán)限:可以查看項(xiàng)目資源,發(fā)起項(xiàng)目資源的操作需求,作為操作工單的研發(fā)節(jié)點(diǎn)的審批人;

      • 研發(fā)成員角色權(quán)限:可以查看項(xiàng)目資源,發(fā)起項(xiàng)目資源的操作需求;

      • 運(yùn)維負(fù)責(zé)人角色權(quán)限:可以查看項(xiàng)目資源,發(fā)起項(xiàng)目資源的操作需求,作為操作工單的運(yùn)維節(jié)點(diǎn)的審批人;

      • 運(yùn)維成員角色權(quán)限:可以查看項(xiàng)目資源,發(fā)起項(xiàng)目資源的操作需求,作為操作工單操作前的安全確認(rèn)和執(zhí)行后的結(jié)果驗(yàn)收;

      除了平臺(tái)的用戶權(quán)限是通過項(xiàng)目來定義邊界外,云上賬號(hào)同樣是通過項(xiàng)目來定義權(quán)限邊界的,怎么實(shí)現(xiàn)云賬號(hào)權(quán)限的項(xiàng)目限定呢?

      主要是利用了云上的自定義策略,對(duì)于項(xiàng)目級(jí)別定義了兩種角色自定義策略:

      • 研發(fā)角色自定義策略:對(duì)云上資源只讀的權(quán)限

      • 運(yùn)維角色自定義策略:對(duì)云上資源的運(yùn)維操作的權(quán)限

      通過云上的項(xiàng)目和標(biāo)簽,利用自定義策略語法里的條件語法,如下,為項(xiàng)目A研發(fā)角色的自定義策略,然后把用戶云賬號(hào)關(guān)聯(lián)自定義策略即可完成用戶和對(duì)應(yīng)角色權(quán)限的綁定。

      {
       ? ?"Version": "1",
       ? ?"Statement": [
       ? ? ? ?{
       ? ? ? ? ? ?"Effect": "Allow",
       ? ? ? ? ? ?"Action": [
       ? ? ? ? ? ? ? ?"*:Describe*",
       ? ? ? ? ? ? ? ?"*:List*",
       ? ? ? ? ? ? ? ?"*:Get*",
       ? ? ? ? ? ? ? ?"*:BatchGet*",
       ? ? ? ? ? ? ? ?"*:Query*",
       ? ? ? ? ? ? ? ?"*:BatchQuery*",
       ? ? ? ? ? ? ? ?"actiontrail:LookupEvents",
       ? ? ? ? ? ? ? ?"actiontrail:Check*",
       ? ? ? ? ? ? ? ?"dm:Desc*",
       ? ? ? ? ? ? ? ?"dm:SenderStatistics*",
       ? ? ? ? ? ? ? ?"ram:GenerateCredentialReport",
       ? ? ? ? ? ? ? ?"cloudsso:Check*",
       ? ? ? ? ? ? ? ?"notifications:Read*"
       ? ? ? ? ? ?],
       ? ? ? ? ? ?"Resource": "*",
       ? ? ? ? ? ?"Condition": {
       ? ? ? ? ? ? ? ?"StringEqualsIgnoreCase": {
       ? ? ? ? ? ? ? ? ? ?"*:tag/bili_project": [
       ? ? ? ? ? ? ? ? ? ? ? ?"項(xiàng)目A"
       ? ? ? ? ? ? ? ? ? ?]
       ? ? ? ? ? ? ? ?}
       ? ? ? ? ? ?}
       ? ? ? ?}
       ? ?]
      }


      3.1.3 項(xiàng)目與環(huán)境配置的關(guān)系


      每個(gè)項(xiàng)目都有完整的一套或者多套環(huán)境,ARES支持用戶在項(xiàng)目級(jí)別配置環(huán)境,這里環(huán)境包括網(wǎng)絡(luò)環(huán)境、資源參數(shù)。

      (1)網(wǎng)絡(luò)環(huán)境,用戶在提交項(xiàng)目創(chuàng)建的時(shí)候,可以按照業(yè)務(wù)需求配置:

      • 生產(chǎn)環(huán)境和測(cè)試環(huán)境

      • 選擇資源規(guī)模,平臺(tái)根據(jù)資源規(guī)模自動(dòng)規(guī)劃網(wǎng)絡(luò),創(chuàng)建業(yè)務(wù)子網(wǎng)

      • 配置網(wǎng)絡(luò)訪問控制,平臺(tái)根據(jù)訪問控制自動(dòng)配置安全組和選擇對(duì)應(yīng)的網(wǎng)絡(luò)VPC,比如云上私網(wǎng)VPC、混合云VPC等

      • 配置公網(wǎng),自動(dòng)關(guān)聯(lián)NAT

      項(xiàng)目創(chuàng)建后,根據(jù)配置自動(dòng)在云上創(chuàng)建符合需求的網(wǎng)絡(luò)環(huán)境,為后續(xù)資源創(chuàng)建提供正確的項(xiàng)目網(wǎng)絡(luò)。

      (2)資源參數(shù),平臺(tái)的出發(fā)點(diǎn)是降低用戶的資源參數(shù)選擇成本,提高資源申請(qǐng)的效率:

      首先在項(xiàng)目創(chuàng)建完成后,用戶可以根據(jù)業(yè)務(wù)場(chǎng)景和資源選型,配置云服務(wù)器、RDS以及Redis等資源的參數(shù)配置,比如云服務(wù)器的鏡像、機(jī)型,RDS和Redis的版本和規(guī)格等,如圖所示,預(yù)先配置這些參數(shù)可以在資源申請(qǐng)階段,不必在云廠商提供的少則幾十種,多則上百種選項(xiàng)中篩選目標(biāo)配置。優(yōu)化了用戶體驗(yàn),提高了資源申請(qǐng)的效率,以云服務(wù)器的鏡像和機(jī)型舉例可以看出前后數(shù)量對(duì)比。


      圖2:項(xiàng)目配置
      圖3:配置前后數(shù)量對(duì)比



      除了配置這些參數(shù)作為資源申請(qǐng)時(shí)候的待選參數(shù)外,平臺(tái)還提供了提前配置模板的能力,解決相同需求重復(fù)申請(qǐng)的問題,比如,對(duì)于某項(xiàng)目,可以把第一次資源申請(qǐng)的工單保存為模板,后續(xù)隨著業(yè)務(wù)的發(fā)展,需要追加申請(qǐng)資源擴(kuò)容,可以直接以模板發(fā)起,不需要重新提交資源需求工單,如圖4:

      圖4:項(xiàng)目模板列表



      綜上,對(duì)于通過項(xiàng)目,可以高效的管理資源、權(quán)限以及成本歸屬,通過項(xiàng)目可以幫助用戶提高資源申請(qǐng)效率,這也是ARSE選擇項(xiàng)目作為整個(gè)平臺(tái)的管理中心的原因。


      ?3.2 統(tǒng)一的資產(chǎn)管理


      通過上述項(xiàng)目的介紹,應(yīng)該已經(jīng)清楚整個(gè)ARES對(duì)于多云的資源是基于項(xiàng)目管理的,要做好統(tǒng)一管理,面臨以下問題需要解決:

      1. 不同的云的產(chǎn)品叫法不一致,如何消除產(chǎn)品認(rèn)知上的差異;

      2. 云產(chǎn)品的屬性特別多,并且字段名也不一樣,獲取的方式也有差異;

      3. 對(duì)于同一種屬性的value定義存在多云差異,如何統(tǒng)一;

      對(duì)于上述的三個(gè)問題,我們分別從產(chǎn)品標(biāo)準(zhǔn)化、屬性標(biāo)準(zhǔn)化以及數(shù)值標(biāo)準(zhǔn)化三個(gè)維度去逐個(gè)解決。


      3.2.1?產(chǎn)品標(biāo)準(zhǔn)化


      ARSE針對(duì)不同云的產(chǎn)品名稱不一致的問題,ARES定義了云服務(wù)器、RDS、Redis、負(fù)載均衡、對(duì)象存儲(chǔ)等30多種標(biāo)準(zhǔn)產(chǎn)品(如圖5),并與云上對(duì)應(yīng)產(chǎn)品進(jìn)行映射,實(shí)現(xiàn)多云統(tǒng)一管理的需求。以標(biāo)準(zhǔn)產(chǎn)品中云服務(wù)器為例,將阿里云的ECS、騰訊云的CVM,華為云的ECS以及亞馬遜云的EC2等公有云云服務(wù)器類產(chǎn)品統(tǒng)一在ARES平臺(tái)定義的云服務(wù)器中管理,統(tǒng)一對(duì)外命名為云服務(wù)器,消除名稱上的差異。

      表1:多云下的云服務(wù)器產(chǎn)品
      圖5:ARSE定義的標(biāo)準(zhǔn)化產(chǎn)品視圖



      3.2.2 屬性標(biāo)準(zhǔn)化


      對(duì)于不同云的產(chǎn)品屬性差異的問題,需要標(biāo)準(zhǔn)化,對(duì)外統(tǒng)一屬性,如果將不同公有云的屬性直接展示給用戶,會(huì)出現(xiàn)表達(dá)相同含義的屬性在不同位置展示的問題,無法實(shí)現(xiàn)用戶無法統(tǒng)一篩選、排序和查看的需求。為此我們針對(duì)接入的產(chǎn)品,每個(gè)都對(duì)其屬性進(jìn)行了標(biāo)準(zhǔn)化,并且把每個(gè)云的屬性和標(biāo)準(zhǔn)化的屬性映射關(guān)系記錄下來。如下表,是我們標(biāo)準(zhǔn)化云服務(wù)器部分屬性的情況,對(duì)于未進(jìn)行標(biāo)準(zhǔn)化的屬性,我們也按照公有云提供的原始數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ),滿足少量高級(jí)用戶管理需求。

      表2:屬性標(biāo)準(zhǔn)化
      圖6:ARES云服務(wù)器的屬性詳情



      3.2.3 數(shù)值標(biāo)準(zhǔn)化


      經(jīng)過產(chǎn)品標(biāo)準(zhǔn)化和屬性標(biāo)準(zhǔn)化后,已經(jīng)實(shí)現(xiàn)用戶在統(tǒng)一視圖下查看和管理所有資源的需求,此時(shí)仍然有一個(gè)問題:對(duì)于狀態(tài)、類型、計(jì)費(fèi)方式等枚舉類型的產(chǎn)品屬性在不同公有云的取值范圍定義都不相同,直接暴露給用戶不利于篩選,并且會(huì)造成誤解。

      以公有云服務(wù)器的『狀態(tài)』屬性為例,不同公有云的取值范圍不同,ARES的方案是,按照表示的含義取交集,對(duì)于交集沒有包括的部分設(shè)置兩種狀態(tài):異常狀態(tài)和其它狀態(tài),所以標(biāo)準(zhǔn)化后的云服務(wù)器的狀態(tài)為:創(chuàng)建中、運(yùn)行中、啟動(dòng)中、停止中、已停止、異常、其它。用戶可以通過篩選查看對(duì)應(yīng)狀態(tài)的資源。

      在經(jīng)過產(chǎn)品標(biāo)準(zhǔn)化、屬性標(biāo)準(zhǔn)化和數(shù)值標(biāo)準(zhǔn)化后,多云的資源在ARSE平臺(tái)實(shí)現(xiàn)語義和展示上的統(tǒng)一,再結(jié)合項(xiàng)目管理章節(jié)的介紹,用戶可以在ARSE上基于項(xiàng)目全局上查看到同一個(gè)項(xiàng)目下的資源分布,以及在單一資源類型下,基于統(tǒng)一的認(rèn)知,可以多維度檢索資源列表信息和詳細(xì)信息,對(duì)于用戶而言,ARES“消滅了”多云,把自己打造成了云平臺(tái),ARSE就像是編程語言中的“接口”,對(duì)外都是標(biāo)準(zhǔn)化的,沒有歧義的,而實(shí)際執(zhí)行操作是每個(gè)云對(duì)于這個(gè)接口的實(shí)現(xiàn)。

      圖7:項(xiàng)目ARSE平臺(tái)的云服務(wù)器列表



      ?3.3 基于IaC的資源編排 Promise?的背景介紹


      資源編排是多云平臺(tái)的核心功能之一,好的資源編排能力既可以單賬號(hào)多資源聯(lián)動(dòng)部署,又可以跨賬號(hào)部署資源。ARES是基于Terraform為主,API為輔來實(shí)現(xiàn)資源編排的,這里重點(diǎn)介紹Terraform。


      3.3.1?Terraform介紹


      IaC

      IaC(Infrastructure as Code)基礎(chǔ)設(shè)施即代碼,就是用代碼來定義和管理基礎(chǔ)設(shè)施,Hashicorp 公司創(chuàng)建Terraform是IaC中的優(yōu)秀代表,盡管它不是唯一的 —— 所有主要的云提供商都有自己的 IaC,谷歌提供 Google Cloud Deployment Manager,AWS 提供 CloudFormation,微軟的 Azure 提供 Azure Resource Manager,Terraform因?yàn)槭情_源的并且和平臺(tái)無關(guān),所以廣受歡迎。

      Terraform

      Terraform提供了一套基礎(chǔ)設(shè)施管理的聲明式的框架,主流云廠商都實(shí)現(xiàn)了各自云的Provider,Terraform 通過provider與不同的云集成。provider是 Terraform 插件,用于與外部 API 進(jìn)行交互。每個(gè)云供應(yīng)商都會(huì)維護(hù)自己的 Terraform provider,使 Terraform 能夠管理該云中的資源。provider使用 Go 語言編寫的,并作為二進(jìn)制文件分發(fā)到Terraform注冊(cè)表上。它們負(fù)責(zé)進(jìn)行身份驗(yàn)證、發(fā)出API請(qǐng)求以及處理超時(shí)和錯(cuò)誤。在這個(gè)注冊(cè)表中,有數(shù)百個(gè)已經(jīng)發(fā)布的提供程序,它們協(xié)同起來,使你能夠管理數(shù)千種不同的資源。


      這里以A云Provider為例介紹如何利用Terraform的resource來創(chuàng)建一臺(tái)云服務(wù)器

      利用Terraform來創(chuàng)建云服務(wù)器

      # 創(chuàng)建后端服務(wù)器
      resource "Acloud_instance" "server_attachment" {
       ?count ? ? ? ? ? ? ? ? ? ? ?= 1
       ?image_id ? ? ? ? ? ? ? ? ? = "ubuntu_18_04_64_20G_alibase_20190624.vhd"
       ?instance_type ? ? ? ? ? ? ?= "ecs.n4.large"
       ?instance_name ? ? ? ? ? ? ?= "test"
       ?security_groups ? ? ? ? ? ?= "sg-mj7itgyeohjw2ebvyrl"
       ?internet_charge_type ? ? ? = "PayByTraffic"
       ?internet_max_bandwidth_out = "10"
       ?availability_zone ? ? ? ? ?= "cn-hangzhou-A"
       ?instance_charge_type ? ? ? = "PostPaid"
       ?system_disk_category ? ? ? = "cloud_efficiency"
       ?vswitch_id ? ? ? ? ? ? ? ? = "vsw-uf66iu2bxce23ityocdx"
      }


      3.3.2 Terraform實(shí)踐


      介紹了Terraform后,我們接下來講解ARES如何利用Terraform的能力,經(jīng)過優(yōu)化來支持B站的云資源編排和管理,主要分為三個(gè)方面。

      多云統(tǒng)一:

      Terraform雖然可以使用代碼管理基礎(chǔ)設(shè)施,但是面對(duì)公有云,Terraform并沒有解決多云異構(gòu)的問題,還是需要每家廠商提供完善的Provider,需要用戶針對(duì)不同的Provider去寫tf文件,所以對(duì)于用戶還是沒有屏蔽多云的差異,ARSE從業(yè)務(wù)層去解決了多云統(tǒng)一的問題。主要思路為:

      • 對(duì)于第三節(jié)介紹的產(chǎn)品標(biāo)準(zhǔn)化和屬性標(biāo)準(zhǔn)化,把經(jīng)過標(biāo)準(zhǔn)化后的屬性作為變量名,前端按照變量名對(duì)產(chǎn)品屬性進(jìn)行定義,對(duì)于多個(gè)廠商只需要定義一次,所有前端用戶選擇的value對(duì)于不同的廠商賦值給相同一份變量

      • 前端賦值后經(jīng)過后端接口根據(jù)云廠商的不同,根據(jù)映射的對(duì)應(yīng)云廠商的terraform的字段進(jìn)行賦值,調(diào)用實(shí)際的廠商的Provider插件進(jìn)行資源請(qǐng)求的執(zhí)行

      如圖以云主機(jī)為例,不管選擇的賬號(hào),ARES需要用戶填寫的label都是一致的,不因多云而改變,提供一致的用戶體驗(yàn)。

      圖8:云主機(jī)的申請(qǐng)



      參數(shù)模板:

      每一次用戶提交需求,前端變量值映射到后端的tf文件都需要重新生成一份tf文件,這里有兩種方案:

      1. 根據(jù)Terraform的語法規(guī)則,自動(dòng)生成對(duì)應(yīng)產(chǎn)品的resource

      2. 本地化配置產(chǎn)品的Terraform模板,按照模板生產(chǎn)Terraform文件

      考慮到基于語法自動(dòng)生成Terraform相關(guān)文件有一定的難度,我們選擇第二種方案,我們利用Terraform的variable關(guān)鍵子,定義多云下每個(gè)產(chǎn)品的模板,比如main_alicloud_template.tf文件,所有變量的value引用variable進(jìn)行填充,這里有兩個(gè)關(guān)鍵點(diǎn):

      1. value為多云統(tǒng)一后的變量名,比如云主機(jī)的機(jī)器名均為var.hostname

      2. 每個(gè)變量名按照variable文件的格式生成對(duì)應(yīng)的變量聲明和定義

      做到如上兩點(diǎn),每當(dāng)用戶提交需求的時(shí)候會(huì)自動(dòng)生成含有每個(gè)變量聲明和定義的variable.tf文件,同時(shí)實(shí)例化一份模板文件main.tf,組成一份可執(zhí)行的完整tf環(huán)境


      多產(chǎn)品編排:

      云上資源的申請(qǐng)場(chǎng)景中,會(huì)經(jīng)常存在負(fù)載均衡和后端服務(wù)器一起申請(qǐng)的情況,對(duì)于這種多資源統(tǒng)一部署和編排,ARES利用了Terraform的原生編排能力,通過在負(fù)載均衡監(jiān)聽器的后端服務(wù)組的attachment的resource中聲明云服務(wù)器的resource id來實(shí)現(xiàn),如下(以A云為例):

      resource "Acloud_slb_server_group_server_attachment" "server_attachment" {
       ?...
       ?server_group_id = Acloud_slb_server_group.server_attachment.id
       ?server_id ? ? ? = Acloud_instance.server_attachment[count.index].id
       ?...
      }



      利用Terraform的編排能力,我們支持了以下多種場(chǎng)景的編排能力:

      負(fù)載均衡關(guān)聯(lián)同工單創(chuàng)建的后端服務(wù)器;

      CDN部署管聯(lián)DNS自動(dòng)做CNAME解析;

      CDN部署關(guān)聯(lián)負(fù)載均衡或者對(duì)象存儲(chǔ)作為源站。

      如下圖9、圖10是ARES上支持負(fù)載均衡關(guān)聯(lián)后端云服務(wù)器以及CDN關(guān)聯(lián)對(duì)象存儲(chǔ)作為源站的例子


      圖9:負(fù)載均衡申請(qǐng)關(guān)聯(lián)后端服務(wù)器



      圖10:CDN關(guān)聯(lián)對(duì)象存儲(chǔ)域名



      ?3.4 安全可靠的用戶管理


      由于ARES還在迭代中,對(duì)于云上資源的運(yùn)維操作接入并不完善,用戶還是會(huì)需要采用云賬號(hào)登錄控制臺(tái)進(jìn)行資源的運(yùn)維,比如調(diào)整數(shù)據(jù)庫(kù)的參數(shù),配置告警策略等。所以當(dāng)前現(xiàn)狀下,云賬號(hào)還是用戶運(yùn)維資源不可或缺的輔助手段。

      由于云賬號(hào)屬于公有云,它的安全性相對(duì)于內(nèi)部平臺(tái)的賬號(hào)不可控,比如用戶的權(quán)限和密碼的管理,賬號(hào)的回收等等。為此,ARES針對(duì)云賬號(hào)全生命周期管理進(jìn)行了設(shè)計(jì)和支持,保證云賬號(hào)的安全可靠。


      3.4.1?云用戶賬號(hào)申請(qǐng)


      對(duì)于云用戶賬號(hào)的申請(qǐng)需要滿足以下條件:

      1. 必須是項(xiàng)目的四種角色之一

      2. 必須選擇項(xiàng)目,不能是全劇賬號(hào)

      除了條件之外,最主要的還是云賬號(hào)的獲取必須走申請(qǐng)流程,流程里配置了用戶的直屬領(lǐng)導(dǎo)審批,如下圖所示。


      圖11:云賬號(hào)申請(qǐng)流程



      3.4.2 云用戶賬號(hào)登錄


      使用云用戶賬號(hào)登錄存在以下問題:

      1. 如果某個(gè)用戶需要申請(qǐng)的賬號(hào)比較多,管理賬號(hào)密碼就顯得很痛苦;

      2. 由于密碼是用戶自己管理,容易泄漏,造成云上資源存在一定的安全風(fēng)險(xiǎn)。

      通過調(diào)研業(yè)界的做法,ARSE基于云廠商原生支持的SSO能力和公司內(nèi)部的單點(diǎn)登錄,實(shí)現(xiàn)了基于內(nèi)部IDP認(rèn)證的云上賬號(hào)單點(diǎn)登錄,整體邏輯如圖,優(yōu)點(diǎn)是把云賬號(hào)的登錄跳轉(zhuǎn)到內(nèi)部的身份認(rèn)證,只需要用戶掃描登陸內(nèi)部企業(yè)微信就可以實(shí)現(xiàn)一鍵登錄到云上進(jìn)行資源的管理。不需要鍵入密碼,因?yàn)樵粕祥_啟了SSO的功能,及時(shí)密碼泄漏,外部用戶也無法登錄到云控制臺(tái)。


      圖12:?jiǎn)吸c(diǎn)登錄流程



      3.4.3 云用戶賬號(hào)回收


      對(duì)于擁有云賬號(hào)的用戶,一旦存在工作變動(dòng),云賬號(hào)的存在就轉(zhuǎn)變?yōu)橐粋€(gè)安全漏洞了,平臺(tái)是如何及時(shí)處理工作變動(dòng)用戶的云賬號(hào)?

      • 首先,因?yàn)閱吸c(diǎn)登錄的開啟,云上的賬號(hào)的申請(qǐng)都是和用戶內(nèi)部的唯一身份名進(jìn)行綁定的;

      • 其次,ARES利用公司內(nèi)部接口,可以獲取到離職人員的名單列表。

      基于以上兩點(diǎn),平臺(tái)可以定時(shí)獲取離職人員,并且和云賬號(hào)所綁定的用戶進(jìn)行比對(duì),一旦發(fā)現(xiàn)用戶處于離職狀態(tài)會(huì)第一時(shí)間自動(dòng)關(guān)閉云賬號(hào)的控制臺(tái)登錄權(quán)限,為了防止誤操作,關(guān)閉登錄權(quán)限后一段時(shí)間內(nèi)才會(huì)去清退刪除賬號(hào)。(如圖13所示)

      圖13:云賬號(hào)的在離職狀態(tài)管理



      ?3.5 多維度的成本管理


      整個(gè)成本的管理包括業(yè)務(wù)前期的需求評(píng)估階段,廠商和產(chǎn)品選型階段,資源創(chuàng)建階段,資源的巡檢以及賬單的分析。

      圖14:資源不同階段的成本優(yōu)化方式



      3.5.1?申請(qǐng)階段


      需求評(píng)估

      需求評(píng)估的主要流程:

      • 對(duì)于業(yè)務(wù)的上云需求,我們會(huì)跟業(yè)務(wù)方進(jìn)行技術(shù)側(cè)的溝通,了解業(yè)務(wù)的架構(gòu),從技術(shù)上給出資源選擇建議以及可能滿足需求的云廠商;

      • 業(yè)務(wù)技術(shù)側(cè)對(duì)于至少三家云廠商的產(chǎn)品進(jìn)行技術(shù)測(cè)試;

      • 采購(gòu)側(cè)根據(jù)測(cè)試結(jié)果以及云資源的成本,給出性價(jià)比最高的廠商;


      資源選型

      資源選型主要包含兩個(gè)方面;

      • 性能測(cè)試:云資源的基準(zhǔn)測(cè)試是評(píng)估其性能的最主要途徑,通過Unixbench和SPECCPU我們針對(duì)主流廠商的常用云服務(wù)器進(jìn)行了基準(zhǔn)測(cè)試,并且測(cè)試數(shù)據(jù)作為智能推薦的參考因素,幫助業(yè)務(wù)合理的選擇云服務(wù)器的類型,后續(xù)也會(huì)針對(duì)MySQL和Redis等云資源做性能測(cè)試;

      • 智能推薦:對(duì)于業(yè)務(wù)用戶來說,在選擇云服務(wù)器的機(jī)型的時(shí)候并沒有足夠的數(shù)據(jù)支撐,同時(shí)在不同的廠商之間如何決策該選哪一家性價(jià)比最優(yōu)一直是一個(gè)頭疼問題,為此ARES針對(duì)該場(chǎng)景提供了智能推薦的功能;

      以云服務(wù)器智能推薦為例,通過調(diào)研各大云廠商提供的機(jī)型選擇相關(guān)的參考指標(biāo):



      我們選取CPU,MEM以及規(guī)格類型作為推薦時(shí)用戶可以篩選項(xiàng),根據(jù)篩選項(xiàng)輸出滿足用戶需求的按照成本排序后的機(jī)型,整體邏輯如圖15所示。

      圖15:資源選型智能推薦流程
      圖16:資源選型效果圖


      3.5.2 運(yùn)行階段


      資源巡檢:

      在資源運(yùn)行階段,對(duì)于成本優(yōu)化我們一般從兩個(gè)方面著手:

      1. 低利用率資源降配;

      2. 閑置資源及時(shí)清退;

      首先,低利用率資源降配的主要流程是:

      • 定義業(yè)務(wù)和成本關(guān)心的監(jiān)控指標(biāo),例如:云服務(wù)器和云數(shù)據(jù)庫(kù),我們主要關(guān)注CPU和內(nèi)存的利用率,所以選取兩個(gè)監(jiān)控項(xiàng)來體現(xiàn)資源的使用情況;

      • 利用云上的接口獲取利用率的監(jiān)控?cái)?shù)據(jù),因?yàn)榭紤]到云上的接口查詢頻率,我們定義每5分鐘查詢一次數(shù)據(jù),每天對(duì)這些數(shù)據(jù)進(jìn)行峰值和均值的計(jì)算并且持久化;

      • ? ? ?這里出于數(shù)據(jù)存儲(chǔ)的成本考慮,我們只把統(tǒng)計(jì)后的數(shù)據(jù)保存下來,這樣對(duì)于單個(gè)實(shí)例,每天三個(gè)數(shù)據(jù)(最大值,最小值以及均值),數(shù)據(jù)量相當(dāng)于全部保存的縮小了100倍,可以保存更長(zhǎng)時(shí)間的數(shù)據(jù);

      • 定義巡檢的規(guī)則,例如:設(shè)置云服務(wù)器的CPU利用率均值<10%,內(nèi)存利用率均值<10%;

      • 按照規(guī)則每天對(duì)數(shù)據(jù)庫(kù)中的利用率統(tǒng)計(jì)數(shù)據(jù)進(jìn)行分析,并且生成滿足規(guī)則條件的實(shí)例列表;

      • 拿到實(shí)例列表后會(huì)輸出給業(yè)務(wù)方,作為業(yè)務(wù)方降本的數(shù)據(jù)支撐

      其次,對(duì)于閑置資源,根據(jù)實(shí)際使用場(chǎng)景,我們定義了以下幾種閑置資源:

      1. 未綁定云服務(wù)器的云硬盤;

      2. 未綁定實(shí)例的彈性公網(wǎng)IP;

      3. 沒有監(jiān)聽器的負(fù)載均衡實(shí)例;

      4. 持續(xù)狀態(tài)異常的云服務(wù)器;

      結(jié)合前面介紹的資產(chǎn)管理,根據(jù)本地?cái)?shù)據(jù)庫(kù)中的資產(chǎn)信息就可以實(shí)現(xiàn)閑置資源的定期巡檢。

      從低利用率資源到閑置資源的巡檢,ARSE不斷探索資源優(yōu)化和技術(shù)降本的可能性,助力業(yè)務(wù)更加合理的使用云上資源。


      賬單分析:

      通過導(dǎo)入賬單,對(duì)賬單進(jìn)行分析,可以能夠可視化的展示成本的總體情況,項(xiàng)目維度以及組織維度的成本構(gòu)成,并且通過定義每個(gè)資源類型的計(jì)量標(biāo)準(zhǔn)計(jì)算用量用于業(yè)務(wù)確認(rèn):

      • 成本可視化:按照時(shí)間,展示成本的變化情況,方便成本和采購(gòu)團(tuán)隊(duì)關(guān)注業(yè)務(wù)在公有云上的成本;

      • 成本構(gòu)成:展示基于一個(gè)項(xiàng)目下的成本的構(gòu)成情況,并且能夠多級(jí)下鉆,有利于用戶分析業(yè)務(wù)的成本構(gòu)成,及時(shí)知曉成本大頭,確定降本的方向;

      • 用量確認(rèn):在賬單里存在多個(gè)計(jì)費(fèi)項(xiàng)(例如:云服務(wù)器有實(shí)例規(guī)格的計(jì)費(fèi)項(xiàng),公網(wǎng)帶寬的計(jì)費(fèi)項(xiàng),云硬盤存儲(chǔ)計(jì)費(fèi)項(xiàng)等),為了方便業(yè)務(wù)用量確認(rèn),我們定義了用量標(biāo)準(zhǔn)(例如:云服務(wù)器,我們定義CPU核數(shù)作為云服務(wù)器的用量標(biāo)準(zhǔn)),每個(gè)月平臺(tái)按照既定的用量標(biāo)準(zhǔn)計(jì)算用量后,業(yè)務(wù)可以針對(duì)該用量數(shù)據(jù)和業(yè)務(wù)實(shí)際使用的資源用量作對(duì)比,確認(rèn)賬單用量無誤。


      4.展望


      ARES多云平臺(tái)從業(yè)務(wù)日常的需求出發(fā),結(jié)合一線資源交付人員的經(jīng)驗(yàn),參考業(yè)界的CMP產(chǎn)品的能力,建設(shè)成一個(gè)符合B站業(yè)務(wù)用戶使用習(xí)慣和云管用戶管理方式的平臺(tái),最大程度的支持業(yè)務(wù)”用好云“,云管”管好云",利用平臺(tái)化的能力和數(shù)字化運(yùn)營(yíng)助力降本增效。

      目前,ARSE多云管理平臺(tái)還處于不斷迭代和完善的過程中,未來平臺(tái)的主要建設(shè)方向包括:

      • 持續(xù)完善成本優(yōu)化相關(guān)的能力,幫助業(yè)務(wù)降本增效;

      • 基于容器服務(wù)和云原生架構(gòu),實(shí)現(xiàn)多云環(huán)境下的自動(dòng)遷移和伸縮能力;

      • 托管私有云,建設(shè)成統(tǒng)一的混合云管理平臺(tái)。


      5.參考資源


      • 維基百科-安全斷言標(biāo)記語言:https://zh.wikipedia.org/wiki/%E5%AE%89%E5%85%A8%E6%96%AD%E8%A8%80%E6%A0%87%E8%AE%B0%E8%AF%AD%E8%A8%80

      • 維基百科-SAML 2.0:https://zh.wikipedia.org/wiki/SAML_2.0

      • Terraform:https://developer.hashicorp.com/terraform

      • Provider:https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/instance#system_disk_description

      • https://www.shuzhiduo.com/A/RnJW4ZkB5q/

      • https://www.jianshu.com/p/2bd3bcba8f9f

      • https://developer.hashicorp.com/terraform

      • http://c.biancheng.net/view/9813.html


      B站多云管理平臺(tái)建設(shè)的評(píng)論 (共 條)

      分享到微博請(qǐng)遵守國(guó)家法律
      五指山市| 桑植县| 古交市| 阜平县| 镶黄旗| 乌鲁木齐市| 望城县| 乃东县| 深州市| 科技| 邯郸县| 崇文区| 陵水| 长岭县| 阳泉市| 凤山市| 大同市| 黄梅县| 泸水县| 定南县| 中宁县| 尉犁县| 临泽县| 阿克| 奎屯市| 南涧| 新闻| 桂平市| 广东省| 南充市| 拜泉县| 黄骅市| 青海省| 剑河县| 房山区| 出国| 濮阳市| 鄂伦春自治旗| 湾仔区| 南岸区| 通道|