OneStack:Ubuntu 12.04 上一鍵自動部署 OpenStack

前幾天 OneStack 項目 的作者 Kayven 在 vpsee.com 上留言談到了 OneStack,一個國人的 OpenStack 一鍵安裝工具,在 vpsee 的忽悠下 Kayven 終於同意寫一篇 OneStack 的介紹性文章,如果大家對手動安裝配置 OpenStack 有恐懼的話可以試試這個 OneStack 一鍵安裝工具,類似的項目還有 DevStack.

大家如有問題歡迎參與討論或聯繫原作者 Kayven ([email protected]). 以下內容來自 Kayven:

在發表了 OneStack: Ubuntu 12.04 (“Precise”) 一鍵安裝部署雲計算平臺 OpenStack Essex 這篇文章、公佈了 OneStack 這個項目後,受到一些人的關注和邀請,誠惶誠恐,非常感謝大家的支持,下面將對這個項目進行更詳細的介紹。

OneStack 的引入

爲什麼需要 OpenStack?作爲衆多雲計算項目的一個,OpenStack 很火。

一是因爲 OpenStack自身的優勢、Apache2.0 授權的開源性以及兼容性、靈活性和可擴展性等優點;
二是衆多企業和組織的參與開發,尤其是世界領軍企業的加入,推動了 OpenStack 的高速成長。

爲什麼需要 OneStack?類似項目有 DevStack,但是使用 DevStack 有如下問題:

部署過錯的可定製性和靈活性不是太好,自己只能選擇安裝哪些服務,如果中間遇到問題或者自己想調整就比較麻煩;
使用 screen 管理運行 OpenStack,重啓服務器需要用 screen 進入,很多人以爲有些服務會停止或者希望不使用 screen,於是自己 kill 服務並自己手動開啓,容易出各種問題(OpenStack 由很多獨立組件和服務組成,注意不要遺漏);
沒有提供重啓、重置、清空數據庫等有用功能,還稍顯複雜;
而且,使用 DevStack 後還是不清楚整個部署過程是怎樣的,自己不能安裝官方安裝文檔來實驗和嘗試;
由於組件獨立分散,安裝過程過於繁瑣,可以抽象成通用的項目供大家方便使用;
官方提供了一個比較完善的入門文檔,但是,按照這幾十頁的步驟下來需要做很多無用功,容易漏錯而引起很多莫名和頭疼的問題;
本項目希望不只是提供實驗環境,更可以實際部署使用,可以自己修改配置,按需增加組件和功能,實現一鍵部署,可擴展、可添加任意計算節點。

爲什麼需要一鍵自動部署工具?

很多人首先希望嘗試一下 OpenStack,做做實驗,弄清楚具體怎麼實踐。官方文檔的一大堆步驟會讓人忘而生畏;同時又不想部署好後都不知道到底怎麼做的,像 DevStack 這樣封裝比較難看懂,也就難自己修改。OneStack 能夠很好的自動部署,同時又能靈活的實驗,對於大部分嘗試者是個很好的途徑。

爲什麼使用 Ubuntu 12.04?

OpenStack 官方指定的操作系統是 Ubuntu,當然也可以使用其他的,比如 CentOS,不過安裝過程有可能會不同。OpenStack 目前主要是以 Ubuntu 版本 Linux 系統爲基礎寫成的,而且很多測試和文檔都是在 Ubuntu 下完成的,所以在 Ubuntu 下部署將會有很多便利。另外,Ubuntu 12.04不僅是LTS(長期支持版本),還可以得到五年的支持,對於開發者是個不錯的平臺。

OneStack 的項目結構

  • oneStack.sh(一鍵部署 all-in-one 的 OneStack,最主要文件);
  • addComputeNode.sh(增加計算節點);
  • delStack.sh(只卸載nova、glance、keystone等);
  • delAll.sh(卸載所有安裝的組件和工具);
  • resetStack.sh(清空數據庫,鏡像、網絡和實例等);
  • addClient.sh(添加客戶端,nova管理等);
  • setup_base.sh(安裝基本系統);
  • setup_test.sh(添加鏡像和實例);
  • HAStack 目錄(OneStack 的高可用性,希望更多人可以提出自己的解決方案)。

OneStack 的安裝部署

可以一鍵自動部署 all-in-one 的 OneStack 實驗環境,也可以分步驟部署(下次再討論分步驟部署)。
一鍵自動部署最簡單,只需要文件 oneStack.sh 把所有服務安裝到一個機器。

# wget http://onestack.googlecode.com/files/oneStack.sh && \
chmod +x oneStack.sh && ./oneStack.sh

如果需要更多功能,需要 chechout 整個 svn;當然,安裝同樣只需要 oneStack.sh
1、安裝 Ubuntu Precise (12.04);
2、下載 OneStack 腳本:

# svn checkout http://onestack.googlecode.com/svn/trunk/ onestack-read-only

