精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當前位置:云計算企業動態 → 正文

微博 Docker 化混合云平臺設計首度揭秘!

責任編輯:editor005 作者:王立恒 |來源:企業網D1Net  2016-01-04 14:11:32 本文摘自:iThome

8億用戶、單日活躍人數超過1億人、每日超過600億次的API調度、超過1兆次遠端程序呼叫,甚至連Log記錄檔每天都爆增100TB,這是新浪微博平臺維運架構師王關勝所面對的挑戰,他得設計出一個有能力勝任這些考驗的微博系統的新一代架構,而且高層給他的要求是,系統反應時間不得超過 50ms。

王關勝表示,微博如此大規模的業務,除了面臨系統快速更新的任務,各種不同系統元件間的依賴關系也相當復雜。而當國際事件、名人丑聞等高關注度的議題發生時,經常導致微博的業務量遽增,使得系統流量達到頂峰。

尤其遇到大型節日或活動時,如元旦、春晚、圣誕節還有紅包飛等大型活動,同樣也會為微博帶來巨大的流量挑戰。王關勝表示,位于三節的日子,微博的系統流量,會在3個小時內沖上頂峰,而紅包飛則是帶來瞬間的峰值流量,在兩個小時內就達到最高點。過去面對此樣的峰值事件,微博需要調度大量硬體設備。而如此做法,除了成本高外,系統在進行水平擴充時,也必須耗費更多的時間。

過長的前置作業時間為微博帶來營運痛點

而繁瑣擴充流程所花費的時間,為微博帶來了營運痛點。過去當峰值事件出現時,首先,維運團隊必須申請實體機器,將其登入組態管理資料庫(CMDB),在機房安裝妥當后,交予第一線作業人員進行初始化,并開始進行部署作業,如環境部署、監控部署、服務部署及流量導入等流程。

王關勝表示,過去的水平擴充的方法,也可能因為各個服務間的系統環境差異,無法充分使用硬體資源,即使有多余的伺服器也無法靈活調度。然而,在設備充足的狀況下,完成正常的設備申請程序也必須花上一天,甚至可能碰上沒有足夠設備的狀況,使得系統進行水平擴充花上更多時間。

另外,微博也有許多使用率不高、閒置在各叢集跟服務池的實體基礎設施,而微博過去在應付紅包飛、三節爆增流量的作法,會預先在各個業務的伺服器叢集,準備多余硬體設備,用來因應峰值突發的事件。而預先準備多余設備,則包含采購周期過長、機房空間不足所帶來的高營運成本外等缺點。

而設備申請時間周期長、使用率不高的閒置設備,則對新浪微博帶來龐大的成本壓力。而因為面臨這些挑戰、痛點,「我們要建構有彈性的混合云系統。」王關勝表示,微博的新做法是,導入公有云并結合過去的私有云,集結各業務叢集多余的運算設施,構建混合云的系統架構。

他表示,混合云架構除了妥善集成內部硬體資源,解決內部的彈型需求外,當系統面臨流量劇增的峰值事件,亦可以將過多的流量引導至外部公有云,減輕內部系統的壓力。

王關勝分析了采用混合云作法的好處,他表示,內部私有云具備安全性高、掌握度高的特性,也可以因應內部需求,對硬體配置進行優化,適合處理固定的工作負載。而公有云的設備則具有標準化、自動化的特性,可以快速因應臨時需求,在爆增流量的狀況下,讓企業具備水平擴充工作負載的能力。企業也可以利用公有云按照使用流量的付費機制,減低固定的營運成本,而采用混合云架構,可以兼具私有云以及公有云的優點,「可以同時擁有安全性與彈性擴充能力」,使系統工作負載可以在叢集間進行遷移,讓低負載的叢集配置較少的設備,反之,負載高的叢集則必須準備足夠的設備。而將Docker導入混合云的架構,也使微博服務穩定度高上許多。

透過三大關鍵,實現Docker混合云

微博混合云系統不單只是一般的混合云,而是導入了Docker,透過Docker Container快速部署的特性,解決爆量事件對微博系統帶來的壓力。過去企業在面對爆量事件,一般采取的作法是,首先評估需要多少額外設備,并向外部公有云申請機器分攤流量。然而,除了可能低估應付爆量所需的設備外,即使事先準備了足夠的VM,其部署時間成本也遠高于Docker,無法即時幫助企業分攤過多外部請求。

