自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

?1.前言

為什么使用多云:

  • 公有云因?yàn)槠鋸椥?、按需使用以及多地域的覆蓋等優(yōu)勢(shì),企業(yè)在高速發(fā)展的過(guò)程中往往會(huì)選擇公有云來(lái)提供應(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ì)。

多云帶來(lái)的問(wèn)題:

  • 公司內(nèi)因?yàn)樵粕腺Y源使用的業(yè)務(wù)比較多,資源新增和交付主要依賴人工溝通并在控制臺(tái)上進(jìn)行操作,效率很低,在遇到大批量的資源交付服務(wù)器、數(shù)據(jù)庫(kù)和負(fù)載均衡等多產(chǎn)品聯(lián)合交付等場(chǎng)景的時(shí)候,無(wú)法滿足業(yè)務(wù)的高速迭代需求;
  • 不同的業(yè)務(wù)使用的云產(chǎn)品不同,基本上都涵蓋了主要的IaaS和PaaS類的云產(chǎn)品,資源分布在多個(gè)公有云、多個(gè)云賬號(hào)下,無(wú)法準(zhǔn)確掌握全部資源情況,尋找資源困難,難以區(qū)分哪個(gè)資源由哪個(gè)業(yè)務(wù)使用;
  • 用戶在公有云控制臺(tái)上權(quán)限混亂缺乏管理,存在權(quán)限泄露問(wèn)題,操作不同資源需要通過(guò)密碼登錄不同公有云不同賬號(hào),難以批量操作,高危操作缺乏審批流程;
  • 網(wǎng)絡(luò)配置復(fù)雜,需要學(xué)習(xí)和掌握很多專業(yè)的網(wǎng)絡(luò)知識(shí),難以排查網(wǎng)絡(luò)連通性問(wèn)題;
  • 公有云成本逐步上漲,但缺乏成本的可視化,以及支持成本優(yōu)化的能力

2.平臺(tái)介紹

針對(duì)上面提到的問(wèn)題,多云管理平臺(tái)建設(shè)迫在眉睫,如何來(lái)幫助業(yè)務(wù)用好云,幫助云管管好云是多云管理平臺(tái)建設(shè)的最終目標(biāo)。通過(guò)調(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)過(guò)多輪迭代,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)一入口,用戶通過(guò)統(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)信息,通過(guò)標(biāo)準(zhǔn)化,統(tǒng)一多云資產(chǎn)管理,消除多云的差異;
  • 用戶管理:主要是全生命周期管理云上用戶賬號(hào);
  • 資源編排:通過(guò)資源編排能力,幫助用戶既可以自動(dòng)部署單個(gè)資源,又可以處理復(fù)雜的聯(lián)動(dòng)資源的部署需求;
  • 成本管理:主要是對(duì)云上賬單進(jìn)行分析處理,提供成本可視化和用量數(shù)據(jù),為平臺(tái)運(yùn)營(yíng)提供成本優(yōu)化的數(shù)據(jù)支持。
  • 底層是引擎層,主要是通過(guò)IaC和api結(jié)合的形式對(duì)接各云廠商,完成所有上層動(dòng)作的最終執(zhí)行。

3.平臺(tái)功能

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

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

在ARES立項(xiàng)階段,最先考慮的一個(gè)問(wèn)題是以什么維度來(lái)劃分資源和權(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)系。通過(guò)分析公司組織的特點(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è)問(wèn)題就是無(wú)法關(guān)聯(lián)所有的資源,我們這里采用定義一個(gè)云標(biāo)簽來(lái)輔助資源的管理,以bili_project為key,項(xiàng)目名為value,利用標(biāo)簽對(duì)于資源的覆蓋范圍更大這一優(yōu)勢(shì)來(lái)作為云項(xiàng)目的補(bǔ)充。針對(duì)項(xiàng)目與云資源的關(guān)系:

  • 對(duì)于存量資源,經(jīng)過(guò)治理,把資源按照云項(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)簽;

從這里可以看出,通過(guò)云項(xiàng)目和標(biāo)簽作為中介,可以關(guān)聯(lián)項(xiàng)目和資源,因?yàn)橘~單里可以根據(jù)資源的云項(xiàng)目以及標(biāo)簽來(lái)定義賬單項(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)限是通過(guò)項(xiàng)目來(lái)定義邊界外,云上賬號(hào)同樣是通過(guò)項(xiàng)目來(lái)定義權(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)限