3、運行 OneStack:

# cd onestack-read-only/ && ./oneStack.sh

注意:其實上面的安裝還是需要更改網絡配置的(其餘可以不改,這個是需要改成你自己的)因爲,爲了簡單,在上面的工具裏,所有前期工作都加到了文件 oneStack.sh,比如:

  • root 用戶密碼設置(剛安裝的 Ubuntu 默認不啓用這個 root 用戶);
  • apt 源的配置,可以設置爲國內的 163、ustc 的源等;
  • 網絡配置,控制節點是需要外網 ip 的,你需要更改oneStack.sh裏面的一些配置:/etc/network/interfaces 裏面雙網卡的 ip、網關等,在腳本靠前的位置,請查找 interfaces. 參數設置:外網 ip 地址等,這些也都在腳本開頭一個塊裏面。自行檢查下面 network/interfaces 的兩個網卡設置:
    ## 2、自行檢查下面 network/interfaces的兩個網卡設置
    + OUT_IP=192.168.139.50 
    + OUT_IP_PRE=192.168.139
    ...
    
  • 選擇虛擬機技術,裸機使用 kvm,虛擬機使用 qemu 即可
    ## 選擇虛擬技術,裸機使用 kvm,虛擬機裏面使用 qemu
    VIRT_TYPE=”qemu”
  • 數據庫的安裝和配置,爲了自動化部署,參數設置裏面設置好帳號和密碼,後面就不需要交互;## 配置 /etc/nova/nova.conf,這裏與控制節點的配置相同!比如ip是控制節點的ip
    MYSQL_PASSWD=${MYSQL_PASSWD:-”cloud1234″}
    NOVA_DB_USERNAME=${NOVA_DB_USERNAME:-”novadbadmin”}
    NOVA_DB_PASSWD=${NOVA_DB_PASSWD:-”cloud1234″}
  • 系統會安裝 Ubuntu 12.04 的鏡像,並啓動一個實例。這個過程中鏡像自動從 Ubuntu 官網下載,可以查找 cloud-images 更換地址或者鏡像 precise-server-cloudimg-amd64-disk1.img,也可以註釋掉這個步驟,直接使用 dashboard 在 web 添加鏡像啓動實例。這個鏡像有700多 MB,對於網速不好的用戶,可能需要較長時間,因此可以先下載好鏡像,然後把這裏的地址改成本地即可。

總結一下需要設置的參數:

  • 設置 root 密碼這一步可以刪掉,使用 root 執行即可;
  • 可選,如果不需要跳過本步驟
    系統語言設置,可以參考oneStack.sh locale部分,不在此介紹
    設置apt源 /etc/apt/sources.list
  • 設置網絡
    /etc/network/interfaces
    可以參考oneStack.sh locale部分
  • 配置參數,除了網絡ip,其它可以不變
    ## 數據庫
    MYSQL_PASSWD=${MYSQL_PASSWD:-”cloud1234″}
    ## 自行檢查下面network/interfaces的兩個網卡設置與此處一致
    OUT_IP=”192.168.139.50″
    ## 選擇虛擬技術,裸機使用kvm,虛擬機裏面使用qemu
    VIRT_TYPE=”qemu”
    ## token, 登錄dashboard密碼
    ADMIN_TOKEN=”admin”
  • 然後執行./oneStack.sh安裝即可。

OneStack 的展望

1、加入高可用性 OpenStack 的部署
詳見構建 OpenStack 的高可用性(HA,High Availability)對高可用性OpenStack的討論。對照 CAP 理論,OpenStack 的分佈式對象存儲系統 Swift 滿足了可用性和分區容忍性,沒有保證一致性(可選的),只是實現了最終一致性。對於 Swift 的研究和學習網上很多,我不做介紹。但是,在整個 OpenStack 架構中,要滿足高可用性需要進行很多工作來保證。主要是通過分離、冗餘技術實現,也就是 nova-api、nova-network、glance 等可以分別在多節點上工作,RabbitMQ 可以工作在主備模式,MySQL 可以使用冗餘的高可用集羣。這些組合可能有很多問題,有些也需要加入到 OpenStack 項目。

2、加入對 Ubuntu 以外的操作系統(如 CentOS)的支持
個人精力有限,所以沒有對 CentOS 等其它版本進行支持,也沒有對 Ubuntu11 等版本進行測試。但是大家應該只需要把 OneStack 稍加改動就可以用到這些版本的操作系統。因此,如果有人有改好的,可以拿出來分享,別人也也可以順便幫你改善和討論。

3、希望更多的有時間的同行參與
正如上面所說,個人精力有限,業餘所做,肯定有諸多不足,而且對其它版本沒有添加支持,更主要的,希望對高可用性(HA)這個很關鍵的要求實現自動化部署,因此希望多提出意見建議、多分享自己的經驗和成果,造福別人也提高自己。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章