最近2個星期在嘗試用OpenStack搭建私有云,提供方便的虛擬機部署和管理。寫一篇博客記錄一下相關資料。
1. OpenStack簡介
OpenStack是一個開源軟件,它提供了一個部署雲的平臺。爲虛擬計算或存儲服務的公有/私有云,提供可擴展的、靈活的雲計算。
OpenStack包含了一組由社區維護的開源項目,主要項目有Compute(Nova), Object Storage(Swift),Image Service(Glance)。
Nova提供虛擬計算服務,Swift提供存儲服務,Glance提供虛擬機鏡像的註冊、分發服務。
他們之間的關係能夠用這個簡圖來表示:
2. OpenStack可以作什麼
OpenStack能幫咱們創建本身的IaaS,提供相似Amazon Web Service的服務給用戶:
普通用戶能夠經過它註冊雲服務,查看運行和計費狀況
開發和運維人員能夠建立和存儲他們應用的自定義鏡像,並經過這些鏡像啓動、監控和終止實例
平臺的管理人員可以配置和操做網絡,存儲等基礎架構
3. OpenStack Compute(Nova)的軟件架構
下圖是Nova的軟件架構,每一個nova-xxx組件是由python代碼編寫的守護進程,每一個進程之間經過隊列(Queue)和數據庫 (nova database)來交換信息,執行各類請求。而用戶經過nova-api暴露的web service來同其餘組件進行進行交互。Glance是相對獨立的基礎架構,nova經過glance-api來和它交互。
4. Nova各個組件的做用
nova-api是Nova的中心。它爲全部外部調用提供服務,除了提供OpenStack自己的API規範外,他還提供了兼容EC2的部分API,因此也能夠用EC2的管理工具對nova進行平常管理。
nova-compute負責對虛擬機實例進行建立、終止、遷移、Resize的操做。工做原理能夠簡單描述爲:從隊列中接收請求,經過相關的系統命令執行他們,再更新數據庫的狀態。
nova-volume管理映射到虛擬機實例的卷的建立、附加和取消。
nova-network從隊列中接收網絡任務,而後執行任務控制虛擬機的網絡,好比建立橋接網絡或改變iptables的規則。
nova-scheduler 提供調度,來決定在哪臺資源空閒的機器上啓動新的虛擬機實例
Queue爲守護進程傳遞消息。只要支持AMQP協議的任何Message Queue Sever均可以,當前官方推薦用RabbitMQ。
SQL database存儲雲基礎架構中的各類數據。包括了虛擬機實例數據,網絡數據等。
user dashboard是一個可選的項目。它提供了一個web界面來給普通用戶或者管理者來管理、配置他們的計算資源。
5. Nova的硬件架構
Nova採用無共享、基於消息的架構,咱們能安裝每一個nova-xxx組件在單獨的服務器上,這樣能夠根據不一樣目的進行不一樣的配置安裝
單結點:一臺服務器運行全部的nova-xxx組件,同時也驅動虛擬實例。這種配置只爲嘗試Nova,或者爲了開發目的進行安裝。
1控制節點+N個計算節點:一個控制結點運行除nova-compute外的全部nova-services,而後其餘compute結點運行 nova-compute。全部的計算節點須要和控制節點進行鏡像交互,網絡交互,控制節點是整個架構的瓶頸,這種配置主要用於概念證實或實驗環境。
多節點:增長節點單獨運行nova-volume,同時在計算節點上運行nova-network,而且根據不一樣的網絡硬件架構選擇DHCP或者VLan模式,讓控制網絡和公共網絡的流量分離。
6. OpenStack的安裝
OpenStack的安裝是比較麻煩,能夠參考官方文檔進行: http://docs.openstack.org/diablo/openstack-compute/admin/content/ , 文檔有一些地方沒有更新到最新版本,會遇到一些小問題,推薦一個第3方腳本進行安裝: http://devstack.org/ 它適合用來搭建實驗環境。能夠經過閱讀這個腳本,同時配合官方文檔來理解整個軟件架構。
同時經過Ubuntu源安裝的nova在實際使用過程當中遇到一些小問題,都須要打補丁來解決,建議瞭解整個配置之後,能夠改爲從git上獲取stable分支的代碼進行安裝,這樣往後維護升級也比較方便。
若是你須要從無到有搭建整個數據中心,推薦Crowbar實現自動化遠程安裝: https://github.com/dellcloudedge/crowbar 從裸機到可用系統只用在web界面點擊幾下便可完成,還自帶各類SA經常使用功能(好比nagios監控等),不過這個東西也比較複雜,推薦有興趣的SA們試 用。
7. 遇到的問題
官方文檔和devstack腳本基本上都是爲了搭建實驗環境寫的,沒有爲生產環境作最佳實踐的指導,在安裝過程當中遇到不少問題,好比:
A. 多節點部署的時候要用multi host參數
B. 使用VLAN+硬件網關的時候作網絡配置時候,須要指定dnsmasq_config_file來強制覆蓋dnsmasq的網關配置
C. 用KVM製做windows鏡像的時候須要安裝virtio驅動
D. 經過Ubuntu源安裝的Nova,在Ami格式的鏡像啓動的instance沒法作snapshot,須要打
補丁
E. 經過Ubuntu源安裝的Nova,在啓用keystone進行身份認證的狀況下,沒法提供EC2的兼容API,也須要打補丁
8. Openstack 的各類資料
A. 官網和wiki http://docs.openstack.org/
B. Devstack的腳本說明,對於瞭解如何配置各個組件很是有幫助 http://devstack.org/stack.sh.html
C. Rackspace的參考架構,有不少頗有用的信息,包括硬件,網絡,軟件配置等等,強烈推薦: http://www.referencearchitecture.org
D. 看你準備基於什麼技術進行虛擬化,KVM或者Xen的文檔也是頗有用的。
9. 展現
用dashboard管理虛擬機
經過noVNC在web上鍊接到虛擬機