通過(guò)云上的項(xiàng)目和標(biāo)簽,利用自定義策略語(yǔ)法里的條件語(yǔ)法,如下,為項(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ò)訪問(wèn)控制,平臺(tái)根據(jù)訪問(wèn)控制自動(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)的問(wèn)題,比如,對(duì)于某項(xiàng)目,可以把第一次資源申請(qǐng)的工單保存為模板,后續(xù)隨著業(yè)務(wù)的發(fā)展,需要追加申請(qǐng)資源擴(kuò)容,可以直接以模板發(fā)起,不需要重新提交資源需求工單,如圖4:

圖片

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

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

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

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

  1. 不同的云的產(chǎn)品叫法不一致,如何消除產(chǎn)品認(rèn)知上的差異;
  2. 云產(chǎn)品的屬性特別多,并且字段名也不一樣,獲取的方式也有差異;
  3. 對(duì)于同一種屬性的value定義存在多云差異,如何統(tǒng)一;

對(duì)于上述的三個(gè)問(wèn)題,我們分別從產(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)品名稱不一致的問(wè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ù)器,消除名稱上的差異。

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

A云

B云


C云

D云

云服務(wù)器

云服務(wù)器 ECS

云服務(wù)器 CVM

彈性云服務(wù)器 ECS

Amazon EC2

表1:多云下的云服務(wù)器產(chǎn)品

圖片

圖5:ARSE定義的標(biāo)準(zhǔn)化產(chǎn)品視圖

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

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

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

A云

B云

C云

...

云ID

實(shí)例ID

ID

實(shí)例ID

...

名稱

主機(jī)名

名稱

名稱

...

云項(xiàng)目

資源組

企業(yè)項(xiàng)目

所屬項(xiàng)目

...

地域

地域

區(qū)域

區(qū)域

...

可用區(qū)

所在可用區(qū)

可用區(qū)

可用區(qū)

...

鏡像

鏡像ID

鏡像

鏡像名稱

...

規(guī)格

實(shí)例規(guī)格

規(guī)格

實(shí)例規(guī)格

...

...

...

...

...

...

表2:屬性標(biāo)準(zhǔn)化

圖片

圖6:ARES云服務(wù)器的屬性詳情

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

經(jīng)過(guò)產(chǎn)品標(biāo)準(zhǔn)化和屬性標(biāo)準(zhǔn)化后,已經(jīng)實(shí)現(xiàn)用戶在統(tǒng)一視圖下查看和管理所有資源的需求,此時(shí)仍然有一個(gè)問(wèn)題:對(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)中、停止中、已停止、異常、其它。用戶可以通過(guò)篩選查看對(duì)應(yīng)狀態(tài)的資源。

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

圖片

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

 3.3 基于IaC的資源編排  

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

3.3.1 Terraform介紹

IaC

IaC(Infrastructure as Code)基礎(chǔ)設(shè)施即代碼,就是用代碼來(lái)定義和管理基礎(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)無(wú)關(guān),所以廣受歡迎。

Terraform

Terraform提供了一套基礎(chǔ)設(shè)施管理的聲明式的框架,主流云廠商都實(shí)現(xiàn)了各自云的Provider,Terraform 通過(guò)provider與不同的云集成。provider是 Terraform 插件,用于與外部 API 進(jìn)行交互。每個(gè)云供應(yīng)商都會(huì)維護(hù)自己的 Terraform provider,使 Terraform 能夠管理該云中的資源。provider使用 Go 語(yǔ)言編寫的,并作為二進(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é)同起來(lái),使你能夠管理數(shù)千種不同的資源。

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

