發表於2024-11-10
容器技術能夠顯著提高軟件運行、部署的效率,方便係統資源的管理。
CoreOS Container Linux是專門為容器設計的輕量級Linux操作係統,適閤集群部署,為關鍵的應用程序提供自動化、安全性和可伸縮性。
讀者對象是係統管理員、軟件工程師以及對構建可擴展容錯係統感興趣的人。
《CoreOS實戰》介紹CoreOS的生態係統與組件,如何在本地和雲係統中設置CoreOS,然後逐步完善一個容器應用開發實例,最後介紹係統管理。
《CoreOS實戰》是在CoreOS Container Linux上部署基於容器的係統的清晰指南。在其中,讀者將看到一些講解如何同時在私有基礎設施和雲係統中設置CoreOS的示例,並且可以使用真實的代碼來實踐常規的監控和升級技術。讀者還將探究重要的容器感知的應用程序設計,其中包括微服務、Web和大數據示例,通過真實用例將讀者所學知識轉換成自有觀點。
Matt Bailey目前是 ZeniMax 的技術主管。Matt Bailey擁有15年的IT從業經驗,他具有從大規模計算集群架構到前端編程的豐富知識。
正如《CoreOS實戰》的許多讀者一樣,我也是作為Linux和UNIX係統以及網絡的係統管理員而開啓技術行業職業生涯的。另外,就像許多人一樣,我從未對可用的自動化程度感到滿意過,也從未對其無條件信任過。我們中的一些人或多或少使用過CFEngine、Puppet和Chef來進行管理,並且使用我們的技術進行更嚴謹的工程設計和承擔較少的係統管理工作。之後容器變得流行起來,並且CoreOS的發布大規模地填平瞭容器與係統管理之間的溝壑。
我是在2013年末CoreOS剛剛問世時開始使用它的。它是一款大部分係統管理員都認為遲早會齣現的OS。它提供瞭一種集成方式,以便將服務編製為從其所運行的計算資源池中提取的抽象。Manning齣版社在2015年末開始聯係我,想要知道我是否有興趣編寫一本CoreOS方麵的書籍,我接受瞭這個提議並且開始奮筆疾書。當我由於這個項目而無法在業餘時間陪伴我的孩子們時,我也感到愧疚。這是我的第一《CoreOS實戰》,我發現,內容構思以及在Vim中輸入這些內容並不是最難的部分,最難的是同時找到充滿動力的書籍編寫時間和不受打擾的自由時間。而這種情況很少會同時齣現,尤其是在傢有幼兒的情況下。
我希望《CoreOS實戰》能夠引導讀者並且為讀者帶來一些挑戰。從某種程度上說,這《CoreOS實戰》的內容發展遵循瞭我職業生涯的發展軌道以及此技術領域的發展軌道。具體而言,CoreOS和類似的係統都旨在將單調乏味的運營工作轉變成軟件開發,並且將係統管理救火式的工作轉變成聲明式的工程設計。因此,《CoreOS實戰》是從基礎組成部分開始介紹的,並且以完整的軟件棧作為結束。
關於《CoreOS實戰》《CoreOS實戰》為應用程序架構、係統管理員以及尋求如何在不犧牲開發工作流或者運營簡單性的情況下進行規模化計算的信息的人提供瞭一個有效資源。CoreOS及其組件套裝提供瞭一種切實可行的方法來進行係統設計,其中高可用性、服務發現以及容錯性變得不難實現,並且從一開始就成為核心基礎設施和應用程序架構的組成部分。CoreOS和它所倡導的概念對於開發人員和運營專傢來說都是有用的,CoreOS意識到在某種程度上容器化的意圖正變得更易於投入運營、維護和迭代。
如果讀者正在閱讀《CoreOS實戰》,那麼大概已經注意到瞭,技術領域的普遍行動就是分解竪井並且將開發和運營這兩方麵結閤到一起。在許多組織中,運營專傢和應用程序架構師的角色正在被結閤成一個角色,例如開發運營(DevOps)或者站點穩定工程(Site Reliability Engineering)。因而,一些人可能最終麵臨知識缺口。有時候,《CoreOS實戰》可能看起來使用更高級的主題組閤瞭對讀者而言顯而易見的信息,不過那是因為我在嘗試為可能不具備成功使用CoreOS所需的部分基礎知識的人提供完整的全局觀念。
《CoreOS實戰》讀者對象《CoreOS實戰》的讀者對象是係統管理員、軟件工程師以及對構建可擴展容錯係統感興趣的人。《CoreOS實戰》研究瞭使用CoreOS進行運營化和構建服務的軟件架構;如果讀者有興趣瞭解構建可擴展的具有容錯性的係統,那麼《CoreOS實戰》就是很好的資料來源。
《CoreOS實戰》中並沒有大量的功能性代碼——我基本上是在介紹配置文件以及一些用於Amazon Web Services的YAML模闆。對於Bash和通用Linux係統管理的基礎理解應該就足以讓讀者入門瞭。在《CoreOS實戰》後麵的內容中,會提供具有JavaScript前端的Node.js示例,不過JavaScript經驗並不是必要的。
在描述《CoreOS實戰》章節之前,先介紹一些技術背景知識。
背景介紹大約從2008年開始,擴展係統以便滿足組織顧客的需要已經催生瞭包括服務、工具和谘詢公司的整個行業。這些行業的最終目標一直都是管理具有較少資源的更大規模的係統——並且要非常快速地進行管理。這些平颱即服務(Platform-as-a-Service,PaaS)、基礎設施即服務(Infrastructure-as-a-Service,IaaS)以及配置管理套件都旨在將係統管理的重擔轉換成自動化係統,這樣組織纔能“輕易地”從規模化目標中將IT人力資源釋放齣來。其理念可以用一個比喻來形容(這個比喻是由Bill Baker提齣的,這是我能找到的最貼切的比喻),我們應該將基礎設施當作傢畜而非寵物來對待。也就是說,計算資源單元是日用品或電器,而非具有名稱的獨立的、精心維護的服務器。當傢畜齣現問題時,我們會處理掉它們;而在寵物生病時,我們需要對其進行護理以便它們恢復健康。我們應該充分利用自動化,並且不應該過多關心是否必須進行重構;這樣做應該是容易並且可復製的。
不過現實情況是,嘗試達成這些可復製性和瞬時性目標通常會極其復雜。這樣做的具體方式會變成竪井邏輯和工作流的黑盒,即使是在使用廣泛引用的工具也會如此。像Chef和Puppet這樣的配置管理係統對於此復雜性而言尤其脆弱——不是因為它們的設計就是如此,而是因為組織通常會遇到阻礙(技術性和非技術性的),而這些阻礙的最終解決都是以與這些工具的最佳實踐完全無關的方式來處理的。在IaaS領域,組織通常會像處理其現場資源那樣處理其公有雲計算資源,這主要是因為IaaS具有允許這樣做的靈活性,即使這樣做會導緻係統不可維護。下麵介紹容器。
容器LXC是在Linux用戶空間中創建虛擬化運行時的早期實踐。與chroots和jails相比較,它是一種比較重的抽象,但又比完全虛擬化輕。在Docker於2013年推齣並且圍繞LXC技術增加大量特性之前,很少有人使用過或者聽說過LXC,最終,Docker用自己的組件完全替換瞭LXC的組件。在我看來,大體而言,Docker和容器化解決瞭虛擬化打算解決的問題:關注點的簡單隔離、係統的復製以及不可變的運行時狀態。其優勢很明顯:依賴性管理變得被輕易包含其中;運行時是標準化的;並且其方法對開發人員足夠友好,開發和運營可以使用相同的工具,且每個字節都在使用同一容器。因此,我們已經越來越少地聽到“它僅對我適用,而不適用於生産”這樣的話瞭。CoreOS在某種程度上正是此計算模型的運營化,它利用瞭在通用、分布式係統模型中容器化的優勢。
《CoreOS實戰》從頭至尾都在介紹如何利用此計算模型的優勢。讀者將瞭解如何同時在原型環境和雲端生産環境中部署和管理CoreOS。還將瞭解到如何設計和調整應用程序棧以便它能在此上下文中很好地運行。除瞭該OS,還將詳細介紹CoreOS的每個組件及其應用:etcd用於配置和發現,rkt用於另一種方式的容器運行時,fleet用於分布式服務調度,flannel用於網絡抽象。
分布式計算並非新概念;許多用於分布式係統的模型和軟件包自從計算的廣泛應用開始就已經問世瞭。不過這些係統中的大多數模型和軟件包都不為人所知,具有高度的專屬權,或者隔絕在像科學計算這樣的特定行業中。最老的一些設計如今仍然存在的唯一原因就是支持20世紀70年代的遺留係統,它們為大型機和小型機驅動著分布式計算。
CoreOS背後的曆史與推動因素單係統映像(Single System Image,SSI)計算的概念是一種OS架構,自20世紀90年代以來並沒有看到它有多麼活躍,它隻在一些長期支持遺留係統的場景中得到瞭應用。SSI是一種架構,它將集群中的多颱計算機作為單一係統來提供。其中有單一的文件係統、通過共享運行時空間來共享的進程間通信(Interprocess Communication,IPC),以及進程檢查點/遷移。MOSIX/openMosix、Kerrighed、VMScluster和Plan 9(原生支持的)都是SSI係統。Plan 9上大概曾進行過大部分當前的開發活動,這應該錶明瞭此計算模型當初的流行性。
SSI的主要缺陷在於,首先,這些係統通常難以配置和維護,並且並非旨在實現通用性。其次,該領域的發展已經明顯停滯瞭:SSI中沒有什麼新東西齣現,並且它已經無法跟上發展以用作一個流行模型。我認為這是因為科學和其他大數據計算已經擁抱瞭網格計算,比如像Condor、BOINC和Slurm這樣的批處理操作模型。這些工具旨在在集群中運行計算任務並且交付結果;SSI的共享IPC無法為這些應用程序提供多少好處,因為數據傳輸的(時間)成本超過瞭阻塞式批處理過程的成本。在應用程序服務棧的領域中,通過像HTTP這樣的協議的抽象以及分布式隊列也讓人們不再值得對共享IPC進行投入。
目前,對於分布式計算而言,問題域是如何有效管理大規模的係統。無論我們是在使用Web棧還是分布式批處理,可能都不需要共享IPC,不過SSI帶來的其他內容具有更多顯而易見的價值:共享文件係統意味著我們僅需要配置一個係統,並且進程檢查點和遷移意味著結點都是可丟棄的並且“更類似傢畜”。在不使用共享IPC的情況下,這些解決方案會難以實現。一些組織轉而使用將配置應用到多颱機器的配置管理係統,或者設置復雜的具有完全自定義邏輯的監控係統。根據我的經驗來看,配置管理係統無法達成目標,因為它僅會完全確保運行時的所有狀態;在它們運行完成之後,狀態就會變成未知。這些係統更專注於可復製性而非一緻性,這是一個好的目標,但無法提供通過分布式文件係統進行共享配置的可靠性。嘗試同時管理進程的監控係統通常要麼特定於應用程序,要麼難以實現和維護。
無論是有意或無意,像Docker這樣的容器係統都為重新利用SSI的優勢奠定瞭基礎,而不需要實現共享的IPC。Docker確保瞭運行時狀態,並且提供瞭從OS中抽象齣來的執行模型。“不過,”大傢可能會想,“這完全與SSI相反。現在每一個獨立的係統甚至都具有瞭更為隔離的配置和運行時,而非共享式的!”的確,此方法是不相關的,不過它實現瞭相同的目標。如果運行時狀態僅被定義一次(比如在Dockerfile中),並且在整個容器生命周期中都對其進行維護,那麼我們就達成單點配置的目標。並且,如果可以同時遠程和獨立於其運行之上的OS與集群結點來編製獨立進程狀態的話,我們就達成通用服務在集群範圍內的進程調度這一目標。
意識到那些可能性就是需要獨立於容器化係統之外的工具的地方。這正是CoreOS及其係統套件發揮作用的地方。CoreOS提供瞭足夠的OS以供運行一些服務;其餘的都是由etcd和fleet的編製工作來處理的—— etcd提供瞭分布式配置,從中容器可以定義其運行時特徵,而fleet管理著分布式初始化和容器調度。從內部看,CoreOS也使用etcd來提供分布式鎖以便自動管理OS升級,這轉而又會使用fleet在整個集群中平衡服務,這樣結點就可以自行升級瞭。
《CoreOS實戰》路綫圖第1章首先簡要介紹CoreOS生態係統。我提供瞭容器OS中核心係統的一些闡釋,以及一個並非真正旨在用於執行而是揭示這些部分如何適配到一起的簡要示例。
第2章介紹設置一個本地CoreOS環境的過程,我們將在《CoreOS實戰》大部分後續內容中使用它作為沙盒。這也是人們在現實環境中使用的過程,以便為CoreOS構建組件,因此進一步關注該章的內容會是一個好的做法。
第3章講解與CoreOS容錯性和係統升級的方式有關的內容,並且介紹設置一個容錯性Web應用的處理步驟。我們在《CoreOS實戰》其餘內容中基於這個“Hello World”進行構建。
第4章探討瞭現實世界的需求和CoreOS生産部署的目標,以及與如何處理集群中分布式文件係統選項有關的一個現實示例。
第5章會研究十二要素應用方法論以及如何將之應用到希望在CoreOS中部署的應用程序棧上。該章會以如何在第6章中應用此方法論的概述作為結束。
第6章將第3章的示例擴展成一個具有許多層的更為真實的Web應用。我們還將引入一個持久化數據庫層。
第7章使用瞭第6章的持久化層並且深入探究瞭如何讓它具有容錯性和在所有集群機器中的可擴展性。
第8章深入研究Amazon Web Services(AWS)中CoreOS的實踐部署。
第9章講解如何使用第6章和第7章中所構建的整個軟件棧,並且以自動化方式將它部署到第8章所構造的AWS環境中。
第10章通過探討CoreOS的係統管理部分總結瞭《CoreOS實戰》內容,其中包括日誌記錄、備份、擴展以及CoreOS的新rkt容器係統。
源代碼下載《CoreOS實戰》中所有示例的源代碼,包括一些非常長的AWS模闆,都可以在www.manning.com/ books/coreos-in-action下載。也可掃描封底的二維碼下載源代碼。
作者簡介Matt Bailey目前是ZeniMax的技術主管。他曾緻力於高等教育行業,並且曾供職於科學計算、醫療和網絡技術公司,以及一些初創型公司。讀者可以通過http://mdb.io以在綫方式聯係他。
作者在綫購買瞭《CoreOS實戰》的讀者可以免費訪問Manning齣版社所運營的一個私有網絡論壇,讀者可以在其中對《CoreOS實戰》進行評論,提齣技術問題,並且接受來自作者和其他讀者的幫助。要訪問該論壇並且進行訂閱,可以將Web瀏覽器導航到www.manning.com/books/ coreos-in-action。這個頁麵提供瞭相關的信息,其中包括如何在注冊之後登錄該論壇,可以得到哪些幫助,以及該論壇上的行為準則。
Manning齣版社對於讀者的承諾旨在提供一個場所,其中讀者與讀者之間以及讀者與作者之間可以展開有意義的對話。作者方麵的參與程度是無法得到保證的,但對於作者在綫的貢獻仍舊是自願的(並且免費的)。我們建議讀者嘗試嚮作者提齣一些具有挑戰性的問題以免他沒興趣關注!
隻要《CoreOS實戰》還在印刷,就可以從齣版商的網站上訪問作者在綫論壇和前述探討內容的歸檔。
《CoreOS實戰》封麵介紹 CoreOS實戰 下載 mobi epub pdf txt 電子書 格式CoreOS實戰 下載 mobi pdf epub txt 電子書 格式 2024
CoreOS實戰 下載 mobi epub pdf 電子書CoreOS實戰 mobi epub pdf txt 電子書 格式下載 2024