而王關勝表示,微博Docker Container平臺的混合云核心設計思想,主要是借鏡銀行的運作機制。他表示,民眾可以把錢存在銀行,而需要使用金錢的時候,只需要提領一部分,剩余的存款銀行可以拿去進行投資。而微博則借鏡銀行的這一套運作模式,在內部設立一個硬體資源共享池外,還導入了外部公有云。

而要微博實現高彈性調度資源的混合云架構,其中實現的關鍵則是Docker。王關勝表示,剛開始他們思考該要使用裸機還是VM架構,作為Docker Container的基礎設施。后來,考量如果要采用VM,內部機房架構要進行許多改造。所以,目前微博的內部私有云使用裸機部署,而外部公有云則采用阿里云彈性計算服務(ECS)的VM架構。

王關勝也揭露微博構成Docker Container平臺基礎架構的3大關鍵,包含Docker在裸機上的部署架構、自主開發的Docker Registry以及網頁伺服器Nginx Upsync模塊。

第一是Docker Container的裸機部署方案,透過IP位址以及Port定義一個唯一的Container服務,而每臺伺服器上則可以開啟多個Container,各個具有不同的功能。

例如,每一個Container服務所產生的行為日志,會經由一個名為Scribe的Container集中收集。而集中后的數據則可進行用戶行為分析。

此外,如果要進行Container的運作監控,則是透過建立Cadvisor Container,將Container運行產生的資料,傳送至Elasticsearch、Logstash及Kibana這3種開源監控軟體,進行分析。或是,搭配開源測量工具Graphite,監控系統的運作狀況。

第二則是Docker Registry,王關勝表示,微博使用Docker官方提供的Docker Registry,構建了私有的映像檔儲存庫Registry Hub,并且透過這個映像檔儲存庫調度Docker Container需要的映像檔。

在今年,微博開發出了第2版本的Registry Hub,將儲存引擎改為使用分散式開源儲存平臺Ceph,并且在Docker Registry前端結合Nginx,實作負載平衡功能。王關勝表示,在升級過程中必須讓系統能夠兼容新舊版本的Registry Hub,而前端Nginx可以分析系統需求,辨別要從新版本或是舊版本映像檔儲存庫下載映像檔。

而外部公有云,微博則是透過映像檔快取,不必像私有云一樣,部署完整的映像檔儲存庫。微博位于阿里云映像檔快取架構,總共包含3層架構。包含最底層作業系統、中間層的運作環境如Java、 Tomcat,及最上層的Container。而在調度Container時,透過使用dockerignore指令,減少不必要的文件、目錄,借此減低映像檔的容量。在映像檔標簽命名上,微博則禁止使用「Latest」做為映像檔標簽。王關勝表示,由于不同使用者對于標簽的理解不一,可能會誤以為是代表映像檔最新的版本。

而第三則是微博開發的Nginx Upsync模塊,王關勝表示,去年微博開始使用Container時,必須透過Container將Nginx掛載至前端,執行負載平衡的任務。而 Nginx部署完成后,必須透過重啟reload指令重啟Nginx。王關勝發現,Nginx對于特別大的流量會發生運作不穩定的情形。所以微博也直接開發了Nginx Upsync模塊,不需要透過reload指令重啟,也可以保持系統穩定運作。而微博也針對兩種模塊進行比較,發現流量大時,未修改的Nginx模塊會比 Nginx Upsync模塊多上10%的請求。

  (圖片來源/王關勝)

目前微博開發的Docker Container平臺系統,主要包含4層架構:主機層、調度層及排程層,最上層則是包含應用程式的業務層。底層的混合云基礎架構則架設了專線,打通微博內部資料中心以及阿里云。

混合云系統設計核心:自動化、彈性調度

微博混合云系統的設計理念,總共包含4個核心概念:彈性伸縮、自動化、業務導向以及專門為微博訂制。王關勝表示,混合云系統必須有彈性調度的運算能力。而微博混合云系統并不是對外公開的產品化服務,必須以業務需求出發,因此會有包含許多微博自我訂制的功能。

