CloudStack
CloudStack 筆記
- 進階網路架構
- 系統優化
- 主存儲與二級存儲
- CloudStack 的介紹
- CloudStack 架構圖
- HA
- Apache CloudStack 4.16.0.0
- CloudStack 無法新增模板和iso
- 常識備註
- 一些理論
- OpenStack 與 CloudStack 比較
進階網路架構
談 Cloudstack 進階網路架構
進階網路是Cloudstack 的一大特色,可以將VM隔離在不同的網路,並提供Firewall,Load Balance,Vpn,Dhcp,Dns,Nat等服務,把網路當成是一種資源來管理,做到Network as a service。
這究竟是什麼透過什麼方式做到的呢?我們來看一下。
802.1Q Tagged Vlan:Cloudstack透過vlan將VM隔離,在建立Cloudstack Zone的時候,可以預先定義一個範圍的Vlan給這個Zone使用,例如300-399這個範圍的Vlan,當新建一個VM時,就會在這個範圍內動態的產生一個Vlan,並將這個VM加入這個Vlan,在Switch端只要預先設定好這個Vlan範圍,並設定Trunk及802.1Q,交換器就會自動辨識,讓同一個Vlan的VM彼此可以互相溝通,不同Vlan的VM是看不到彼此的,理論上可以創建數千個Vlan,看Switch的規格而定。
Virtual Router:當新建一個VM的網路時,預設狀態下系統會部署一台虛擬機做為Virtual Router以供這個網路使用,OS為Debian,提供Dns,Dhcp,Vpn,Load Balance,Firewal等相關的服務,這些功能自行架設Linux也做得到,但Cloudstack己將這些功能整合到Virtual Router當中,並且整合在Cloudstack管理介面當中進行管理。
整合硬體式防火牆:可以與Juniper srx firewall 或Citrix Netscaler負載平衡器做整合,如果Virtual Router無法滿足需求的話,可以外掛硬體設備提供更好的服務。
系統優化
全域設定
cpu.overprovisioning.factor 2.0 //CPU超配
mem.overprovisioning.factor 2.0 //記憶體超配,即2GB變4GB
secstorage.allowed.internal.sites 0.0.0.0/0 //從該網段下載ISO或模板,後期搭建ngix伺服器可修改
management.network.cidr 192.168.100.0/24 //管理網段,可不修改,但會有警報資訊
system.vm.use.local.storage [set false to -> true\
ca.plugin.root.auth.strictness [set true to -> false
secstorage.allowed.internal.sites [set value = 10.66.11.9(local server ip using apache web server for download iso
KVM : 所有VMs都需要支持virtio驱动。Linux kernel versions 2.6.25和更高版本中已经安装了这些驱动。管理员必须在virtio的配置文件中配置CONFIG_VIRTIO_BALLOON=y。
vim /etc/cloudstack/agent/agent.properties
guest.cpu.mode=host-model
host-model 表示從可用的CPU模型中選擇一個與宿主機最接近的。
服務重起
systemctl restart cloudstack-management
systemctl cloudstack-agent start
Log查看
tail -f /var/log/cloudstack/management/management-server.log
mysql
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'
bind-address = 0.0.0.0
# nfs Server
/export/primary *(rw,async,no_root_squash,no_subtree_check)
/sbin/rpc.statd --no-notify --port 662 --outgoing-port 2020
mount -t nfs 10.66.100.30:/export/secondary /mnt/secondary
cloudstack-setup-databases cloud:123456@localhost --deploy-as=root:12345
cloudstack-setup-management
# Disable automatic upgrades and unnecessary packages:
apt-get remove --purge unattended-upgrades snapd cloud-init
# Edit the files at /etc/apt/apt.conf.d/* with following
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "1";
主存儲與二級存儲
本地存儲在宿主機上,所以當虛擬機的捲使用本地存儲時,只能被和它處於同一宿主機的虛擬機訪問,而使用共享存儲時,任意一台宿主機只要能訪問該存儲,宿主機上的虛擬機也就能訪問該存儲,也就是說該存儲是被多台宿主機上的虛擬機共享的。
但使用本地存儲的虛擬機無法實現在線遷移,因為其他宿主機無法訪問該虛擬機位於本地存儲上的捲。
卷遷移
在CloudStack中,使用本地存儲的虛擬機不僅虛擬機本身不能遷移,虛擬機的捲也是不能遷移的,也就是說一旦創建虛擬機時選擇了本地存儲,那麼這台虛擬機永遠只會跑在同一台宿主機上,而它的捲也只能存放在該宿主機的本地存儲上。但是使用共享存儲的虛擬機的捲是可以遷移到其他共享存儲上去的
二級存儲
CloudStack 的介紹
IAAS 虛擬化的好處
- 資源利用率更高— 在虛擬化之前,企業數據中心的服務器和存儲利用率一般平均不到50% (事實上,通常利用率為10% 到15%)。通過虛擬化,可以把工作負載封裝一併轉移到空閒或使用不足的系統,這就意味著可以整合現有系統,因而可以延遲或避免購買更多服務器容量。
- 資源整合— 虛擬化使得整合多個IT 資源成為可能。除服務器和存儲整合之外,虛擬化提供一個整合系統架構、應用程序基礎設施、數據和數據庫、接口、網絡、桌面系統甚至業務流程,因而可以節約成本和提高效率。
- 節省電能/成本— 運行企業級數據中心所需的電能不再無限制地使用,而成本呈螺旋式上升趨勢。在服務器硬件上每花一美元,就會在電費上增加一美元(包括服務器運行和散熱方面的成本)。利用虛擬化進行整合使得降低總能耗和節約大量資金成為可能。
- 節約空間— 服務器膨脹仍然是多數企業數據中心面臨的一個嚴重問題,可擴大數據中心並不總是一個良好的選擇,因為每增大一平方米空間,就會平均增加很多成本。虛擬化通過把多個虛擬系統整合到較少物理系統上,可以緩解空間壓力。
- 災難恢復(Disaster recovery) /業務連續(Business Continuity) — 虛擬化可提高總體服務級利用率,並提供災難恢復解決方案新選項。
CloudStack 架構圖
CloudStack 相關概念及術語如下:
Zone
Zone 對應於現實中的一個數據中心,它是CloudStack 中最大的一個單元。即從包含關係上來說,一個Zone 包含多個Pod,一個Pod 包含多個Cluster,一個Cluster 包含多個Host。
提供點(Pods)
一個提供點通常代表一個機架,機櫃裡面的主機在同一個子網,每個區域中必須包含一個或多個提供點,提供點中包含主機和主存儲服務器,預留的IP 範圍對雲中的每個區域來說必須唯一。
集群(Clusters)
Cluster 是多個主機組成的一個集群。同一個Cluster 中的主機有相同的硬件,相同的Hypervisor,和共用同樣的存儲。同一個Cluster 中的虛擬機,可以實現無中斷服務地從一個主機遷移到另外一個上。集群由一個或多個宿主機和一個或多個主要存儲服務器構成。集群的大小取決於下層虛擬機軟件。大多數情況下基本無建議。當使用VMware 時,每個VMware 集群都被vCenter 服務器管理。管理員必須在本產品中登記vCenter。每個Zone 下可以有多個vCenter 服務器。每個vCenter 服務器可能管理多個VMware 集群。
主機(Hosts)
Host 就是運行的虛擬機(VM)主機。
宿主機就是個獨立的計算機。宿主機運行來賓虛擬機並提供其相應的計算資源。每個宿主機都裝有虛擬機軟件來運行來賓虛擬機。比如一個開啟了kvm 支持的服務器,一個思傑XenServer 服務器,或者一個ESXi 服務器都可以作為宿主機。宿主機在CloudStack 部署中屬於最小的組織單元。宿主機包含於集群中,集群又屬於提供點,而區域中包含提供點(就是在邏輯概念上Zone>Pod>Cluster>Host ),宿主機對終端用戶不可見。終端用戶不能決定他們的虛擬機被分配到哪台宿主機。
CloudStack 中存在兩種存儲
- Primary Storage:一級存儲與Cluster 關聯,它為該Cluster 中的主機的全部虛擬機提供磁盤捲。一個Cluster 至少有一個一級存儲,且在部署時位置要臨近主機以提供高性能。
- Secondary Storage:二級存儲與Zone 關聯,它存儲模板文件,ISO 鏡像和磁盤捲快照。
HA
DISABLED:HA操作禁用了或對應的資源沒有啟用HA操作;
為了維護資源的狀態,資源管理服務內部會維護如下的一下隊列:
INELIGIBLE:臨時、易失性的隊列,用於跟踪INELIGIBLE的資源;
為了實現宿主機HA,管理服務會提供如下的管理API:
listHostHAConfigurations:列舉所有的HA相關的配置;
2.2 HA提供者
isEligible:判斷HA提供者是否能夠對資源執行HA相關的操作;
HA提供者提供瞭如下的參數來控制HA相關的操作:
Minimum Recovery Time:恢復成功最少需要多長時間;
2.2.1 KVM HA提供者
Apache CloudStack 4.16.0.0
Apache CloudStack 4.16.0.0 正式發布,該版本是一個 LTS 版本,包含 22 個主要的新功能,以及自 4.15 版本以來的 244 個改進和修復。
本次更新的一些重點內容包括:
- 對管理伺服器和管理主機的額外作業系統支持:
- 支持 OpenSuse
- 支持 Rocky Linux
- 新的集成,使 CloudStack 能夠利用先進的存儲功能:
- Dell EMC PowerFlex 存儲插件集成
- LINSTOR 存儲插件集成
- UI 的改進:
- 在用戶界面中對對象進行結構化注釋
- 自定義資源圖標
- 能夠通過用戶界面執行批量操作
- 增強 CloudStack Kubernetes 服務:
- 通過 CloudStack Kubernetes 提供商支持 Kubernetes 自動擴展
- Kubernetes Clusters 現在以系統虛擬機為基礎,提供簡化的持續管理
- 改進工具和管理:
- 對虛擬機的 CPU/RAM 的動態擴展進行細化控制
- 通過用戶界面導入和導出 VMware 的虛擬機
- CloudStack-setup-databases 腳本改進,使升級更穩定
- HA 的改進允許主機被標記為降級
- 新的 API 端點可以更新 Pod 管理網絡 IP 範圍
- 新的 API 端點可以更新 VLAN 的 IP 範圍
CloudStack 無法新增模板和iso
做了N久的CloudStack二次開發,最近越來越多的人開始使用CloudStack。
通常會遇到添加模板和iso不成功的問題。
表現為註冊了template/iso之後,"已就緒" "狀態" "大小" 等選項都為空,或者提示no route to host等現象
CloudStack是通過SSVM進行template/iso上傳和下載,所以基本可以判定為SSVM網絡有問題
這樣就可以做以下檢查:
1、內建模板不存在("已就緒" "狀態" "大小" 等選項都為空多發生在這種情況):
CS默認有2種模板,系統虛擬機模板[SystemVM Template (XenServer)]和內建模板[ CentOS 5.6(64-bit) no GUI (XenServer)]
在ssvm正常啟動之後,會連接management-server 的8250端口,成功連接後,UI上就可以看到以上兩個模板。
如果此時沒有內建模板的信息,則說明ssvm沒能正常連接management-server。
這種情況多會發生在全局配置錯誤。相關項為:management.network.cidr,host,secstorage.allowed.internal.cidr
<1> 如果management-server存在多個網卡,默認cloudstack會選擇route中為default的那個網卡設置management.network.cidr和host,如果該項並非用來連接host和ssvm private ip的網絡,則需要修改為正確網絡,ssvm啟動後,會根據這兩個值來配置路由表,如果錯誤則無法連接到management-server。
解決方案:這種情況需要修改全局配置後,重啟management-server,然後破壞掉ssvm,等待系統重建
<2>secstorage.allowed.internal.cidr 設置為0.0.0.0/0
經常會發生在網絡情況比較單一的環境,比如基本模式或者高級模式但是public ip和private ip在同一網段中,會導致SSVM路由表錯誤,正常SSVM路由default 網卡為eth2,即public,此時會變為eth1,即private,由於其防火牆限制,導致無法上傳或下載模板
解決方案:這種情況需要修改全局配置,將secstorage.allowed.internal.cidr設為正確值,如果有多個cidr可以用逗號分隔,重啟management-server,然後重啟ssvm
2、內建模板已存在
內建模板已經顯示在UI上,說明SSVM已經成功連接到management-server。
至於內建模板,我這裡下載基本上不會成功,原因大體就是因為網速太慢,半天下一點,斷了重新下。可以嘗試在db中修改url從本地下載。
<1> no route to host
這種情況多發生在SSVM的public和private在同一網段的情況下,很多人的測試環境受實際因素影響,並不能隔離public和private,而是都使用同一網段。並且上傳template/iso所用的http server也在同一網段。
CS默認會通過public ip進行下載,如果http server和private ip處於同一網段的時候,則會嘗試使用private ip進行下載。由於很多新人剛剛使用CS的時候,並不知道還有secstorage.allowed.internal.cidr 這樣的全局配置,所以並未進行相關設置,這樣就會導致private ip被防火牆阻攔而無法進行下載
解決方案:將private ip所在網段的cidr寫入secstorage.allowed.internal.cidr ,並重啟ms,重啟SSVM
<2> 有人發現有此選項,但為求省事,設置secstorage.allowed.internal.cidr 為0.0.0.0/0
此項設置並不符合CS的設計,不過大部分環境中可以正常使用,所以也少有人會注意到全局設置中的不能設置為0.0.0.0的提示。
如1.2中所描述的環境,則很有可能會出現路由表錯誤而無法正常使用的問題。
<3> 下載一半後中斷,無法繼續下載。
此種情況見過多次,但是自己的環境中並未重現。
跟踪代碼發現下載流的size不能滿足默認大小,可以試著嘗試修改SSVM的service_offering,增加SSVM的內存。這個僅為猜測,有待將來重現後再進行跟踪調試
常識備註
IAAS infrastructure as a service 基礎設施即服務(提供計算,存儲,網絡等基礎資源)
PAAS platform as a service 平台即服務(除了提供基礎資源,還包括應用軟件運行所需的環境)
SAAS software as a service 應用軟件即服務(直接為用戶提供應用服務。比如163郵箱。)
cloudstack大致屬於第二種PAAS
什麼是資源域?
什麼是提供點?
什麼是群集?
CloudStack™ 允許雲部署中存在多個群集,但對於基本安裝,我們只需要一個群集。
什麼是主機?
主存儲
什麼是主存儲?
二級存儲
什麼是二級存儲?
1. HA主機不能用來啟動普通虛機,只能用來啟動設置了HA的虛擬機,因此要注意不能把所有的主機都打上hahosttag標籤.
2. 計算方案設置主機標籤的話,如果沒有對應標籤的主機,使用該計算方案的虛擬機創建會失敗.
3. 磁盤方案設置標籤的話,沒有對應的主存儲。使用該計算方案創建虛擬機也會失敗。
4. 主機添加完成編輯/etc/cloudstack/agent/agent.properties 文件修改該宿主機上CPU型號後,重啟cloudstack-agent,運行在其上的虛擬機需要先停止,再啟動,CPU型號才會發生改變。
5. 虛擬機停止後才可以遷移虛擬機到另一個主存儲。但是遷移到另一個主機就要方便得多,不需要先停止虛擬主機。
6. WindowsServer2008R2虛擬機的IP無法使用DHCP正常獲取。最好設置靜態IP,使用自動獲取IP的話,重新啟動虛擬機,該虛擬機的DHCP服務器會設置成默認網關,從而取到不正確的IP。
7. 使用固定IP創建的模板,雖然每次創建新虛擬主機都要重新設置IP地址,但是網絡可以正常連接。
8. 同一個提供點只能屬於一個CIDR,簡單理解為一個網關和一個子網掩碼。如果要使用一個網關和子網掩碼設置多個提供點,需修改全局設置check.pod.cidrs
9. 設置管理或來賓IP範圍時,根據子網掩碼的設置,可以設置較特殊的範圍。如子網掩碼255.255.0.0,,可以設置192.168. 10.20-192.168.210.220這樣的範圍
10. 來賓IP範圍重新設置需要到數據庫進行。cloud庫的vlan表ip4_range字段字符串格式。修改後要重啟cloudstack-management。好像沒什麼太大用,只是顯示可用IP範圍變了,實際可使用IP範圍無變化。
11. 虛擬機的IP 實際上是通過綁定一個NIC對象來顯示使用IP的。一個NIC 對象包括ID 網絡名稱類型IP地址網關網絡掩碼等。
一些理論
Primary storage (主存儲)
主存儲也叫一級存儲, 它在cloudstack 裡面主要是提供某一個集群中所有主機上運行的虛擬機實例的磁盤捲的存儲, 主存儲在目前只支持NFS、SharedMountPoint、Clvm 這三種類型的存儲
Secondary storage (輔助存儲)
輔助存儲在cloudstack 裡面主要提供模版、快照、卷的存儲, 而管理這些功能的是由一個叫ssvm 的系統虛擬機
用來保存一次寫多次讀的數據,比如模板,ISO,快照等數據,二級存儲對IOPS要求並非像主存儲那樣高,但所存儲的數據比較大,因此需要較大的容量.目前二級存儲只支持NFS,對於Swift的支持正在添加,長遠來看有可能支持其它的分佈式文件系統如HDFS,Ceph等.
CloudStack管理節點用來提供對主存儲及二級存儲的綜合管理,配置及使用,這兩種存儲在雲環境中的可用上圖表示:
二級存儲用來存放template,snapshot和需要下載的volume。
二級存儲不直接掛載到hyperviser上,需要由management server或ssvm來進行操作。
二級存儲中有3個目錄,template,volume,snapshots
template目錄存放的是cloudstack所管理的模板。
目錄結構為:template/tmpl/userid/templateid/templatefile。
第一次從模板創建vm的過程,需要把secondary storage掛載到management server,然後由management server通過hyperviser向primary storage中復制模板,將template目錄下的相應文件複製到primary storage中,然後將復製過去的文件標記為模板,之後再次通過該template創建的vm,都會直接從模板複製一個新的磁盤掛載到vm上作為主磁盤。
跨zone複製模板的時候,會將文件link到/var/www/copy 目錄下,並在copy中的.htaccess進行權限設置,根據全局配置和具體環境信息,會設置某些IP的可訪問,某些IP無法訪問。例如:如果兩個zone在同一網段,都為192.168.1.*,則默認無法對模板進行copy操作,或者192.168.1.*網段的http server不允許向cloudstack上傳模板。此功能由全局配置中的secstorage.allowd.internal.sites控制,將需要copy的網段添加到此項中,以逗號分隔,重啟ms,然後破壞掉ssvm重建即可保證此項操作順利進行。
snapshots存放的是vm某磁盤的快照。
目錄結構為:snapshots/userid/templateid/snapshotfile。創建snapshot的時候,會先從hyperviser層創建snapshot,然後將secondary storage mount到ssvm,之後創建完整的文件存儲路徑,將snapshot文件複製到secondary storage相應目錄中。下載snapshot的時候,會由ssvm掛載相應目錄,將文件link到/var/www/userdata下,並生成鏈接存放到db中,提供給用戶下載。
volume存放的是需要下載的vm的磁盤的文件。在UI上點擊下載後,會將volume文件先複製到secondary storage中,再由ssvm創建link到/var/www/userdata中,並生成鏈接存放到DB中,提供給用戶進行下載。
SSVM (Secondary Storage VM)
SSVM在cloudstack 裡面主要提供管理一級存儲、二級存儲、模版、快照、卷等功能, 在創建並啟用一個區域後SSVM 會自行創建, 如果手動刪除cloudstack 也會自行創建SSVM
CPVM (Console Proxy VM)
CPVM主要提供連接控制台代理, 在cloudstack 的UI 界面連接某個虛擬機實例的窗口就是CPVM 提供的功能, 控制台主要是通過vnc 實現. 我們在安裝配置計算節點的時候需要開啟qemu 的vnc 監听就是為CPVM 提供的服務
V-Route(虛擬路由器)
在基礎網絡模式下虛擬路由器提供的功能有DNS 、 dhcp 服務
在高級網絡模式下虛擬路由器提供的功能有VPN、DHCP、DNS、防火牆、負載均衡(HaProxy 實現)、SNAT、靜態NAT、端口轉發、安全組、網絡ACL、等功能
虛擬路由器的 DHCP 功能是為虛擬機實例提供動態獲取 IP 的功能, 那有的人就會問了, 既然是DHCP 那作為服務器的虛擬機實例的 IP 會不會變呢? 答案是no, 因為虛擬路由器會將虛擬機實例自動獲取的 IP 及 MAC 等信息存如cloudstack 的數據庫, 這個 IP 永遠是某個實例的, 除非銷毀這個實例之後 IP 才會被其他實例所用
有的人就說了, 既然是一個虛擬路由器, 它的性能及穩定性肯定是頂不住大的並發請求, 那這個時候我們怎麼辦呢, 方法有二,
1. 用物理路由器代替虛擬路由讓 cloudstack 管理.
2. 可根據自己的網絡結構讓虛擬機實例的網絡不從 V-Route 走不就好了嗎.
Security Group (安全組)
安全組我們可以理解為一個網絡中的出口硬件防火牆, 當然事實上並不是那麼會事, 因為安全組主要是利用計算節點的 iptables 實現的
Guest network (來賓網絡)
來賓網絡主要是虛擬機實例的走的網絡, 在配置區域的時候會提示輸入來賓網絡的預留IP 段, 那段 IP 就是給虛擬機實例所用了, 在 cloudstack 中網絡結構是一個非常好的設計, 同樣也是比較難以理解的一塊
CloudStack運維常見問題及解決辦法
1.CloudStack中對虛擬機進行網絡限速
CloudStack中默認的網絡限速無法滿足需要(200Mbit/s).這時需要調整全局配置參數:network.throttling.rate與vm.throtting.rate來增加帶寬.
首先,你來明白一個問題,關聯性組(Affinity Groups)是用來幹嘛的。
關聯性組是cloudstack提供的一個特性,用於保證同一個關聯性組中的VM,創建並運行在不同的物理主機中(必須的),你只有一台主機,卻要把屬於同一個組中的2台VM都創建在這一台主機中,不滿足CS的邏輯,所以必然失敗。
應用場景:
分別創建名稱為web,db,app的關聯性組,根據用途進行創建。那麼,你創建的所有屬於web關聯性組的虛擬機,則表示跑的應用是web應用,這樣,保證同樣應用的VM,不會運行在相同的主機中。
用途?
你希望你跑web、db的虛擬機應用全部運行在同一個主機中?萬一這台主機掛了,所有的db應用全部停止?給你分離在不同的主機中,至少能保證,主機掛了,運行在其他主機中的相同應用還可以正常工作,最小程度減少因為不可控因素帶來的問題!
還有一種特殊的關聯組,類型為:Explicit Dedication。從字面意思可以理解,明確的專屬資源。一般在cs裡面,我們可以把一個區域、一個提供點、一個群集甚至一台主機,設置為專屬資源。意思就是說,在一個大的資源池中,劃分一部分資源,給特定的賬戶(account),是這些賬戶專屬的資源,其他用戶無權使用。
使用該特定賬戶登錄,創建虛擬機時,該用戶可以選擇將虛擬機創建在專屬的資源中,還是非專屬的資源中。
OpenStack 與 CloudStack 比較
OpenStack 介紹
OpenStack是一個美國國家航空航天局和Rackspace合作研發的,以Apache許可證授權,並且是一個自由軟件和開放源代碼項目。
OpenStack主要包括以下幾個子項目:OpenStack Compute(Nova)、雲對象存儲Cloud ObjectStorage(Swift)、鏡像管理 (Glance)、身份識別Identity(Keystone),網絡連接管理Network Connectivity(Quantum)、Web管理界面DashBoard等。
目前有超過150家公司參與了Openstack項目,包括HP,Dell,AMD,Intel,Cisco,Citrix等公司,國內有如新浪、華勝天成、H3C等公司也參與了OpenStack項目。此外微軟在2010年10月表示支持OpenStack 與Windows Server 2008 R2的整合,而Ubuntu在11.04版本中已開始集成OpenStack。OpenStack是目前最受關注與支持的開源雲計算平臺之一。
OpenStack 以Python編寫,這意味着相比其他以C/C++或Java編寫的開源雲計算平臺,OpenStack更容易修改與調試等。OpenStack整合了Tornado網頁服務器、Nebula運算平臺,使用Twisted框架,目前OpenStack支持的虛擬機宿主包括KVM,XEN,VirtualBox,QEMU,LXC等。
CloudStack介紹
CloudStack是新加入到Apache基金會中的開源雲計算平臺。CloudStack開發語言爲Java,此前爲Cloud.com研發應用的商業軟件,此後被Citrix思傑收購,2012年4月5日思傑宣佈將CloudStack項目提交至Apache基金會,CloudStack成爲Apache許可下的完全開源軟件。
CloudStack平臺可以加速高伸縮性的公共和私有云(IaaS)的部署、管理、配置。其最新版本的CloudStack 3頗具Amazon亞馬遜風格,它幫助那些希望效仿全球最成功雲平臺來構建雲設施的企業用戶,快速而輕鬆地將虛擬數據中心資源轉入自動化、富於彈性且可自我服務的雲平臺中。另外,CloudStack兼容亞馬遜API接口,允許跨CloudStack和亞馬遜平臺實現負載兼容。使用CloudStack作爲基礎,數據中心操作者可以快速方便的通過現存基礎架構創建雲服務。
OpenStack 與CloudStack的比較
2012年4月5日Citrix宣佈將CloudStack開源軟件加入到Apache軟件基金會,CloudStack與OpenStack同成爲Apache許可下的完全開源雲計算平臺,同時也成爲OpenStack最有力的競爭對手。
截至目前OpenStack在市場宣傳、影響力方面遠勝過CloudStack,支持夥伴、社區開發人數及討論話題數、活躍程度等也高於CloudStack,但CloudStack的平臺成熟度要優於OpenStack,CloudStack的用戶體驗及安裝容易度也都比OpenStack要好,並已在更具生產實際的環境中得到了充分驗證,而OpenStack到目前爲止則更像是仍處於研發階段難以稱爲“成熟的產品化的IT產品”。
整體比較
比較項 |
CloudStack |
OpenStack |
服務層次 |
IaaS |
IaaS |
授權協議 |
Apache 2.0 |
Apache 2.0 |
許可證 |
不需要 |
不需要 |
動態資源調配 |
主機Maintainance模式下自動遷移VM |
無現成功能,需通過Nova-scheduler組件自己實現 |
VM模板 |
支持 |
支持 |
VM Console |
支持 |
支持 |
開發語言 |
Java |
Python |
用戶界面 |
Web Console,功能較完善 |
DashBoard,較簡單 |
負載均衡 |
軟件負載均衡(Virtual Router)、硬件負載均衡 |
軟件負載均衡(Nova-network或 OpenStack Load Balance API)、硬件負載均衡 |
虛擬化技術 |
XenServer,Oracle VM,vCenter,KVM,Bare Metal |
XenServer,Oracle VM,KVM,QEMU,ESX/ESXi,LXC(Liunx Container)等 |
最小化部署 |
一管理節點,一主機節點 |
支持All in one(Nova,Keystone,Glance組件必選) |
支持數據庫 |
MySQL |
PostgreSQL,MySQL,SQLite |
組件 |
Console Proxy VM,Second Storage VM,Virtual Router VM,Host Agent,Management Server |
Nova,Glance,Keystone,Horizon,Swift |
網絡形式 |
Isolation(VLAN),Share |
VLAN,FLAT,FLATDhcp |
版本問題 |
版本發佈穩定,不存在兼容性問題 |
存在各版本兼容性問題 |
VLAN |
不能VLAN間互訪 |
支持VLAN間互訪 |
實際安裝與運行測試的比較
1. OpenStack文檔資料數相對於CloudStack較多,且安裝過程等講解較具體。但是因爲不同版本間OpenStack可能差異較大,如果實際安裝版本與文檔中使用版本不一致可能會遇到問題。
2. OpenStack安裝過程較複雜,尤其是網絡配置部分比較麻煩,而這方面資料較少,講解不夠具體。CloudStack安裝過程較簡單,但是後續運行中各種配置等問題相關文檔少有提及。
3. OpenStack 的Web 管理界面DashBoard目前爲止較簡單,可能存在bug也較多,但中文翻譯較好,並提供一些幫助信息;CloudStack的Web管理界面功能較多,但中文翻譯不徹底,缺少幫助提示等信息。兩者使用Web界面管理均出現類似刪除虛擬機一直刪除不掉等問題。
4. 測試發現OpenStack可超載創建虛擬機,但所創建虛擬機經常出現無法啓動的情況。而CloudStack對虛擬機的資源佔用管理較嚴格,無法超載創建虛擬機,因此對主機節點的硬件配置要求較高。
5. CloudStack支持通過模板(Template)或ISO創建虛擬機,但上傳模板、ISO及創建虛擬機等過程均耗時較長;OpenStack在實驗過程中爲直接從網上下載img文件創建虛擬機,耗時很短即可創建成功。
6. 兩者創建的虛擬機均可以通過Web管理界面進入管理,但測試中OpenStack創建的虛擬機雖然附加了局域網IP,但網卡實際綁定IP爲私有IP,未找到如何通過SSH直接訪問的辦法。CloudStack創建的虛擬機使用了分配的Guest IP,可通過SSH連接訪問。