利用Terraform來(lái)創(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后,我們接下來(lái)講解ARES如何利用Terraform的能力,經(jīng)過(guò)優(yōu)化來(lái)支持B站的云資源編排和管理,主要分為三個(gè)方面。

多云統(tǒng)一:

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

  • 對(duì)于第三節(jié)介紹的產(chǎn)品標(biāo)準(zhǔn)化和屬性標(biāo)準(zhǔn)化,把經(jīng)過(guò)標(biāo)準(zhǔn)化后的屬性作為變量名,前端按照變量名對(duì)產(chǎn)品屬性進(jìn)行定義,對(duì)于多個(gè)廠商只需要定義一次,所有前端用戶選擇的value對(duì)于不同的廠商賦值給相同一份變量
  • 前端賦值后經(jīng)過(guò)后端接口根據(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的語(yǔ)法規(guī)則,自動(dòng)生成對(duì)應(yīng)產(chǎn)品的resource
  2. 本地化配置產(chǎn)品的Terraform模板,按照模板生產(chǎn)Terraform文件

考慮到基于語(yǔ)法自動(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的原生編排能力,通過(guò)在負(fù)載均衡監(jiān)聽器的后端服務(wù)組的attachment的resource中聲明云服務(wù)器的resource id來(lái)實(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)登錄存在以下問(wèn)題:

  1. 如果某個(gè)用戶需要申請(qǐng)的賬號(hào)比較多,管理賬號(hào)密碼就顯得很痛苦;
  2. 由于密碼是用戶自己管理,容易泄漏,造成云上資源存在一定的安全風(fēng)險(xiǎn)。

通過(guò)調(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的功能,即使密碼泄漏,外部用戶也無(wú)法登錄到云控制臺(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)估其性能的最主要途徑,通過(guò)Unixbench和SPECCPU我們針對(duì)主流廠商的常用云服務(wù)器進(jìn)行了基準(zhǔn)測(cè)試,并且測(cè)試數(shù)據(jù)作為智能推薦的參考因素,幫助業(yè)務(wù)合理的選擇云服務(wù)器的類型,后續(xù)也會(huì)針對(duì)MySQL和Redis等云資源做性能測(cè)試;
  • 智能推薦:對(duì)于業(yè)務(wù)用戶來(lái)說(shuō),在選擇云服務(wù)器的機(jī)型的時(shí)候并沒有足夠的數(shù)據(jù)支撐,同時(shí)在不同的廠商之間如何決策該選哪一家性價(jià)比最優(yōu)一直是一個(gè)頭疼問(wèn)題,為此ARES針對(duì)該場(chǎng)景提供了智能推薦的功能;

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

因素

作用

CPU

可以作為篩選項(xiàng),主要用于定位用戶的對(duì)于規(guī)格的需求

MEM

同上

規(guī)格類型

主要用于業(yè)務(wù)場(chǎng)景的分辨,不同的規(guī)格類型適用不同的業(yè)務(wù)場(chǎng)景,可以作為篩選項(xiàng)

內(nèi)網(wǎng)帶寬

主要是體現(xiàn)云服務(wù)器的內(nèi)網(wǎng)網(wǎng)絡(luò)帶寬性能

內(nèi)網(wǎng)收發(fā)包

主要是體現(xiàn)云服務(wù)器的內(nèi)網(wǎng)網(wǎng)絡(luò)吞吐能力

成本

云服務(wù)器的價(jià)格(折扣后)

性能測(cè)試數(shù)據(jù)

性能測(cè)試數(shù)據(jù),作為業(yè)務(wù)選型的參考

我們選取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)來(lái)體現(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ù)保存下來(lái),這樣對(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ù)更加合理的使用云上資源。

賬單分析:

通過(guò)導(dǎo)入賬單,對(duì)賬單進(jìn)行分析,可以能夠可視化的展示成本的總體情況,項(xiàng)目維度以及組織維度的成本構(gòu)成,并且通過(guò)定義每個(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)賬單用量無(wú)誤。

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)還處于不斷迭代和完善的過(guò)程中,未來(lá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)記語(yǔ)言: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??

本期作者:    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ā)

責(zé)任編輯:武曉燕 來(lái)源: 嗶哩嗶哩技術(shù)
相關(guān)推薦

2020-10-09 16:39:31

Oracle多云管理云計(jì)算

2023-12-26 12:18:34

2021-01-10 15:22:11

多云云計(jì)算混合云

2021-06-08 14:53:13

多云多云環(huán)境云平臺(tái)

2023-10-26 06:43:25

2023-02-16 07:24:27

VPA技術(shù)

2023-03-28 08:16:05

A/B實(shí)驗(yàn)數(shù)據(jù)分析

2019-12-30 10:22:12

云計(jì)算混合云工具

2021-06-10 07:35:34

多云管理平臺(tái)混合云上云

2020-02-27 17:12:44

戴爾

2023-01-27 19:33:10

消息中心管理平臺(tái)

2017-05-10 15:48:59

云平臺(tái)云計(jì)算工具

2022-07-17 15:53:09

云計(jì)算多云云管理

2023-05-30 07:27:45

高可用架構(gòu)流量

2024-01-24 07:36:29

2023-03-17 16:30:15

云集成架構(gòu)組件

2021-03-01 21:32:49

HTTP2 QUIC

2019-08-15 10:20:19

云計(jì)算技術(shù)安全

2019-03-22 14:20:26

管理多云云計(jì)算
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)