目前微博開發的Docker Container平臺系統,總共包含3層架構:主機層、調度層及排程層。王關勝解釋,主機層的核心是要調度運算資源。目前微博也設計了資源共享池、 Buffer資源池及多租戶管理機制,借此實現彈性調度資源。此外,底層的混合云基礎架構,也架設了專線,打通微博內部資料中心以及阿里云。

而調度層則透過API,使用調度工具將API進行包裝,而微博4種常用的調度工具組合包含:Docker、Swarm、Mesos及微博自主開發的Dispatch。

而最上層的排程層則是負責負載平衡。目前,微博的后端服務全部是Java環境,而個人電腦端則是使用PHP撰寫,行動裝置端則是透過調度API。編排層也導入了大資料工具Hadoop,執行大資料分析。

  (圖片來源/王關勝)

當業務A多馀的運算資源導入混合云共享池時,此時爆量的業務C,可從共享池調度業務A的運算資源,而度過峰值事件后,便可以把多馀的運算資源歸還至共享池。

微博引入阿里云做為第3機房,實現彈性調度架構

然而,王關勝也在思考,依照微博目前的技術框架,採用混合云的架構是否可行。目前微博機房的部署架構總共分為3層,依序是最上層域名以及負載均衡層。中間則是Web層,包含各種前端框架以及中介軟體(Middleware)。而最下層則包含MySQL、Redis、HBase等資料庫架構,而底部資源的中介軟體,則部署于中間Web層。

微博內部總共有2個機房,兩者互相做為災難備份用途,而第3個機房則採用外部阿里云。王關勝表示,混合云架構總共有2種部署方桉。第1種部署方桉,將阿里云視為資料中心,底層架構與微博內部機房一樣部署Redis。內部機房採用Linux虛擬伺服器,做為負載平衡層,但外部公有云則採用伺服器負載平衡SLB。而外部機房的中間Web層則與內部機房架構一致。不過,王關勝表示,由于微博有資料安全性的考慮,仍然把阿里云做為應付大量峰值的備桉,儲存永久性資料的MySQL、HBase資料庫架構并不會部署于阿里云。

而第2種部署方式則不將阿里云視為完整資料中心,僅是把內部機房應付爆量事件需要的彈性計算能力,遷移到阿里云。王關勝表示,第2種部署方桉困難之處,需要把微博的內部業務進行改造,讓微博中間Web層,直接對阿里云機房進行遠端程序呼叫。他表示,此種方桉部署結構相較比較簡單,也讓混合云架構具有實現可行性。

而這2種方桉都會仰賴VPC網路,王關勝表示,如果有沒有專線,想實現公有云的彈性計算能力幾乎是不可能。因為公網調度資源的延遲時間太高,無法應付微博大量的業務。

因此,微博與跟阿里云合作,在兩邊建立了內部專線,讓阿里云機房與微博的機房互通。最早微博機房跟阿里云建立一個1G專線,用于日常峰值,在春節則是透過10G的專線應付。

但是后來微博發現,如果只有一條專線,在峰值爆量的狀況下也很難彈性調度運算計算資源。因此微博也在另一個機房中,開啟了另一條專線。透過建立私有云及公有云間的專線,「目前微博已經達到高可用性的目標。」王關勝表示。

三大步驟完成大規模叢集操作自動化

微博Docker Container平臺設計思維,核心目標就是透過自動化操作大規模叢集,進行彈性調度資源的任務,要完成此任務,必須經過3個流程:設備申請、設備初始化及系統水平擴展。

王關勝表示,彈性擴充任務所需要的設備來源是內部的叢集以及外部的阿里云。而申請到足夠設備后,也必須對伺服器進行初始化、架設環境及配置管理。最后一步則是將伺服器上線,開始執行Container調度以及彈性擴充的任務。

第 1步驟則是申請設備,而設備申請借鏡于銀行機制的概念。王關勝分析,私有云的設備來源,主要來自離線叢集、低負載叢集以及錯峰時間空出的多馀設備。他解釋,離線叢集并不是時時刻刻都在執行運算,即使稍微減少硬體資源,也不會對業務產生重大影響,而工作負載較低的叢集,如果有多馀的資源也可以進行調度。此外,微博有上百個業務線,每個業務線峰值出現的時間點都不一樣,而在此種狀況下,各業務也可以互相支援,共享多馀的硬體資源。

