CloudStack 作為一個老牌的開源雲平台解決方案,其架構和程式碼對於理解 IaaS 平台的運作方式非常有價值。很多朋友在嘗試 CloudStack 時,往往卡在環境搭建這一步。與其使用預先封裝好的版本,不如從原始碼開始構建,這樣更能理解 CloudStack 的運作機制。這篇文章就帶大家在 Ubuntu 和 CentOS 系統上從原始碼編譯 CloudStack,並介紹模擬器的使用,讓大家少走彎路。
在金融科技領域,快速搭建和測試環境至關重要。我曾經為了一個專案,花了不少時間研究 CloudStack 的原始碼編譯和模擬器組態。過程中踩了不少坑,也積累了一些經驗。現在分享給大家,希望能幫助大家快速上手。
首先,CloudStack 的依賴比較多,尤其是在不同 Linux 發行版上,版本相容性問題很容易讓人頭大。建議大家儘量使用 Ubuntu 14.04 或 CentOS 6.5,這兩個版本我測試過很多次,比較穩定。安裝前務必更新系統套件,避免不必要的衝突。
在 Ubuntu 上,安裝 OpenJDK、MySQL、Git 和 Maven 就差不多了。記得用 apt-get update 更新一下套件函式庫。安裝 MySQL Server 的時候,留意一下 root 密碼的設定。另外,CloudStack 的模擬器需要 Python,所以也要安裝 python-pip。
CentOS 6.5 上的步驟也類別似,但 Maven 的安裝稍微麻煩一點,需要手動下載和組態。另外,CentOS 6.5 預設的 Python 版本是 2.6,而 CloudStack 模擬器需要 2.7 以上的版本,所以需要手動升級 Python。這個過程比較繁瑣,建議參考官方檔案或一些可靠的部落格文章。
安裝完依賴之後,就可以開始編譯 CloudStack 了。這個過程需要下載大量的依賴函式庫,所以網路環境要好一些。編譯時間也比較長,取決於機器的效能,一般需要幾個小時。
編譯完成後,就可以啟動 CloudStack 模擬器了。模擬器是一個輕量級的 CloudStack 環境,非常適合開發和測試。它不需要額外的硬體資源,可以直接在本地機器上執行。模擬器提供了一個 Web 介面,可以用來管理虛擬機器、網路、儲存等資源。
除了模擬器之外,CloudStack 還提供了一個叫做 DevCloud 的沙盒環境。DevCloud 是一個預先組態好的 CloudStack 環境,可以直接使用。它包含了所有必要的元件,例如管理伺服器、資料函式庫、代理等等。DevCloud 非常適合用來學習和測試 CloudStack 的功能。
最後,要提醒大家的是,CloudStack 的檔案雖然比較完善,但是有些地方不夠清晰。建議大家在遇到問題的時候,多參考一些部落格文章和論壇討論。另外,CloudStack 的社群也很活躍,可以在郵件列表或 IRC 頻道上尋求幫助。
駕馭雲端:CloudStack生態系統與DevOps工具鏈
身為一個在雲端技術領域打滾多年的老兵,玄貓(BlackCat)經常被問到一個問題:「我們公司匯入了雲端,然後呢?」許多企業砸下重金建置了私有雲或採用公有雲端服務,卻發現雲端並沒有如預期般帶來立竿見影的效益。問題往往不在於雲端本身,而在於如何善用雲端這個平台,將其融入既有的開發與維運流程中。
從虛擬化到雲端生態:我的技術演進之路
回想起2002年左右,當時虛擬化技術正嶄露頭角,而後逐漸演變成今日我們所熟知的雲端運算。時至今日,開源雲端解決方案如雨後春筍般湧現,其中CloudStack、Eucalyptus、OpenNebula和OpenStack被譽為雲端的「四姊妹」。這些方案各有千秋,在擴充套件性、網路功能和儲存特性上有所差異,但它們都已在世界各地成功落地,驅動著各式各樣的私有雲和公有雲。
然而,玄貓認為,僅僅關注雲端的佈署和組態是遠遠不夠的。更重要的是,我們需要深入研究這些雲端解決方案的生態系統,思考如何將雲端整合到開發和維運流程中,進而提供更高層次的服務,並真正實作投資回報。
CloudStack社群:我的雲端技術起點
自2012年加入Apache CloudStack社群以來,玄貓積極參與CloudStack驅動程式的測試和開發工作,致力於將其與各種IT工具整合,開發一個更完善的雲端生態系統。玄貓深信,透過善用這些工具,使用者能夠更有效地利用雲端資源,將精力集中在更重要的任務上,例如:可靠的應用程式託管、分散式應用程式佈署和巨量資料處理等等。
本文旨在分享玄貓在測試這些工具時所累積的經驗,並闡述它們如何協助我們回答「有了雲端,然後呢?」這個問題。透過本文,玄貓希望能夠幫助讀者充分利用雲端技術,擺脫繁瑣的實作細節,將精力重新投入到應用程式的開發和創新上。
NIST定義下的雲端運算:CloudStack的角色
雲端運算是一個相當模糊的概念,不同的人對其有不同的理解。為了釐清這個概念,我們不妨參考美國國家標準與技術研究院(NIST)的定義。NIST在2011年的報告中將雲端運算定義為:
一種模型,能夠實作對可組態計算資源(例如,網路、伺服器、儲存、應用程式和服務)分享池的普遍、便捷、隨需網路存取,這些資源可以快速佈建和釋放,且只需最少的管理工作。
NIST的定義進一步闡述了雲端運算的基本特徵(例如,隨需、網路存取、多租戶、彈性和計量),並定義了三種服務模式:軟體即服務(SaaS)、平台即服務(PaaS)和基礎設施即服務(IaaS)。此外,它還定義了四種佈署模式:私有雲、公有雲、混合雲和社群雲(值得注意的是,社群雲是一種較少被使用的模式)。
從SaaS到IaaS的模型可以對應到舊的ISO模型。SaaS負責應用程式交付,IaaS負責基礎設施管理,而PaaS則介於兩者之間。這是一個非常簡化的觀點,但大致不差。SaaS指的是線上應用程式託管:使用者透過網際網路存取應用程式介面,而所有在後端發生的工作(例如,使應用程式可用和可擴充套件)都完全對終端使用者隱藏(理應如此)。Gmail(以及大多數Google服務,包括日曆和檔案)是一個典型的SaaS範例。PaaS代表我們過去所稱的中介軟體,它連線了終端使用者應用程式和其執行的底層基礎設施。PaaS解決方案的目標是那些不想擔心基礎設施的開發人員。PaaS是一個快速發展的領域,像Openshift、CloudFoundry和Cloudify這樣的解決方案受到了廣泛關注,並且發展迅速。IaaS是基礎設施層,它提供了底層的計算、儲存和網路資源,供PaaS和SaaS使用。
總而言之,CloudStack在雲端運算領域扮演著舉足輕重的角色。它不僅是一個功能強大的IaaS平台,更是一個開放的生態系統,能夠與各種DevOps工具和應用程式整合,幫助企業充分利用雲端資源,加速創新和發展。玄貓相信,透過深入瞭解CloudStack及其周邊工具,我們能夠更好地駕馭雲端,實作業務目標。
Apache CloudStack:開源雲端服務的另一種選擇
在雲端運算的眾多解決方案中,Apache CloudStack 是一個不容忽視的名字。它是一個基礎設施即服務(IaaS)的開源軟體,目標是高效、高可用性地管理大規模虛擬機器例項。CloudStack 讓你能夠構建公有雲或私有雲,提供彈性、多租戶的運算、儲存和網路服務。
CloudStack 的歷史與演進
CloudStack 的故事開始於 2008 年,由矽谷新創公司 VMOps 所啟動。這家公司在 2010 年更名為 Cloud.com,隨後在 2011 年被 Citrix Systems 收購。2012 年 4 月,Citrix 將 CloudStack 捐贈給 Apache 軟體基金會(ASF)。CloudStack 進入 Apache Incubator,成為 ASF 的商標,並在 2013 年 3 月晉升為頂級 ASF 專案,與 HTTPD 和 Hadoop 等知名專案齊名。
玄貓看 CloudStack 的定位
玄貓認為,CloudStack 在開源雲端運算領域扮演著獨特的角色。它與 OpenStack、Eucalyptus 和 OpenNebula 並稱為開源雲端運算的「四大姊妹」,但 CloudStack 以其穩定性和易用性著稱,尤其適合希望快速搭建 Amazon EC2 類別似環境的企業。
本文內容概要:從安裝到進階應用
本文旨在幫助你快速掌握 Apache CloudStack 生態系統。全書分為三個部分,每個部分包含兩個章節。
第一部分:CloudStack 的安裝與佈署
-
第一章:從原始碼安裝
本章涵蓋開發人員所需的基本安裝步驟。CloudStack 的官方檔案提供了完整的安裝說明,因此我們不會在此重複這些細節。相反,本章旨在介紹 CloudStack 及其一些有助於生態系統開發的功能,例如模擬器和 DevCloud(CloudStack 沙箱)。
-
第二章:從套件安裝
本章提供了一個使用 KVM 在 Ubuntu 14.04 上進行安裝的逐步。你可以在本地機器上使用 VMware Fusion(使用 KVM 進行巢狀虛擬化)或在實體硬體上遵循本。本章主要針對那些不想從原始碼編譯的使用者。
第二部分:API 客戶端與介面
-
第三章:API 客戶端
本章解釋瞭如何簽署 API 請求,然後介紹一些客戶端,包括 CloudMonkey(官方 CloudStack 命令列介面)、Apache Libcloud(一個 Python 模組,用於抽象雲端供應商 API 之間的差異)、Apache jclouds(一個 Java 函式庫,目標與 Libcloud 類別似)和 CloStack(一個根據 Clojure 的客戶端,專用於 CloudStack)。本章旨在讓每個人都能體驗他們喜歡的語言的客戶端。對於那些想要使用 CloudStack API 並在其之上編寫自己的應用程式的人來說,本章會很有趣。
-
第四章:API 介面
本章介紹了三個在 CloudStack API 前面提供不同 API 的應用程式。它們有時被稱為 API 橋接器或封裝器。這些應用程式作為伺服器在使用者機器上或在雲端供應商基礎架構中執行,並公開不同的 API。例如,EC2Stack 公開了一個與 EC2 相容的介面,gstack 公開了一個與 GCE 相容的介面,而 rOCCI 公開了一個標準化的介面。此外,本章還介紹了由 Eucalyptus 團隊編寫的兩個 Python 模組:Boto(Amazon Web Services (AWS) 的客戶端)和 Eutester(一個測試框架)。CloudStack 使用者將能夠結合 EC2Stack 使用這些模組。
第三部分:組態管理與進階應用
-
第五章:組態管理
本章首先介紹 Veewee 和 Packer。在此基礎上,本章介紹了幾個關於 Vagrant 的配方。Vagrant 是一個軟體開發工具,可幫助在本地測試組態,然後以可重複的方式在雲端中佈署。具備 Vagrant 的一些知識後,本章的其餘部分將專門介紹兩個組態管理解決方案:Ansible 和 Chef。這些解決方案具有 CloudStack 外掛程式,可幫助在雲端中佈署應用程式。本章將對 DevOps 社群感興趣。
-
第六章:進階應用
本章探討了一些更進階的主題。我們將研究雲端基礎架構本身的兩個重要方面:監控和儲存。我們介紹 RiakCS,並展示如何將其用作映像目錄。我們還展示瞭如何將 Fluent 用於日誌聚合,並結合 Elasticsearch 和 MongoDB。最後,我們介紹了 Apache Whirr,這是一個構建在 jclouds 之上的應用程式協調器,可用於佈署和執行像 Hadoop 這樣的分散式系統。
額外補充
本文最後還提供了進一步閱讀和研究的一些提示。
閱讀本文所需的技術基礎
本文適閤中級讀者,需要對一些開發和系統管理概念有基本的瞭解。在深入閱讀本文之前,你可能需要複習:
-
Bash (Unix Shell)
這是 Linux 和 OS X 上的預設 Unix Shell。熟悉 Unix Shell(例如編輯檔案、設定檔案許可權、在檔案系統中移動檔案、使用者許可權以及一些基本的 Shell 程式設計)將會非常有幫助。
玄貓觀點:CloudStack 的價值與挑戰
玄貓認為,CloudStack 的價值在於它提供了一個相對簡單且穩定的方式來構建和管理雲端基礎設施。然而,與其他更流行的解決方案相比,CloudStack 的社群規模較小,生態系統可能不如其他選擇豐富。
在選擇 CloudStack 時,企業需要仔細評估自身的需求和技術能力,權衡其優勢和劣勢。對於那些尋求開源、穩定且易於管理的 IaaS 解決方案的企業來說,CloudStack 仍然是一個值得考慮的選擇。
總結來說,Apache CloudStack 作為一個開源的 IaaS 解決方案,在雲端運算領域佔有一席之地。它以其穩定性和易用性著稱,適合希望快速搭建雲端環境的企業。透過本文的學習,相信你能更深入地瞭解 CloudStack,並在實際應用中發揮其價值。
駕馭雲端:技術專家必備的工具與知識
在雲端運算的世界中,掌握正確的工具和知識至關重要。玄貓將分享一些技術專家在雲端環境中不可或缺的技能,以及如何利用這些工具來提升效率和解決問題。
為何選擇從原始碼開始:在 Ubuntu 與 CentOS 上建構 CloudStack 開發環境
對於想深入瞭解 CloudStack 的開發者來說,直接從原始碼安裝是個很棒的起點。雖然官方檔案已經有詳細的安裝,但本文將提供在 Ubuntu 14.04 和 CentOS 6.5 上進行原始碼安裝的實用技巧,同時也會介紹 CloudStack 模擬器和 DevCloud 這兩個對開發者相當有幫助的工具。
透過這些步驟,你將會發現編譯 CloudStack 並不難,而且能在幾個小時內建立一個可用的開發環境。此外,我們也會介紹如何使用 KVM 虛擬化技術,從套件完整安裝 CloudStack 基本區域,這對於不想使用原始碼發布版本的初學者來說會很有幫助。
1. Ubuntu 14.04 環境下的必要套件安裝
就像任何軟體一樣,CloudStack 運作也需要一些相依性套件。這個章節將引導你安裝 Apache CloudStack 開發所需的相依套件,讓你能在 Ubuntu 14.04 上順利建構 CloudStack。
解決方案
首先,更新你的系統。接著安裝 OpenJDK(因為我們使用 Linux),再來是 MySQL 和 Git(用來clone CloudStack 原始碼),最後安裝 Maven 來建構 CloudStack。
步驟
以下指令可以幫你在 Ubuntu/Debian 系統上安裝必要的套件(我們在 Ubuntu 14.04 上測試過):
# apt-get -y update
# apt-get -y install openjdk-7-jdk
# apt-get -y install mysql-server
# apt-get install git
# apt-get install maven
確認 MySQL 正在執行中,你可以使用以下指令檢查狀態:
# service mysql status
上述步驟應該會安裝 Maven 3.0.5 (你可以用 mvn --version 確認版本)。
CloudStack 模擬器會用到一些 Python,所以我們也需要安裝 Python 套件管理工具:
# apt-get install python-pip
2. CentOS 6.5 環境下的必要套件安裝
如同在 Ubuntu 上,CentOS 也需要安裝一些相依性套件才能進行 CloudStack 開發。這個章節將說明如何在 CentOS 6.5 上安裝這些套件。
解決方案
一樣先更新系統,然後安裝 OpenJDK(如果還沒安裝的話),接著安裝 MySQL、Git 和 mkisofs (透過 genisoimage 套件)。
步驟
以下指令可以幫你在 CentOS/RHEL 系統上安裝大部分的必要套件(我們在 CentOS 6.5 上測試過):
# yum -y update
# yum -y install java-1.7.0-openjdk
# yum -y install java-1.7.0-openjdk-devel
# yum -y install mysql-server
# yum -y install git
# yum -y install genisoimage
確認 MySQL 已停止。你可以用 service mysqld status 檢查狀態,並用 service mysqld start 啟動它。
接下來安裝 Maven。在 CentOS 6.5 上安裝 Maven 比在 Ubuntu 14.04 上稍微複雜一點。從 Maven 官網下載 3.0.5 版本:
# wget http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/ \
3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz
# tar xzf apache-maven-3.0.5-bin.tar.gz -C /usr/local
# cd /usr/local
# ln -s apache-maven-3.0.5 maven
你可以建立一個 /etc/profile.d/maven.sh 檔案,將 Maven 設定為系統全域可用:
# export M2_HOME=/usr/local/maven
# export PATH=${M2_HOME}/bin:${PATH}
執行以下指令,讓 Maven 加入到你的 PATH 環境變數中 (上述步驟應該會安裝 Maven 3.0;你可以用 mvn --version 確認版本):
# source /etc/profile.d/maven.sh
# mvn --version
CloudStack 模擬器會用到一些 Python,所以我們也需要安裝 Python Package Index 工具 (pip):
# yum -y install python-pip
玄貓提醒: CentOS 6.5 預設使用 Python 2.6.6。為了使用模擬器和 CloudStack Marvin 套件,你需要 Python 2.7 或更新的版本。這裡不包含設定 Python 2.7 的步驟。
在為某金融科技公司設計分散式系統時,玄貓發現環境建置是個大學問,好的起點能省下不少時間。希望這篇文章能幫助大家順利開始 CloudStack 的開發之旅。