① 在IT項目建設中,如何保證資料庫安全性
#雲原生背景#
雲計算是信息技術發展和服務模式創新的集中體現,是信息化發展的重要變革和必然趨勢。隨著「新基建」加速布局,以及企業數字化轉型的逐步深入,如何深化用雲進一步提升雲計算使用效能成為現階段雲計算發展的重點。雲原生以其高效穩定、快速響應的特點極大地釋放了雲計算效能,成為企業數字業務應用創新的原動力,雲原生進入快速發展階段,就像集裝箱加速貿易全球化進程一樣,雲原生技術正在助力雲計算普及和企業數字化轉型。
雲原生計算基金會(CNCF)對雲原生的定義是:雲原生技術有利於各組織在公有雲、私有雲和混合雲等新型動態環境中,構建和運行可彈性擴展的應用。雲原生的代表技術包括容器、服務網格、微服務、不可變基礎設施和聲明式編程API。
#雲安全時代市場發展#
雲安全幾乎是伴隨著雲計算市場而發展起來的,雲基礎設施投資的快速增長,無疑為雲安全發展提供土壤。根據 IDC 數據,2020 年全球雲安全支出占雲 IT 支出比例僅為 1.1%,說明目前雲安全支出遠遠不夠,假設這一比例提升至 5%,那麼2020 年全球雲安全市場空間可達 53.2 億美元,2023 年可達 108.9 億美元。
海外雲安全市場:技術創新與兼並整合活躍。整體來看,海外雲安全市場正處於快速發展階段,技術創新活躍,兼並整合頻繁。一方面,雲安全技術創新活躍,並呈現融合發展趨勢。例如,綜合型安全公司 PaloAlto 的 Prisma 產品線將 CWPP、CSPM 和 CASB 三個雲安全技術產品統一融合,提供綜合解決方案及 SASE、容器安全、微隔離等一系列雲上安全能力。另一方面,新興的雲安全企業快速發展,同時,傳統安全供應商也通過自研+兼並的方式加強雲安全布局。
國內雲安全市場:市場空間廣闊,尚處於技術追隨階段。市場規模上,根據中國信通院數據,2019 年我國雲計算整體市場規模達 1334.5億元,增速 38.6%。預計 2020-2022 年仍將處於快速增長階段,到 2023 年市場規模將超過 3754.2 億元。中性假設下,安全投入占雲計算市場規模的 3%-5%,那麼 2023 年中國雲安全市場規模有望達到 112.6 億-187.7 億元。技術發展上,中國在雲計算的發展階段和雲原生技術的程度上與海外市場還有一定差距。國內 CWPP 技術應用較為廣泛,對於 CASB、CSPM 一些新興的雲安全技術應用較少。但隨著國內公有雲市場的加速發展,雲原生技術的應用越來越廣泛,我們認為CASB、SCPM、SASE 等新興技術在國內的應用也將越來越廣泛。
#雲上安全呈原生化發展趨勢#
雲原生技術逐漸成為雲計算市場新趨勢,所帶來的安全問題更為復雜。以容器、服務網格、微服務等為代表的雲原生技術,正在影響各行各業的 IT 基礎設施、平台和應用系統,也在滲透到如 IT/OT 融合的工業互聯網、IT/CT 融合的 5G、邊緣計算等新型基礎設施中。隨著雲原生越來越多的落地應用,其相關的安全風險與威脅也不斷的顯現出來。Docker/Kubernetes 等服務暴露問題、特斯拉 Kubernetes 集群挖礦事件、Docker Hub 中的容器鏡像被「投毒」注入挖礦程序、微軟 Azure 安全中心檢測到大規模 Kubernetes 挖礦事件、Graboid 蠕蟲挖礦傳播事件等一系列針對雲原生的安全攻擊事件層出不窮。
從各種各樣的安全風險中可以一窺雲原生技術的安全態勢,雲原生環境仍然存在許多安全問題亟待解決。在雲原生技術的落地過程中,安全是必須要考慮的重要因素。
#雲原生安全的定義#
國內外各組織、企業對雲原生安全理念的解釋略有差異,結合我國產業現狀與痛點,雲原生與雲計算安全相似,雲原生安全也包含兩層含義:「面向雲原生環境的安全」和「具有雲原生特徵的安全」。
面向雲原生環境的安全,其目標是防護雲原生環境中的基礎設施、編排系統和微服務的安全。這類安全機制,不一定具備雲原生的特性(比如容器化、可編排),它們可以是傳統模式部署的,甚至是硬體設備,但其作用是保護日益普及的雲原生環境。
具有雲原生特徵的安全,是指具有雲原生的彈性敏捷、輕量級、可編排等特性的各類安全機制。雲原生是一種理念上的創新,通過容器化、資源編排和微服務重構了傳統的開發運營體系,加速業務上線和變更的速度,因而,雲原生系統的種種優良特性同樣會給安全廠商帶來很大的啟發,重構安全產品、平台,改變其交付、更新模式。
#雲原生安全理念構建#
為緩解傳統安全防護建設中存在的痛點,促進雲計算成為更加安全可信的信息基礎設施,助力雲客戶更加安全的使用雲計算,雲原生安全理念興起,國內外第三方組織、服務商紛紛提出以原生為核心構建和發展雲安全。
Gartner提倡以雲原生思維建設雲安全體系
基於雲原生思維,Gartner提出的雲安全體系覆蓋八方面。其中,基礎設施配置、身份和訪問管理兩部分由雲服務商作為基礎能力提供,其它六部分,包括持續的雲安全態勢管理,全方位的可視化、日誌、審計和評估,工作負載安全,應用、PaaS 和 API 安全,擴展的數據保護,雲威脅檢測,客戶需基於安全產品實現。
Forrester評估公有雲平台原生安全能力
Forrester認為公有雲平台原生安全(Public cloud platform native security, PCPNS)應從三大類、37 個方面去衡量。從已提供的產品和功能,以及未來戰略規劃可以看出,一是考察雲服務商自身的安全能力和建設情況,如數據中心安全、內部人員等,二是雲平台具備的基礎安全功能,如幫助和文檔、授權和認證等,三是為用戶提供的原生安全產品,如容器安全、數據安全等。
安全狗以4項工作防護體系建設雲原生安全
(1)結合雲原生技術的具體落地情況開展並落實最小許可權、縱深防禦工作,對於雲原生環境中的各種組成部分,均可貫徹落實「安全左移」的原則,進行安全基線配置,防範於未然。而對於微服務架構Web應用以及Serverless應用的防護而言,其重點是應用安全問題。
(2)圍繞雲原生應用的生命周期來進行DevSecOps建設,以當前的雲原生環境的關鍵技術棧「K8S + Docker」舉例進行分析。應該在容器的全生命周期注重「配置安全」,在項目構建時注重「鏡像安全」,在項目部署時注重「容器准入」,在容器的運行環境注重雲計算的三要素「計算」「網路」以及「存儲」等方面的安全問題。
(3)圍繞攻擊前、中、後的安全實施准則進行構建,可依據安全實施准則對攻擊前、中、後這三個階段開展檢測與防禦工作。
(4)改造並綜合運用現有雲安全技術,不應將「雲原生安全」視為一個獨立的命題,為雲原生環境提供更多支持的主機安全、微隔離等技術可賦能於雲原生安全。
#雲原生安全新型風險#
雲原生架構的安全風險包含雲原生基礎設施自身的安全風險,以及上層應用雲原生化改造後新增和擴大的安全風險。雲原生環境面臨著嚴峻的安全風險問題。攻擊者可能利用的重要攻擊麵包括但不限於:容器安全、編排系統、軟體供應鏈等。下面對重要的攻擊面安全風險問題進行梳理。
#雲原生安全問題梳理#
問題1:容器安全問題
在雲原生應用和服務平台的構建過程中,容器技術憑借高彈性、敏捷的特性,成為雲原生應用場景下的重要技術支撐,因而容器安全也是雲原生安全的重要基石。
(1)容器鏡像不安全
Sysdig的報告中提到,在用戶的生產環境中,會將公開的鏡像倉庫作為軟體源,如最大的容器鏡像倉庫Docker Hub。一方面,很多開源軟體會在Docker Hub上發布容器鏡像。另一方面,開發者通常會直接下載公開倉庫中的容器鏡像,或者基於這些基礎鏡像定製自己的鏡像,整個過程非常方便、高效。然而,Docker Hub上的鏡像安全並不理想,有大量的官方鏡像存在高危漏洞,如果使用了這些帶高危漏洞的鏡像,就會極大的增加容器和主機的入侵風險。目前容器鏡像的安全問題主要有以下三點:
1.不安全的第三方組件
在實際的容器化應用開發過程當中,很少從零開始構建鏡像,而是在基礎鏡像之上增加自己的程序和代碼,然後統一打包最終的業務鏡像並上線運行,這導致許多開發者根本不知道基礎鏡像中包含多少組件,以及包含哪些組件,包含的組件越多,可能存在的漏洞就越多。
2.惡意鏡像
公共鏡像倉庫中可能存在第三方上傳的惡意鏡像,如果使用了這些惡意鏡像來創建容器後,將會影響容器和應用程序的安全
3.敏感信息泄露
為了開發和調試的方便,開發者將敏感信息存在配置文件中,例如資料庫密碼、證書和密鑰等內容,在構建鏡像時,這些敏感信息跟隨配置文件一並打包進鏡像,從而造成敏感信息泄露
(2)容器生命周期的時間短
雲原生技術以其敏捷、可靠的特點驅動引領企業的業務發展,成為企業數字業務應用創新的原動力。在容器環境下,一部分容器是以docker的命令啟動和管理的,還有大量的容器是通過Kubernetes容器編排系統啟動和管理,帶來了容器在構建、部署、運行,快速敏捷的特點,大量容器生命周期短於1小時,這樣一來容器的生命周期防護較傳統虛擬化環境發生了巨大的變化,容器的全生命周期防護存在很大變數。對防守者而言,需要採用傳統異常檢測和行為分析相結合的方式,來適應短容器生命周期的場景。
傳統的異常檢測採用WAF、IDS等設備,其規則庫已經很完善,通過這種檢測方法能夠直觀的展示出存在的威脅,在容器環境下,這種方法仍然適用。
傳統的異常檢測能夠快速、精確地發現已知威脅,但大多數未知威脅是無法通過規則庫匹配到的,因而需要通過行為分析機制來從大量模式中將異常模式分析出來。一般來說,一段生產運營時間內的業務模式是相對固定的,這意味著,業務行為是可以預測的,無論啟動多少個容器,容器內部的行為總是相似的。通過機器學習、採集進程行為,自動構建出合理的基線,利用這些基線對容器內的未知威脅進行檢測。
(3)容器運行時安全
容器技術帶來便利的同時,往往會忽略容器運行時的安全加固,由於容器的生命周期短、輕量級的特性,傳統在宿主機或虛擬機上安裝殺毒軟體來對一個運行一兩個進程的容器進行防護,顯示費時費力且消耗資源,但在黑客眼裡容器和裸奔沒有什麼區別。容器運行時安全主要關注點:
1.不安全的容器應用
與傳統的Web安全類似,容器環境下也會存在SQL注入、XSS、RCE、XXE等漏洞,容器在對外提供服務的同時,就有可能被攻擊者利用,從而導致容器被入侵
2.容器DDOS攻擊
默認情況下,docker並不會對容器的資源使用進行限制,默認情況下可以無限使用CPU、內存、硬碟資源,造成不同層面的DDOS攻擊
(4)容器微隔離
在容器環境中,與傳統網路相比,容器的生命周期變得短了很多,其變化頻率也快很多。容器之間有著復雜的訪問關系,尤其是當容器數量達到一定規模以後,這種訪問關系帶來的東西向流量,將會變得異常的龐大和復雜。因此,在容器環境中,網路的隔離需求已經不僅僅是物理網路的隔離,而是變成了容器與容器之間、容器組與宿主機之間、宿主機與宿主機之間的隔離。
問題2:雲原生等保合規問題
等級保護2.0中,針對雲計算等新技術、新應用領域的個性安全保護需求提出安全擴展要求,形成新的網路安全等級保護基本要求標准。雖然編寫了雲計算的安全擴展要求,但是由於編寫周期很長,編寫時主流還是虛擬化場景,而沒有考慮到容器化、微服務、無服務等雲原生場景,等級保護2.0中的所有標准不能完全保證適用於目前雲原生環境;
通過安全狗在雲安全領域的經驗和具體實踐,對於雲計算安全擴展要求中訪問控制的控制點,需要檢測主機賬號安全,設置不同賬號對不同容器的訪問許可權,保證容器在構建、部署、運行時訪問控制策略隨其遷移;
對於入侵防範制的控制點,需要可視化管理,繪制業務拓撲圖,對主機入侵進行全方位的防範,控制業務流量訪問,檢測惡意代碼感染及蔓延的情況;
鏡像和快照保護的控制的,需要對鏡像和快照進行保護,保障容器鏡像的完整性、可用性和保密性,防止敏感信息泄露。
問題3:宿主機安全
容器與宿主機共享操作系統內核,因此宿主機的配置對容器運行的安全有著重要的影響,比如宿主機安裝了有漏洞的軟體可能會導致任意代碼執行風險,埠無限制開放可能會導致任意用戶訪問的風險。通過部署主機入侵監測及安全防護系統,提供主機資產管理、主機安全加固、風險漏洞識別、防範入侵行為、問題主機隔離等功能,各個功能之間進行聯動,建立採集、檢測、監測、防禦、捕獲一體化的安全閉環管理系統,對主機進行全方位的安全防護,協助用戶及時定位已經失陷的主機,響應已知、未知威脅風險,避免內部大面積主機安全事件的發生。
問題4:編排系統問題
編排系統支撐著諸多雲原生應用,如無服務、服務網格等,這些新型的微服務體系也同樣存在著安全問題。例如攻擊者編寫一段代碼獲得容器的shell許可權,進而對容器網路進行滲透橫移,造成巨大損失。
Kubernetes架構設計的復雜性,啟動一個Pod資源需要涉及API Server、Controller、Manager、Scheler等組件,因而每個組件自身的安全能力顯的尤為重要。API Server組件提供的認證授權、准入控制,進行細粒度訪問控制、Secret資源提供密鑰管理及Pod自身提供安全策略和網路策略,合理使用這些機制可以有效實現Kubernetes的安全加固。
問題5:軟體供應鏈安全問題
通常一個項目中會使用大量的開源軟體,根據Gartner統計至少有95%的企業會在關鍵IT產品中使用開源軟體,這些來自互聯網的開源軟體可能本身就帶有病毒、這些開源軟體中使用了哪些組件也不了解,導致當開源軟體中存在0day或Nday漏洞,我們根本無法獲悉。
開源軟體漏洞無法根治,容器自身的安全問題可能會給開發階段帶的各個過程帶來風險,我們能做的是根據SDL原則,從開發階段就開始對軟體安全性進行合理的評估和控制,來提升整個供應鏈的質量。
問題6:安全運營成本問題
雖然容器的生命周期很短,但是包羅萬象。對容器的全生命周期防護時,會對容器構建、部署、運行時進行異常檢測和安全防護,隨之而來的就是高成本的投入,對成千上萬容器中的進程行為進程檢測和分析,會消耗宿主機處理器和內存資源,日誌傳輸會佔用網路帶寬,行為檢測會消耗計算資源,當環境中容器數量巨大時,對應的安全運營成本就會急劇增加。
問題7:如何提升安全防護效果
關於安全運營成本問題中,我們了解到容器安全運營成本較高,我們該如何降低安全運營成本的同時,提升安全防護效果呢?這就引入一個業界比較流行的詞「安全左移」,將軟體生命周期從左到右展開,即開發、測試、集成、部署、運行,安全左移的含義就是將安全防護從傳統運營轉向開發側,開發側主要設計開發軟體、軟體供應鏈安全和鏡像安全。
因此,想要降低雲原生場景下的安全運營成本,提升運營效率,那麼首先就要進行「安全左移」,也就是從運營安全轉向開發安全,主要考慮開發安全、軟體供應鏈安全、鏡像安全和配置核查:
開發安全
需要團隊關注代碼漏洞,比如使用進行代碼審計,找到因缺少安全意識造成的漏洞和因邏輯問題造成的代碼邏輯漏洞。
供應鏈安全
可以使用代碼檢查工具進行持續性的安全評估。
鏡像安全
使用鏡像漏洞掃描工具持續對自由倉庫中的鏡像進行持續評估,對存在風險的鏡像進行及時更新。
配置核查
核查包括暴露面、宿主機加固、資產管理等,來提升攻擊者利用漏洞的難度。
問題8:安全配置和密鑰憑證管理問題
安全配置不規范、密鑰憑證不理想也是雲原生的一大風險點。雲原生應用會存在大量與中間件、後端服務的交互,為了簡便,很多開發者將訪問憑證、密鑰文件直接存放在代碼中,或者將一些線上資源的訪問憑證設置為弱口令,導致攻擊者很容易獲得訪問敏感數據的許可權。
#雲原生安全未來展望#
從日益新增的新型攻擊威脅來看,雲原生的安全將成為今後網路安全防護的關鍵。伴隨著ATT&CK的不斷積累和相關技術的日益完善,ATT&CK也已增加了容器矩陣的內容。ATT&CK是對抗戰術、技術和常識(Adversarial Tactics, Techniques, and Common Knowledge)的縮寫,是一個攻擊行為知識庫和威脅建模模型,它包含眾多威脅組織及其使用的工具和攻擊技術。這一開源的對抗戰術和技術的知識庫已經對安全行業產生了廣泛而深刻的影響。
雲原生安全的備受關注,使ATTACK Matrix for Container on Cloud的出現恰合時宜。ATT&CK讓我們從行為的視角來看待攻擊者和防禦措施,讓相對抽象的容器攻擊技術和工具變得有跡可循。結合ATT&CK框架進行模擬紅藍對抗,評估企業目前的安全能力,對提升企業安全防護能力是很好的參考。
② 為什麼說 Linux 容器將顛覆虛擬化
Mark Shuttleworth在十幾年前發起了Ubuntu inux項目,現在他在Canonical(一家提供Ubuntu支持服務的公司)主管戰略和用戶體驗。他認為新一輪的伺服器虛擬化浪潮與前一輪不太相同。
在他的指導下,Canonical和其他的Linux機構一樣,在其發布版本中先是Xen Hypervisor,接著是KVM然後繼續支持Docker,成功地趕上了虛擬化的幾輪潮流。當Eucalyptus是用的可計算雲控制器時該公司成為排頭兵,而當業界開始支持另一個開源項目- OpenStack而且OpenStack做為Linux的首選被部署到多個公有雲上時,他們也迅速地轉向OpenStack。Docker及其軟體容器方式完全類似於虛擬化並且讓雲計算服務商為之癲狂,但是讓Shuttleworth興奮的是另一種稱為Linux容器 (縮寫為LXC)的技術及與之相應的稱為LXD的Hypervisor。LXD是由Canonical開發的一個後台進程來管理這些容器並且提供了或多或少與開源的Xen及KVM、微軟的Hyper-V或者VMware的ESXi這些伺服器虛擬化Hypervisor類似的功能。
Shuttlworth向The Next Platform表示:「我們相信這是十年來對Linux虛擬化最大的突破,你可以看到我們對此是多麼興奮」。
LXC容器的想法和初期的工作都是由Google完成的,容器化應用程序已經在其基礎架構上運行了超過十年時間,而且據說每天會啟動超過20億的容器。Canonical和其他大約80個組織已經開始致力於LXC的商業化,因為LXC最初並不是一個對用戶很友好的技術。商業化是為了讓其具有常見伺服器虛擬化的觀感和體驗,盡管它使用的是非常不同且簡化的技術。
「對於容器,很多人並不了解的是我們用來配置容器的系統其實可以用很多種方法來做虛擬或者模擬」,Shuttleworth解釋說」有時你希望模仿看起和Docker類似的東西,而有時你又想模擬其他的東西。就LXC而言,我們想要創建容器的途徑是創建假想的主機,而不是運行操作系統的主機或者構成一個操作系統的所有進程。這與Docker所作的完全不同,雖然它們都使用相同的底層原語,但是創建了不同的的東西。LXC的宗旨是不藉助硬體虛擬化來創建虛擬機「
說起Docker,它在早期是基於LXC的但是現在它有了自己的抽象層,它更像一個運行在文件系統之上的單個進程,就好比你啟動了主機但並沒有運行 Init和所有構成操作系統的進程而是直接運行資料庫或者其他的東西,然後在一台主機上啟動多個容器並把它們一起置於其中。通過LXC及其LXD守護進程,Canonical希望保持擁有一個完整Debian、CentOS、Ubuntu或其他Linux操作系統的感觀。
「在LXC 1.0中,常見的情景是程序員說:「給我創建這個容器」。現在我們做法接收代碼然後將其納入LXD守護進程來管理,因此並不需要由程序員去創建每一個容器,我可以擁有上百個虛擬機並且與LXD守護進程進行通信來進行統一管理,因此我所擁有的虛擬機集群與你使用VMware ESXi hypervisor所構建的類似。把LXC打包到一個守護進程中就使得它變成了一個hypervisor。什麼是ESXi?它基本上是一個操作系統,你可以通過網路跟它通信並且讓它給你創建一個虛擬機。通過LXD,你可以跟一個運行LXC的主機說給我創建一個運行CentOS的新容器。這成為一個集群的導引機制。」
LXD也提供了另一個重要功能:它是運行的在兩台不同物理主機上的一個軟體,從而使得LXC實例能夠在主機間在線地遷移。
程序員都追求簡潔而且他們喜歡保持事物有序和整潔。在某種程度上,只是因為硬體虛擬化的成本很高就不得不把程序部署到多個主機上已經成了一個痛點。現在,你可以快速地在一台主機上運行多個程序而沒有這些開銷並且始終保持他們的原始狀態和隔離。
本周,Canonical發布了首次包括LXD hypervisor的LXC 2.0 beta版本。在本月將要發布的Ubuntu Server 15.10的更新中就包括這兩個組件,而Canonical也通過統一步驟把LXC 2.0反推入Ubuntu Server 14.04 LTS(LTS是Long Term Support的縮寫)的伺服器版本。LTS版本每兩年發布一次而且具有五年的支持生命期。由於它的穩定性有保證,所以70%的客戶都在生產環境中運行 Ubuntu伺服器的LTS版本。據Shuttleworth說,包含LXD hypervisor的LXC 2.0生產級別版本將在明年亮相,根據命名方案的建議可能就在二月或者三月最遲到4月就與新的企業級版本 – Ubuntu Server 16.04 LTS一同發布。負責Ubuntu產品和戰略的Dustin Kirklan對TheNext Platform說,從下一個LTS版本開始,在每一個Ubuntu Server中就會預設安裝LXC和LXD組件,這樣每個主機都可以運行幾十到幾百個容器 –IBM在最大的使用POWER處理器的伺服器上甚至可以運行數千個容器。
相比於依靠硬體虛擬化的常規虛擬機,LXC容器具有兩個巨大的優勢:一台主機上可以打包的容器數量和這些容器的啟動速度。盡管為了在一台硬體上用不同的容器運行不同的Linux需要一些額外的工作,但是由於LXC其實就是用Linux運行Linux,所以不需要虛擬什麼。
「這在性能方面前進了一步,而在密度方面的改進則是巨大的」,Shuttleworth無不得意地說:「而這對於低延遲、實時型的應用程序具有顯著的改善。在雲計算環境中這類事情都變得容易處理了,當然過去他們可不是這樣。如果你的雲平台運行了LXC,很快高性能計算可以搞定了、雲計算平台上的實時計算也可以搞定了,而且如果你是一個需要低傳輸延遲的電信運營商的話,那麼NFV(網路功能虛擬化)也可以搞定了。在這些需要巨大資金投入的領域,人們真的希望使用雲計算和虛擬化,而LXC使其成為可能。這是非常令人振奮的」
Shuttleworth說LXC容器在密度方面可以達到諸如EXSi、Xen或KVM這類使用虛擬機的hypervisor的14倍,而且 LXC和LXD組合在開銷方面卻只佔基於硬體虛擬化的Hypervisor的20%不到。對於空閑的負載而言,VM和LXC容器就和大多數VM和物理主機所作的一樣大部分時間在等待。對於繁忙的VM而言,LXC容器則能夠提供明顯要好得多的I/O吞吐量和更低的延遲。因此,對於空閑的主機你專注於整合,而對於繁忙的主機你專注於吞吐量和延遲。而且由於Hypervisor和VM的特定開銷可以釋放出來用於實際工作,所以你可以得到大約20%的性能提升。
現在已經開始對LXC及LXD組合進行基準測試。在上周東京召開的OpenStack峰會上,Canonical LXD開發團隊的Tycho Andersen展示了一些在虛擬化環境中的測試基準,其中一個是使用Hadoop TeraSort測試而另一個是對Cassandra NoSQL數據存儲的壓力測試。這兩個測試中,主機運行的是在峰會期間發布的最新OpenStack 「Liberty」雲控制器和同樣剛發布的Ubuntu 15.10. 15.10,它既有KVM也有LXD hypervisor和各自的虛擬機和容器。這些伺服器配備了24核和48GB內存,一個控制器負責管理OpenStack而其他三台用作基本的計算節點。
在TeraSort測試開始的時候,在三台主機上LXC和KVM的表現基本一致,但是當OpenStack/Hadoop集群中的主機數量隨著數據集的規模增長後,兩種不同的虛擬化手段在性能方面的差異開始顯現。
③ 容器雲技術的優勢是什麼
1.容器雲技術在計算形態上面是一種輕量級的虛擬化技術,是進程級的虛擬化形態封裝,容器的啟動和部署的迅速,可以在應用層面按照資源進行快速的部署和調度的,這樣生命周期的變化速度也就很快了。
2.它是可以移植的一種技術,能夠降低成本。當前容器雲技術的現代形式,主要是體現在應用程序容器化和系統容器化方面。這兩種形式的容器都是可以讓IT團隊從底層的架構中抽象出程度代碼的,這樣就可以實現跨各種部署環境的可移植性了。
3.容器一般是位於物理伺服器以及主機操作系統之上的。它可以通過單個的操作系統安裝去運行多個工作環境,因此容器是非常輕的,它們只有幾兆的位元組,只需要幾秒鍾就可以啟動了。另外,內存,存儲和CPU效率的提高,是容器雲技術的關鍵優勢。它可以在同一基礎架構上面支持更多的容器,這樣就可以減少管理方面的開支了。
國內做的比較好的我推薦時速雲,他們服務過500+的中大型客戶,不僅涵蓋容器雲 PaaS、DevOps、微服務、ServiceMesh、API 網關等核心雲原生產品,還可以為企業提供數據開發、數據治理、數據資產、數據服務等數據能力。感興趣的可以去了解一下!
④ 如何使用OpenStack,Docker和Spark打造一個雲服務
IBM中國研究院高級研究員陳冠誠主要從事Big Data on Cloud,大數據系統性能分析與優化方面的技術研發。負責和參與過SuperVessel超能雲的大數據服務開發,Hadoop軟硬體協同優化,MapRece性能分析與調優工具,高性能FPGA加速器在大數據平台上應用等項目。在Supercomputing(SC),IEEE BigData等國際頂級會議和期刊上發表過多篇大數據數據處理技術相關的論文,並擁有八項大數據領域的技術專利。曾在《程序員》雜志分享過多篇分布式計算,大數據處理技術等方面的技術文章。以下為媒體針對陳冠誠的專訪:
問:首先請介紹下您自己,以及您在Spark 技術方面所做的工作。
陳冠誠:我是IBM中國研究院的高級研究員,大數據雲方向的技術負責人。我們圍繞Spark主要做兩方面的事情:第一,在IBM研究院的SuperVessel公有雲上開發和運維Spark as a Service大數據服務。第二,在OpenPOWER架構的伺服器上做Spark的性能分析與優化。
問:您所在的企業是如何使用Spark 技術的?帶來了哪些好處?
陳冠誠:Spark作為新一代的大數據處理引擎主要帶來了兩方面好處:
相比於MapRece在性能上得到了很大提升。
在一個統一的平台上將批處理、SQL、流計算、圖計算、機器學習演算法等多種範式集中在一起,使混合計算變得更加的容易。
問:您認為Spark 技術最適用於哪些應用場景?
陳冠誠:大規模機器學習、圖計算、SQL等類型數據分析業務是非常適合使用Spark的。當然,在企業的技術選型過程中,並不是說因為Spark很火就一定要使用它。例如還有很多公司在用Impala做數據分析,一些公司在用Storm和Samaza做流計算,具體的技術選型應該根據自己的業務場景,人員技能等多方面因素來做綜合考量。
問:企業在應用Spark 技術時,需要做哪些改變嗎?企業如果想快速應用Spark 應該如何去做?
陳冠誠:企業想要擁抱Spark技術,首先需要技術人員改變。是否有給力的Spark人才會是企業能否成功應用Spark最重要的因素。多參與Spark社區的討論,參加Spark Meetup,給upstrEAM貢獻代碼都是很好的切入方式。如果個人開發者想快速上手Spark,可以考慮使用SuperVessel免費的Spark公有雲服務,它能快速創建一個Spark集群供大家使用。
問:您所在的企業在應用Spark 技術時遇到了哪些問題?是如何解決的?
陳冠誠:我們在對Spark進行性能調優時遇到很多問題。例如JVM GC的性能瓶頸、序列化反序列化的開銷、多進程好還是多線程好等等。在遇到這些問題的時候,最好的方法是做好Profiling,准確找到性能瓶頸,再去調整相關的參數去優化這些性能瓶頸。
另一方面,我們發現如果將Spark部署在雲環境里(例如OpenStack管理的Docker Container)時,它的性能特徵和在物理機上部署又會有很大的不同,目前我們還在繼續這方面的工作,希望以後能有機會跟大家繼續分享。
問:作為當前流行的大數據處理技術,您認為Spark 還有哪些方面需要改進?
陳冠誠:在與OpenStack這樣的雲操作系統的集成上,Spark還是有很多工作可以做的。例如與Docker Container更好的集成,對Swift對象存儲的性能優化等等。
問:您在本次演講中將分享哪些話題?
陳冠誠:我將分享的話題是「基於OpenStack、Docker和Spark打造SuperVessel大數據公有雲」:
隨著Spark在2014年的蓬勃發展,Spark as a Service大數據服務正成為OpenStack生態系統中的新熱點。另一方面,Docker Container因為在提升雲的資源利用率和生產效率方面的優勢而備受矚目。在IBM中國研究院為高校和技術愛好者打造的SuperVessel公有雲中,我們使用OpenStack、Docker和Spark三項開源技術,在OpenPOWER伺服器上打造了一個大數據公有雲服務。本次演講我們會向大家介紹如何一步一步使用Spark、Docker和OpenStack打造一個大數據公有雲,並分享我們在開發過程中遇到的問題和經驗教訓。
問:哪些聽眾最應該了解這些話題?您所分享的主題可以幫助聽眾解決哪些問題?
陳冠誠:對如何構造一個大數據雲感興趣的同學應該會對這個話題感興趣,開發SuperVessel的Spark as a Service服務過程中我們所做的技術選型、架構設計以及解決的問題應該能對大家有所幫助
⑤ 自學Java如何入門
自學Java看這一篇就夠啦!Java學習路線圖分享給你,跟著學習吧!
一、Java基礎
⑥ 基於容器的DevOps平台應該提供哪些功能
「DevOps」提倡開發和IT運維之間的高度協同,它拓展和完善了持續集成和發布流程,從而能夠提高復雜的分布式應用的開發和運維效率,加快交付速度。DevOps的理論已經響徹業界,快節奏的互聯網公司大都已經按照不同的方式在公司內部的研發體系中引入了DevOps流程,它的效果也已經得到了實踐驗證。公有雲巨頭們都了提供DevOps服務,例如亞馬遜的AWS OpsWorks、阿里雲的CRP持續交付平台、網易蜂巢等;一些新興的創業公司例如時速雲、DaoCloud、靈雀雲等也都提供了基於容器雲平台的DevOps服務解決方案。
然而,DevOps只是一個方法、過程的統稱。 運維人員可以自己編寫腳本或者使用Puppet、chef、Docker等自動化配置工具實現DevOps的流程(我們的項目就是通過自己攢的工具實現了DevOps流程),也可以由專門的平台提供全套DevOps解決方案,但是這個平台該有什麼具體功能、該如何實現,並沒有標准答案。
本章節將簡要對比分析業內的各平台提供的DevOps平台服務功能及實現方式,並且依據自身項目的實踐經驗,梳理出適合支持DevOps流程的、比較實用且適合為企業提供容器服務的平台需求。
幾家DevOps相關平台的對比
如表所示簡要對比了阿里雲CRP平台、阿里雲容器服務、網易蜂巢、時速雲、DaoCloud幾家:
阿里雲CRP(持續發布平台):主要作用是在Dev階段提供快速構建、發布功能,最終能直接將開發成果發布到阿里雲ESC上,Ops部分就由ESC接管了。具體來說平台提供項目代碼管理、代碼構建、持續集成、持續發布功能,其功能亮點在於可視化的CI、CD流程,代替了Jenkins的部分功能,不過個人感覺簡化了的可視化發布向導,方便得同時有失靈活性。
阿里雲容器服務平台、時速雲和DaoCloud差不多:包括構建源代碼將應用打包成容器鏡像、將容器部署到雲端、鏡像倉庫管理、服務編排、平台對運行的容器及集群進行調度管理、支持負載均衡及數據卷等功能。可以說把Dev階段和Ops階段連接起來了,但是更側重於Ops階段的容器管理。
網易蜂巢:功能純粹只管Ops階段,支持用戶把鏡像提交到鏡像倉庫,然後在平台上部署容器、並提供容器調度及負載均衡等操作。
容器服務平台針對運維階段應該具備的重點功能:
Google在很早以前就已經把容器應用到生產運維環境了,目前,包括騰訊、新浪、京東在內越來越多的國內互聯網企業已經在生產環境中受益於容器的輕量和敏捷性,大幅提高了運維資源使用效率,據京東員工發布的技術文章提到:今年618核心業務都容器化了。因而主流的容器服務平台都在容器彈性調度和容器集群管理方面下功夫,具體來說對於運維的支持以下功能是必不可少的:
i. 鏡像倉庫:鏡像倉庫中需要具有較為豐富的基本鏡像;並且支持用戶高速的上傳、下載鏡像,並且鏡像倉庫需要有一定的許可權控制;
ii. 容器調度管理:容器實例的啟、停;容器集群資源管理;彈性伸縮;實例的failover;安全控制等。
iii. 相關容器組合的編排管理:包括容器的跨節點關聯、涉及到網路和數據共享等功能;容器集的動態生命周期和橫向擴展等功能,可實現例如資料庫集群部署等復雜的運行環境部署和管理。
iv. 服務發現相關功能:可以讓一個應用或者組件動態發現其運行環境以及其它應用或組件的信息,主要場景如負載均衡、環境變數的更新等功能。
v. 運行環境的日誌、監控和告警:為保證生產環境正常運行,容器實例及其主機系統級別的日誌、監控和告警功能是必不可少的。
容器服務平台針對開發階段應該具備的重點功能:
隨著容器技術的興起,近1-2年容器技術大會也頻繁的召開,根據各家互聯網公司的積極分享的實踐經驗可知:容器重新定義了交付方式,大多數互聯網公司已經大規模的把容器引入了開發環節,採用容器交付應用。實踐證明:容器的可移植性和良好的隔離性,能夠充分提高開發和發布效率。因為各家公司軟體開發使用的開發工具和開發流程不同,具體在開發階段基於容器實現快速開發、部署的功能並沒有標准化。這里梳理一下開發階段的容器服務平台應該具有的功能:
i. 提供基礎的開發環境,使得開發者只需要關注代碼開發減少相關工具的安裝和配置工作量:例如本項目用到的Git庫、Docker鏡像倉庫、禪道、wiki、jenkins等工具;
ii. 利用自動化工具及持續集成工具如Puppet、chef或者原生的腳本、jenkins、Dockerfile等工具,實現自動化的持續集成和持續發布,簡化運維工作;
iii. 提供各類服務的容器鏡像,可在平台上快速部署開發所需要的服務,並且支持通過環境變數綁定服務;
iv. 實現開發環境、測試環境以及生產環境的隔離以及環境的快速搭建和回收;
v. 持續集成、部署的日誌和監控、告警等。