而不同業務的叢集則各自獨立,并且具有獨立的資源池。叢集內可以自由調度資源,例如,縮小A服務的規模,將多馀的運算資源分派給B服務。若叢集要調度外部資源,微博另外也有設計配額制度,控制每個叢集分配到的資源。在叢集外,必須看Buffer池是否有足夠的資源,如果足夠的話,可以直接將Buffer池內的設備初始化,進行使用。

反之,如果Buffer池內的資源不足,也必須查看是否有足夠的配額,可以直接申請機器。當設備申請完成,登入Buffer池后,隨即被納入混合云系統中,而調度硬體的程序也都會經由Buffer池。

而正常運作的設備,會從未初始化狀態,歷經初始化、Container啟動以及Container上線等程序。不過,王關勝表示,設備異常的狀況也十分常見。如果設備異常就必須就要下線,如果重啟后運作正常,則可以重新回到Buffer池供人調度。但若出現硬體錯誤,則逕行走向報修程序。

第 2步驟則是設備初始化,王關勝表示,藉由DHCP機制,微博可以達到作業系統升級自動化、系統操作API化。而伺服器所依賴的基礎環境、需要的軟體等環境配置,透過組態管理工具Puppet,將需要的配置撰寫在模組中,完成組態自動化設定,并使用RPM機制打包,進行安裝。

在初始化流程中,必須要支援軟體反安裝模式,例如,當A業務單位要調度設備時,其他單位在交付設備前,必須要先透過反安裝程序,將要設備恢復為最原始的狀態。

而目前業界中的一些做法也可以免去初始化的流程。例如導入為Container而生的作業系統,像是CoreOS、RancherOS或Red Hat Atomic。不過,王關勝表示,雖然此種做法的可維護性高,但是缺點在于遷移設備的成本較高。

第 3步驟則是利用完成初始化的設備,開始進行服務水平擴充。王關勝表示,目前第一線的作業人員,只要在系統頁面上輸入服務池名稱、服務類型、 Container類型、需要Container數量以及映像檔位址等參數,而在水平擴充完成后,系統也會產出完整的報告,列出擴充程序中,執行的事項,以及每件任務的成功、失敗狀況。

導入Docker混合云,不怕爆量事件

為了確保微博 Docker混合云平臺系統的高可用性,微博也成立了技術保障團隊。王關勝表示,技術保障團隊最重要的任務,就是要保障產品的穩定性,讓系統在三節、紅包飛等尖峰時段系統運作無誤。王關勝表示,微博會優先調度內部的共享池資源的運算資源。而儲存節點、永久性資料放在微博內部,確保資料的安全性。但是在紅包飛、春晚時,則必須調度外部的運算資源。平日的正常狀況下,阿里云只需提供1,000個運算節點,并且在5到10分鐘內完成部署任務。但是,面對春晚、紅包飛的爆增流量,則要提供3,000個節點。王關勝表示,這種與阿里云租借公有云的做法,只需要應付臨時的爆增峰值事件,因此,也可以大大降低微博的日常運作成本。

目前微博的Docker混合云系統,才在今年10月完成,開始啟用不滿3個月,開啟的Container數量約是3,000 個。不過,王關勝表示,在今年的雙11,微博也用此系統進行實地演練,也達成微博所設定每次水平擴充時間低于5分鐘的目標,并完成一日內10次的水平擴展的任務。「有這樣的彈性調度能力時,系統面對大型活動的峰值壓力就小很多。」王關勝表示。

 

關鍵字:Docker王關勝

本文摘自:iThome

x 微博 Docker 化混合云平臺設計首度揭秘! 掃一掃
分享本文到朋友圈
當前位置:云計算企業動態 → 正文

微博 Docker 化混合云平臺設計首度揭秘!

責任編輯:editor005 作者:王立恒 |來源:企業網D1Net  2016-01-04 14:11:32 本文摘自:iThome

