為什么寫這本書OpenStack在云計算和IT基礎架構領域的影響力已毋庸置疑,從OpenStack社區成立至今,短短幾年時間里,其貢獻者和用戶已遍及全球各個地區和行業,OpenStack已然成為開源領域云計算的事實標準。近年來,國內OpenStack初創企業不斷涌現,華人企業和工程師在OpenStack社區中的影響力和貢獻占比不斷上升,以華為、中興為主的傳統IT企業在OpenStack社區不斷提升自己的影響力,并在社區的董事決策中占有一席之地。此外,99Cloud、United Stack、Easy Stack、UMCloud、AWCloud等OpenStack創業公司對Open-Stack的貢獻也處于全球領先的位置,可以說在國內云計算大潮的推動下,OpenStack正在不斷滲透并重構各個行業的IT架構。縱觀2016年,可將其看成是OpenStack在國內企業用戶中真正落地的元年,以國網、電信、移動和中海油等為主的大型國有企事業單位,以銀聯、郵蓄、興業數金和眾多地方商業銀行為主的金融企業,以上交、西交、東南大學和人民在線、山西農業云、湖北楚天云等為主的科研政企單位,以及上汽集團、復興醫藥等工業制造業都在部署或正式上線OpenStack私有云,當然還有更早便在使用OpenStack的諸多互聯網企業。OpenStack作為開放、包容的基礎架構云平臺,在國外更有像AT&T、CERN、PayPal、BMW、eBay和Walmart等重量級的大型用戶,以及IBM、HPE、Dell、Cisco、RedHat、Intel和Oracle等IT巨頭的參與。從全球目前的云計算環境發展趨勢而言,企業借助OpenStack構建私有云已成為多數用戶云化并重構數據中心的首要選擇。
自2010年OpenStack的Austin版本發布以來,歷經7年的時間,OpenStack社區已發行了第15個版本Ocata,其穩定性和功能在不斷增強。同時,在Liberty版本中引入“大帳篷”概念后,OpenStack以極為開放、包容的姿態不斷整合已有或新生的IT技術,尤其是對Ceph存儲和Docker容器技術的成功整合,真正顯示出其在云計算大潮下中流砥柱的地位和集成引擎的強大一面。盡管在這幾年的發展過程中也飽受指責、批評和詬病,同時還受到Docker后來居上甚至取而代之的威脅,但是OpenStack依然一路高歌向前,并以擁抱一切競爭對手的姿態不斷完善和鞏固自己的主導地位。時至今日,可以毫不夸張地說,在云計算領域,沒有OpenStack實現不了的功能,也沒有OpenStack整合不了的技術,或者說在開源領域,OpenStack已成為了云計算的代名詞。
OpenStack雖然如此火爆,但是想要實現面向生產環境的OpenStack高可用云計算環境卻并非易事,尤其對于高度依賴傳統IT架構的企業而言,服務高可用一直是企業部署和使用OpenStack難以跨越的鴻溝,而這也成為了OpenStack真正落地并走向普通企業用戶需要解決的“最后一公里”。OpenStack以開源共享的方式為用戶走向云計算提供了便捷之道,但是其內部組件之復雜、涉及技術棧之多、版本更新之快以及部署維護之困難往往也超出很多用戶的預期。圍繞這些問題,OpenStack社區孵化了很多新項目以期解決被詬病最多的入門困難、部署困難和維護困難等問題。但是為了實現OpenStack的自動化部署,這些項目無一不又重新引入了新的理論技術,并從其他維度增加了用戶使用OpenStack的學習和維護成本,而且這些項目并沒有很好地解決企業用戶最為關心的OpenStack服務高可用問題。以上種種,歸其原因,在于社區曾明確OpenStack的高可用應交由用戶的基礎架構軟件而非上層OpenStack項目來實現。因此,對于OpenStack企業用戶而言,在OpenStack社區上游功能交付和終端用戶部署實施之間一直橫亙著一個難題,即如何在使用OpenStack的過程中通過集成高可用基礎架構軟件,實現保證業務連續性的OpenStack高可用集群。
雖然目前各個OpenStack廠商都有自己的OpenStack高可用解決方案,但是采用廠商定制商業方案似乎有違使用OpenStack的初衷,而且市面上的OpenStack書籍多以Open-Stack理論講解和功能部署為主,卻沒有一本專門面向OpenStack高可用實施部署的中文書籍(雖然在OpenStack官方網站和其他互聯網站點中也能找到OpenStack高可用建設的相關資料,但是這些資料或者藏頭露尾,或者零散不全,且以英文資料居多)。秉承共享精神,為了給國內社區用戶,尤其是新入門的OpenStack用戶提供一套完整的OpenStack高可用部署參考方案,同時對OpenStack進行由底層基礎架構軟件至上層OpenStack核心組件的原理分析與高可用部署的一站式講解,我們決定編寫一本關于OpenStack高可用集群原理、部署與運維的書籍,對以OpenStack為核心的技術棧進行全面剖析,即從理論知識準備到高可用實戰操作,再到后期的高可用集群運維進行透徹的分析和介紹,同時圍繞OpenStack生態圈,對Ceph和Docker與OpenStack的集成應用進行實戰講解。希望本書能夠為企業用戶在OpenStack的應用部署中提供微薄之力。
本書的主要內容和特色本書分為上下兩冊,理論與實戰結合,全面講解了OpenStack的技術知識點。上冊講解了OpenStack相關的基礎架構軟件,如集群管理軟件Pacemaker、負載均衡及高可用軟件HAProxy和Keepalived、緩存系統Memcached和Redis、數據庫MariaDB和MongoDB以及消息隊列系統RabbitMQ等基礎軟件的理論知識,也可以了解到OpenStack三大核心組件—計算(Nova)、存儲(Cinder/Ceph)和網絡(Neutron)的架構原理及使用方式。
下冊從實戰角度講解了如何對OpenStack的基礎架構軟件和核心組件項目進行高可用集群部署,然后介紹了如何在實際應用中對OpenStack高可用集群進行運維分析與故障解決。
整體而言,本書從項目實施的角度,按照“理論基礎—實戰部署—后期運維”的方式進行循序漸進的講解,圍繞OpenStack生態圈,不僅介紹了OpenStack的組件項目,還對其依賴的基礎架構軟件進行了完整介紹,同時對當前較為熱門的Ceph和Docker在OpenStack中的集成應用也進行了分析和實戰演示。
本書面向的讀者書中以Linux系統運維為基礎,通過Pacemaker集群軟件為各項服務提供高可用性,涉及負載均衡、數據庫、緩存系統、消息隊列和云計算領域的存儲、網絡以及計算資源虛擬化等諸多知識點,是一本整合了OpenStack生態圈的技術書籍,非常適合OpenStack入門初學者、運維工程師和Open-Stack高可用架構工程師及Ceph存儲管理員等從業人員閱讀。
此外,本書也適合高校在讀本科生或研究生用作OpenStack研究、部署和實踐的參考書。通過對本書的學習,讀者將可以從OpenStack入門級別走上高可用OpenStack生產項目實施和運維工程師的臺階。
如何閱讀本書閱讀本書之前,讀者應該具備一定的KVM虛擬化知識、SAN網絡或分布式存儲知識以及Linux系統運維、集群管理和高可用相關方面的基礎知識。由于篇幅較多,本書分為上、下兩冊,其中上冊包括第1~10章,下冊包括第11~15章,按照架構篇(第1~2章)、原理篇(第3~10章)、部署篇(第11~12章)、運維篇(第13~14章)以及擴展篇(第15章)的結構進行編排,讀者如果僅關注于某個階段的參考學習,可直接參考目錄結構進入相關章節。按章節順序,本書講述了如下內容。
第1章描述了云計算建設的必要性,同時對用戶在公有云與私有云之間的決策提供建設性的參考,并對企業實施云計算的進階路線提供指引和參考架構,此外還對傳統IT架構和云計算環境下的高可用架構設計進行了介紹。
第2章對OpenStack高可用架構的功能組件和集群核心服務項目進行了介紹,還對Redhat和Mariantis兩大OpenStack領導廠商的高可用架構進行了詳細介紹,并與其他OpenStack廠商的高可用架構進行了對比分析。
第3章介紹了OpenStack高可用架構中的集群資源管理器Pacemaker的原理、架構和使用方法。
第4章介紹了OpenStack高可用架構中的集群負載均衡與高可用軟件HAProxy和Keepalived的原理、架構和使用方法。
第5章介紹了OpenStack高可用集群中的消息隊列系統RabbitMQ的原理、架構和高可用配置與使用方法。
第6章介紹了OpenStack高可用集群中的緩存系統Memcached和Redis的原理及使用方法。
第7章介紹了OpenStack高可用集群中的關系型數據庫MariaDB和非關系型數據庫MongoDB,同時對這兩種數據庫的高可用配置與使用方法進行了詳細介紹。
第8章介紹了OpenStack高可用集群中核心服務之一的計算服務Nova項目,對Nova的架構原理、使用配置以及服務高可用均進行了詳細介紹。
第9章介紹了OpenStack高可用集群中核心服務之一的網絡服務Neutron項目,對Neutron的插件式架構、高可用配置以及不同的Neutron網絡模式及其使用方法進行了詳細介紹。
第10章介紹了OpenStack高可用集群中核心服務之一的塊存儲服務Cinder和Ceph分布式存儲集群,對Cinder塊存儲的架構、配置和多后端存儲及其使用進行了詳細介紹,同時對Ceph在OpenStack中的集成使用進行了實戰演示。
第11章介紹了OpenStack基礎架構組件的高可用部署,以實戰部署的方式講解了如何通過Pacemaker集群部署高可用的OpenStack基礎服務組件。
第12章介紹了OpenStack核心服務組件的高可用部署,以實戰部署的方式講解了如何通過Pacemaker集群部署高可用的OpenStack核心服務組件。
第13章介紹了如何運維基于Pacemaker的OpenStack高可用集群,并對Neutron網絡和Nova計算服務的高可用性進行了詳細分析。
第14章介紹了Ceph分布式存儲集群的運行維護經驗,并提供了如何配置和自定義使用Ceph集群的參考。
第15章介紹了如何通過Docker容器與OpenStack集成項目Kolla進行OpenStack的容器化部署,同時對OpenStack的Kolla項目進行了詳細介紹。
勘誤和資源在本書的寫作過程中,筆者參考了很多OpenStack官方社區的資料和歷屆OpenStack峰會的討論文檔與視頻,同時也參考了很多開源軟件的官方資料和技術專家的經驗分享,誠懇希望能為OpenStack愛好者與從業者呈現一本涵蓋基礎理論與高可用實戰部署和運維的參考書籍。但是由于OpenStack社區版本變化之快,使得任何OpenStack相關書籍都難以跟上每年兩次的OpenStack發行版本,加之筆者水平有限,書中難免存在技術延后和謬誤觀點,若書中有任何不妥之處,懇請讀者批評指正。讀者可將意見發送至郵箱ynwssjx@126.com或者通過微信公眾號“OpenStackGeek”進行反饋,我們將實時跟進OpenStack社區的發展變化,并吸取讀者的寶貴意見。另外,本書涉及的OpenStack高可用集群部署源代碼已全部上傳至GitHub,讀者可以從網站https://github.com/ynwssjx/Open-Stack-HA-Deployment下載查看并參考實現。
致謝開源共享是人類歷史上最偉大的精神之一,在此向Linux創始人和開源精神領袖 Linus Torvalds致敬,向OpenStack項目發起者NASA和Rackspace致敬,向OpenStack社區所有參與者和無私的代碼貢獻者致敬。
本書的編寫歷時半年有余,在工作和生活極為繁忙的階段,筆者仍然堅持每日查閱資料和整理文章,期間得到了招商銀行很多同事和領導的關心,同時也得到了很多IBM前同事和領導的支持,在此一并謝過。正是你們的關心和支持,才使得我在繁忙的工作之余仍然懷著一顆敬畏之心進行寫作。
在本書的策劃和寫作期間,機械工業出版社華章分社的楊福川先生和李藝女士給予了極大的關心和幫助,在此感謝楊福川先生對本書的策劃和李藝女士對全文的審閱校對,正是你們的辛勤付出才有了本書的問世。
另外,還要感謝我的妻子楊彩鳳女士在寫作期間對我生活上的照顧與理解,在多少個深夜與凌晨,正是你的理解與支持讓我能全身心地投入寫作中。在此也要感謝我的父母,感謝你們的默默養育和辛勤付出。在本書的寫作期間,奶奶的仙逝是我最大的悲慟,謹以此書慰藉奶奶的在天之靈,您一世的慈祥我將永遠銘記。
最后,感謝所有為本書的編寫提供了幫助、支持與鼓勵的朋友們,感謝陳沙克、劉世民、吳業亮等無私分享博文的技術愛好者,感謝所有為OpenStack社區無私奉獻的企業和志愿者。相信在開源精神的共鳴下,OpenStack一定會變得更好!