8億用戶、單日活躍人數超過1億人、每日超過600億次的API調度、超過1兆次遠端程序呼叫,甚至連Log記錄檔每天都爆增100TB,這是新浪微博平臺維運架構師王關勝所面對的挑戰,他得設計出一個有能力勝任這些考驗的微博系統的新一代架構,而且高層給他的要求是,系統反應時間不得超過 50ms。

王關勝表示,微博如此大規模的業務,除了面臨系統快速更新的任務,各種不同系統元件間的依賴關系也相當復雜。而當國際事件、名人丑聞等高關注度的議題發生時,經常導致微博的業務量遽增,使得系統流量達到頂峰。

尤其遇到大型節日或活動時,如元旦、春晚、圣誕節還有紅包飛等大型活動,同樣也會為微博帶來巨大的流量挑戰。王關勝表示,位于三節的日子,微博的系統流量,會在3個小時內沖上頂峰,而紅包飛則是帶來瞬間的峰值流量,在兩個小時內就達到最高點。過去面對此樣的峰值事件,微博需要調度大量硬體設備。而如此做法,除了成本高外,系統在進行水平擴充時,也必須耗費更多的時間。

過長的前置作業時間為微博帶來營運痛點

而繁瑣擴充流程所花費的時間,為微博帶來了營運痛點。過去當峰值事件出現時,首先,維運團隊必須申請實體機器,將其登入組態管理資料庫(CMDB),在機房安裝妥當后,交予第一線作業人員進行初始化,并開始進行部署作業,如環境部署、監控部署、服務部署及流量導入等流程。

王關勝表示,過去的水平擴充的方法,也可能因為各個服務間的系統環境差異,無法充分使用硬體資源,即使有多余的伺服器也無法靈活調度。然而,在設備充足的狀況下,完成正常的設備申請程序也必須花上一天,甚至可能碰上沒有足夠設備的狀況,使得系統進行水平擴充花上更多時間。

另外,微博也有許多使用率不高、閒置在各叢集跟服務池的實體基礎設施,而微博過去在應付紅包飛、三節爆增流量的作法,會預先在各個業務的伺服器叢集,準備多余硬體設備,用來因應峰值突發的事件。而預先準備多余設備,則包含采購周期過長、機房空間不足所帶來的高營運成本外等缺點。

而設備申請時間周期長、使用率不高的閒置設備,則對新浪微博帶來龐大的成本壓力。而因為面臨這些挑戰、痛點,「我們要建構有彈性的混合云系統。」王關勝表示,微博的新做法是,導入公有云并結合過去的私有云,集結各業務叢集多余的運算設施,構建混合云的系統架構。

他表示,混合云架構除了妥善集成內部硬體資源,解決內部的彈型需求外,當系統面臨流量劇增的峰值事件,亦可以將過多的流量引導至外部公有云,減輕內部系統的壓力。

王關勝分析了采用混合云作法的好處,他表示,內部私有云具備安全性高、掌握度高的特性,也可以因應內部需求,對硬體配置進行優化,適合處理固定的工作負載。而公有云的設備則具有標準化、自動化的特性,可以快速因應臨時需求,在爆增流量的狀況下,讓企業具備水平擴充工作負載的能力。企業也可以利用公有云按照使用流量的付費機制,減低固定的營運成本,而采用混合云架構,可以兼具私有云以及公有云的優點,「可以同時擁有安全性與彈性擴充能力」,使系統工作負載可以在叢集間進行遷移,讓低負載的叢集配置較少的設備,反之,負載高的叢集則必須準備足夠的設備。而將Docker導入混合云的架構,也使微博服務穩定度高上許多。

透過三大關鍵,實現Docker混合云

微博混合云系統不單只是一般的混合云,而是導入了Docker,透過Docker Container快速部署的特性,解決爆量事件對微博系統帶來的壓力。過去企業在面對爆量事件,一般采取的作法是,首先評估需要多少額外設備,并向外部公有云申請機器分攤流量。然而,除了可能低估應付爆量所需的設備外,即使事先準備了足夠的VM,其部署時間成本也遠高于Docker,無法即時幫助企業分攤過多外部請求。

而王關勝表示,微博Docker Container平臺的混合云核心設計思想,主要是借鏡銀行的運作機制。他表示,民眾可以把錢存在銀行,而需要使用金錢的時候,只需要提領一部分,剩余的存款銀行可以拿去進行投資。而微博則借鏡銀行的這一套運作模式,在內部設立一個硬體資源共享池外,還導入了外部公有云。

而要微博實現高彈性調度資源的混合云架構,其中實現的關鍵則是Docker。王關勝表示,剛開始他們思考該要使用裸機還是VM架構,作為Docker Container的基礎設施。后來,考量如果要采用VM,內部機房架構要進行許多改造。所以,目前微博的內部私有云使用裸機部署,而外部公有云則采用阿里云彈性計算服務(ECS)的VM架構。

王關勝也揭露微博構成Docker Container平臺基礎架構的3大關鍵,包含Docker在裸機上的部署架構、自主開發的Docker Registry以及網頁伺服器Nginx Upsync模塊。

第一是Docker Container的裸機部署方案,透過IP位址以及Port定義一個唯一的Container服務,而每臺伺服器上則可以開啟多個Container,各個具有不同的功能。

例如,每一個Container服務所產生的行為日志,會經由一個名為Scribe的Container集中收集。而集中后的數據則可進行用戶行為分析。

此外,如果要進行Container的運作監控,則是透過建立Cadvisor Container,將Container運行產生的資料,傳送至Elasticsearch、Logstash及Kibana這3種開源監控軟體,進行分析。或是,搭配開源測量工具Graphite,監控系統的運作狀況。

第二則是Docker Registry,王關勝表示,微博使用Docker官方提供的Docker Registry,構建了私有的映像檔儲存庫Registry Hub,并且透過這個映像檔儲存庫調度Docker Container需要的映像檔。

在今年,微博開發出了第2版本的Registry Hub,將儲存引擎改為使用分散式開源儲存平臺Ceph,并且在Docker Registry前端結合Nginx,實作負載平衡功能。王關勝表示,在升級過程中必須讓系統能夠兼容新舊版本的Registry Hub,而前端Nginx可以分析系統需求,辨別要從新版本或是舊版本映像檔儲存庫下載映像檔。

而外部公有云,微博則是透過映像檔快取,不必像私有云一樣,部署完整的映像檔儲存庫。微博位于阿里云映像檔快取架構,總共包含3層架構。包含最底層作業系統、中間層的運作環境如Java、 Tomcat,及最上層的Container。而在調度Container時,透過使用dockerignore指令,減少不必要的文件、目錄,借此減低映像檔的容量。在映像檔標簽命名上,微博則禁止使用「Latest」做為映像檔標簽。王關勝表示,由于不同使用者對于標簽的理解不一,可能會誤以為是代表映像檔最新的版本。

而第三則是微博開發的Nginx Upsync模塊,王關勝表示,去年微博開始使用Container時,必須透過Container將Nginx掛載至前端,執行負載平衡的任務。而 Nginx部署完成后,必須透過重啟reload指令重啟Nginx。王關勝發現,Nginx對于特別大的流量會發生運作不穩定的情形。所以微博也直接開發了Nginx Upsync模塊,不需要透過reload指令重啟,也可以保持系統穩定運作。而微博也針對兩種模塊進行比較,發現流量大時,未修改的Nginx模塊會比 Nginx Upsync模塊多上10%的請求。

  (圖片來源/王關勝)

目前微博開發的Docker Container平臺系統,主要包含4層架構:主機層、調度層及排程層,最上層則是包含應用程式的業務層。底層的混合云基礎架構則架設了專線,打通微博內部資料中心以及阿里云。

混合云系統設計核心:自動化、彈性調度

微博混合云系統的設計理念,總共包含4個核心概念:彈性伸縮、自動化、業務導向以及專門為微博訂制。王關勝表示,混合云系統必須有彈性調度的運算能力。而微博混合云系統并不是對外公開的產品化服務,必須以業務需求出發,因此會有包含許多微博自我訂制的功能。

目前微博開發的Docker Container平臺系統,總共包含3層架構:主機層、調度層及排程層。王關勝解釋,主機層的核心是要調度運算資源。目前微博也設計了資源共享池、 Buffer資源池及多租戶管理機制,借此實現彈性調度資源。此外,底層的混合云基礎架構,也架設了專線,打通微博內部資料中心以及阿里云。

而調度層則透過API,使用調度工具將API進行包裝,而微博4種常用的調度工具組合包含:Docker、Swarm、Mesos及微博自主開發的Dispatch。

而最上層的排程層則是負責負載平衡。目前,微博的后端服務全部是Java環境,而個人電腦端則是使用PHP撰寫,行動裝置端則是透過調度API。編排層也導入了大資料工具Hadoop,執行大資料分析。

  (圖片來源/王關勝)

當業務A多馀的運算資源導入混合云共享池時,此時爆量的業務C,可從共享池調度業務A的運算資源,而度過峰值事件后,便可以把多馀的運算資源歸還至共享池。

微博引入阿里云做為第3機房,實現彈性調度架構

然而,王關勝也在思考,依照微博目前的技術框架,採用混合云的架構是否可行。目前微博機房的部署架構總共分為3層,依序是最上層域名以及負載均衡層。中間則是Web層,包含各種前端框架以及中介軟體(Middleware)。而最下層則包含MySQL、Redis、HBase等資料庫架構,而底部資源的中介軟體,則部署于中間Web層。

微博內部總共有2個機房,兩者互相做為災難備份用途,而第3個機房則採用外部阿里云。王關勝表示,混合云架構總共有2種部署方桉。第1種部署方桉,將阿里云視為資料中心,底層架構與微博內部機房一樣部署Redis。內部機房採用Linux虛擬伺服器,做為負載平衡層,但外部公有云則採用伺服器負載平衡SLB。而外部機房的中間Web層則與內部機房架構一致。不過,王關勝表示,由于微博有資料安全性的考慮,仍然把阿里云做為應付大量峰值的備桉,儲存永久性資料的MySQL、HBase資料庫架構并不會部署于阿里云。

而第2種部署方式則不將阿里云視為完整資料中心,僅是把內部機房應付爆量事件需要的彈性計算能力,遷移到阿里云。王關勝表示,第2種部署方桉困難之處,需要把微博的內部業務進行改造,讓微博中間Web層,直接對阿里云機房進行遠端程序呼叫。他表示,此種方桉部署結構相較比較簡單,也讓混合云架構具有實現可行性。

而這2種方桉都會仰賴VPC網路,王關勝表示,如果有沒有專線,想實現公有云的彈性計算能力幾乎是不可能。因為公網調度資源的延遲時間太高,無法應付微博大量的業務。

因此,微博與跟阿里云合作,在兩邊建立了內部專線,讓阿里云機房與微博的機房互通。最早微博機房跟阿里云建立一個1G專線,用于日常峰值,在春節則是透過10G的專線應付。

但是后來微博發現,如果只有一條專線,在峰值爆量的狀況下也很難彈性調度運算計算資源。因此微博也在另一個機房中,開啟了另一條專線。透過建立私有云及公有云間的專線,「目前微博已經達到高可用性的目標。」王關勝表示。

三大步驟完成大規模叢集操作自動化

微博Docker Container平臺設計思維,核心目標就是透過自動化操作大規模叢集,進行彈性調度資源的任務,要完成此任務,必須經過3個流程:設備申請、設備初始化及系統水平擴展。

王關勝表示,彈性擴充任務所需要的設備來源是內部的叢集以及外部的阿里云。而申請到足夠設備后,也必須對伺服器進行初始化、架設環境及配置管理。最后一步則是將伺服器上線,開始執行Container調度以及彈性擴充的任務。

第 1步驟則是申請設備,而設備申請借鏡于銀行機制的概念。王關勝分析,私有云的設備來源,主要來自離線叢集、低負載叢集以及錯峰時間空出的多馀設備。他解釋,離線叢集并不是時時刻刻都在執行運算,即使稍微減少硬體資源,也不會對業務產生重大影響,而工作負載較低的叢集,如果有多馀的資源也可以進行調度。此外,微博有上百個業務線,每個業務線峰值出現的時間點都不一樣,而在此種狀況下,各業務也可以互相支援,共享多馀的硬體資源。

而不同業務的叢集則各自獨立,并且具有獨立的資源池。叢集內可以自由調度資源,例如,縮小A服務的規模,將多馀的運算資源分派給B服務。若叢集要調度外部資源,微博另外也有設計配額制度,控制每個叢集分配到的資源。在叢集外,必須看Buffer池是否有足夠的資源,如果足夠的話,可以直接將Buffer池內的設備初始化,進行使用。

反之,如果Buffer池內的資源不足,也必須查看是否有足夠的配額,可以直接申請機器。當設備申請完成,登入Buffer池后,隨即被納入混合云系統中,而調度硬體的程序也都會經由Buffer池。

而正常運作的設備,會從未初始化狀態,歷經初始化、Container啟動以及Container上線等程序。不過,王關勝表示,設備異常的狀況也十分常見。如果設備異常就必須就要下線,如果重啟后運作正常,則可以重新回到Buffer池供人調度。但若出現硬體錯誤,則逕行走向報修程序。

第 2步驟則是設備初始化,王關勝表示,藉由DHCP機制,微博可以達到作業系統升級自動化、系統操作API化。而伺服器所依賴的基礎環境、需要的軟體等環境配置,透過組態管理工具Puppet,將需要的配置撰寫在模組中,完成組態自動化設定,并使用RPM機制打包,進行安裝。

在初始化流程中,必須要支援軟體反安裝模式,例如,當A業務單位要調度設備時,其他單位在交付設備前,必須要先透過反安裝程序,將要設備恢復為最原始的狀態。

而目前業界中的一些做法也可以免去初始化的流程。例如導入為Container而生的作業系統,像是CoreOS、RancherOS或Red Hat Atomic。不過,王關勝表示,雖然此種做法的可維護性高,但是缺點在于遷移設備的成本較高。

第 3步驟則是利用完成初始化的設備,開始進行服務水平擴充。王關勝表示,目前第一線的作業人員,只要在系統頁面上輸入服務池名稱、服務類型、 Container類型、需要Container數量以及映像檔位址等參數,而在水平擴充完成后,系統也會產出完整的報告,列出擴充程序中,執行的事項,以及每件任務的成功、失敗狀況。

導入Docker混合云,不怕爆量事件

為了確保微博 Docker混合云平臺系統的高可用性,微博也成立了技術保障團隊。王關勝表示,技術保障團隊最重要的任務,就是要保障產品的穩定性,讓系統在三節、紅包飛等尖峰時段系統運作無誤。王關勝表示,微博會優先調度內部的共享池資源的運算資源。而儲存節點、永久性資料放在微博內部,確保資料的安全性。但是在紅包飛、春晚時,則必須調度外部的運算資源。平日的正常狀況下,阿里云只需提供1,000個運算節點,并且在5到10分鐘內完成部署任務。但是,面對春晚、紅包飛的爆增流量,則要提供3,000個節點。王關勝表示,這種與阿里云租借公有云的做法,只需要應付臨時的爆增峰值事件,因此,也可以大大降低微博的日常運作成本。

目前微博的Docker混合云系統,才在今年10月完成,開始啟用不滿3個月,開啟的Container數量約是3,000 個。不過,王關勝表示,在今年的雙11,微博也用此系統進行實地演練,也達成微博所設定每次水平擴充時間低于5分鐘的目標,并完成一日內10次的水平擴展的任務。「有這樣的彈性調度能力時,系統面對大型活動的峰值壓力就小很多。」王關勝表示。

 

關鍵字:Docker王關勝

本文摘自:iThome

電子周刊
回到頂部

關于我們聯系我們版權聲明隱私條款廣告服務友情鏈接投稿中心招賢納士

企業網版權所有 ©2010-2024 京ICP備09108050號-6 京公網安備 11010502049343號

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 泸溪县| 东明县| 开封县| 渑池县| 毕节市| 揭西县| 永春县| 高雄市| 黑山县| 黑河市| 闵行区| 建昌县| 平利县| 鹿邑县| 沈丘县| 新蔡县| 孝义市| 巨鹿县| 惠水县| 云霄县| 忻城县| 庆云县| 卓尼县| 酉阳| 金山区| 卢湾区| 鄂伦春自治旗| 西安市| 东丽区| 子洲县| 怀化市| 嘉祥县| 长葛市| 任丘市| 华蓥市| 东乌| 开平市| 镇巴县| 虎林市| 囊谦县| 达拉特旗|