您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“怎么用CloudStack配置和管理云環境”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“怎么用CloudStack配置和管理云環境”這篇文章吧。
CloudStack 前身為 cloud.com 的商業化產品,它在 2011 年被 Ctrix 以超過二億美金價格收購,隨后又在今年被捐獻給 Apache 基金會。這項產品開源的舉措,引起了市場對 IaaS 發展路線的一些爭議,例如它與另外一個開源產品 OpenStack 的競爭與合作關系?
OpenStack 是由 Rackspace 和 NASA 主導開發的一個 IaaS,它擁有更大的用戶群,包括 HP,IBM,Dell 和 Redhat 等大公司。表 1 列出了 CloudStack 與 OpenStack 的一些對比。
表 1.CloudStack 與 OpenStack 的對比
附:比較數據截止至2012年中,對應的軟件版本為CloudStack 3和OpenStack Essex。
可以認為,在市場上 CloudStack 和 OpenStack 這兩個 IaaS 平臺存在不同的功能、客戶和發展路線,前者作為曾經的商業軟件,已經被證明為可以可靠的用于生產系統;而后者,雖則目前缺少廣泛的真實用戶,卻擁有更多的大公司支持。這是它們顯著的不同。
盡管如此,但從技術而言,它們背后的源代碼貢獻者并不是一定不同的,經常有來自同一家公司的開發人員為這兩個開源項目提交代碼。從這個角度說,兩個平臺在某一天的合并也不會令人驚奇。
還存在其它眾多的 IaaS 產品(例如 Eucalyptus,Nebula 等),可以在文末的 參考資源中找到一些介紹。總體而言,這些產品當中 CloudStack 和 OpenStack 是特性最為相近、也是最引起爭論的,參考資源中的一篇文章提及到了最近發生的一個有趣爭論。
CloudStack 架構圖
CloudStack 采用了典型的分層結構:客戶端、核心引擎、以及資源層。它面向各類型的客戶提供了不同的訪問方式:Web Console、Command Shell 和 Web Service API。通過它們,用戶可以管理使用在其底層的計算資源(又分為主機、網絡和存儲),完成諸如在主機上分配虛擬機,配給虛擬磁盤等功能。見圖 1。
圖 1. 系統架構圖
虛擬機如果使用 Xen 和 KVM,需要安裝 CloudStack Agent 來支持其與管理服務器的交互。而管理服務器和 Xen Server 交互則是靠 XAPI,和 vCenter、ESX 交互靠 HTTP。
當部署 CloudStack 時,需要了解它的層次結構和存儲管理,見圖 2。
圖 2. 部署圖
Zone:Zone 對應于現實中的一個數據中心,它是 CloudStack 中最大的一個單元。
Pod:Pod 對應著一個機架。同一個 pod 中的機器在同一個子網(網段)中。
Cluster:Cluster 是多個主機組成的一個集群。同一個 cluster 中的主機有相同的硬件,相同的 Hypervisor,和共用同樣的存儲。同一個 cluster 中的虛擬機,可以實現無中斷服務地從一個主機遷移到另外一個上。
Host:Host 就是運行虛擬機(VM)的主機。
即從包含關系上來說,一個 zone 包含多個 pod,一個 pod 包含多個 cluster,一個 cluster 包含多個 host。
CloudStack 中存在兩種存儲:
Primary storage:一級存儲與 cluster 關聯,它為該 cluster 中的主機的全部虛擬機提供磁盤卷。一個 cluster 至少有一個一級存儲,且在部署時位置要臨近主機以提供高性能。
Secondary storage:二級存儲與 zone 關聯,它存儲模板文件,ISO 鏡像和磁盤卷快照。
模板:可以啟動虛擬機的操作系統鏡像,也包括了諸如已安裝應用的其余配置信息。
ISO 鏡像:包含操作系統數據或啟動媒質的磁盤鏡像。
磁盤卷快照:虛擬機數據的已儲存副本,能用于數據恢復或者創建新模板。
安裝 CloudStack
環境準備
一個完整的 CloudStack 環境包括兩部分:
管理服務器(Management Server)
虛擬機管理器 (Hypervisor)
附:通常對 CloudStack 的 hypervisor 也有另外的稱呼,例如主機(host),代理(agent)等。本文統一為 hypervisor。
在本文的安裝步驟中,所要配置的為一個簡單網絡,即所有被管理的虛擬機都位于一個網段。相應的硬件如下:
表 2.軟硬件環境
本次安裝中 CloudStack 的版本為:Red Hat Enterprise Linux/CentOS 6.2
Hypervisor 為 KVM。
管理服務器需要更多的存儲空間是因為 NFS 也建在該機上。更多的詳細安裝需求可以參閱 CloudStack 官網的指南。這里需要著重列出的問題為:
Q1:官網的安裝要求中哪些軟硬件因素容易導致 CloudStack 的安裝失敗?
Hypervisor 所在的主機,要求 CPU 和主板支持硬件虛擬化(本人的機器是 DELL 臺式機,需要在主板的 BIOS 中設置 Intel-VT 為 enable)。
操作系統必須是 64 位的,推薦 centos 6.2(當前最新的 CloudStack 3 支持 6.2)。如果使用 5.5 或者 6.0 版本,一定要選擇匹配的 CloudStack 安裝包。Ubuntu 目前只有運行在 10.04 平臺上的發行版,且該 release 不是最新的 CloudStack。此處強烈建議新用戶給 Managment Server 和 Hypervisor 所在的兩臺主機選擇一樣的操作系統(推薦 centos/redhat)和一樣版本的 CloudStack 軟件,同時注意 OS 一定是要被官方 release 宣稱支持,這樣能避免走不少彎路。例如確實也存在有人能成功在 Ubuntu 12.04 或 centos 6.3(官方 2012 年 9 月尚未宣稱支持)上部署 CloudStack,但付出精力較大。
Hypervisor 的主機不能有任何正在運行的虛擬機,否則在后續的 add host 操作中會遇到失敗。最佳的建議是 hypervisor 主機上的操作系統為全新安裝,且沒有部署任何其余虛擬機。
無論是管理服務器還是 hypervisor 所在主機,都需要以 root 登錄進行 CloudStack 安裝。
Management Server 和 Hypervisor 主機必須是有獨立靜態 IP 的主機。否則后續安裝因為 IP 地址變化會導致 service 狀態異常。
CentOS 安裝后的默認網絡配置為 DHCP,需修改為手工分配 IP,這步操作要在 cloud-server 和 cloud-agent 兩臺機器都進行:
點擊桌面右上角的網絡圖標,編輯網絡:
圖 3
Method 原來為“DHCP”,改成設置為“Manual”,然后輸入靜態 IP 地址、掩碼、網關、DNS 服務器信息。
圖 4
安裝 Management Server
以 root 身份登錄 cloud-server.squirrel.org。
運行“hostname – fqdn”,檢查其返回的格式必須是包括域名的全稱(例如 cloud-server.squirrel.org)。Hostname 最好是在安裝 centos 時即設置好,否則需要在 /etc/hosts 和 /etc/sysconfig/network 兩處文件中同時修改才可以永久生效。
設置 SELinux。在 /etc/selinux/config 中修改“SELINUX=enforcing”為“SELINUX=permissive ”,并在 shell 中運行“setenforce permissive ”令其立即生效。
進入下載并解壓好的 CloudStack 安裝目錄 ( 我這里是 /home/squirrel/mybox/cloud/CloudStack-oss-3.0.2-1-rhel6.2),運行命令“./install.sh”,選擇“M”安裝 Management Server 軟件。
運行下面命令啟動 NFS 和 rpcbind 服務,并設置為開機運行:
# service rpcbind start # service nfs start # chkconfig nfs on # chkconfig rpcbind on
再次運行命令“./install.sh”,選擇“D”安裝數據庫 mysql。
編輯 /etc/my.cnf,在 [mysqld] 下面加入內容:
innodb_rollback_on_timeout=1 innodb_lock_wait_timeout=600 max_connections=350 log-bin=mysql-bin binlog-format = 'ROW'
重啟數據庫后,設置 root 用戶密碼。
# service mysqld restart # mysql -u root mysql> SET PASSWORDPASSWORD = PASSWORD('<password>'); mysql> exit
運行 CloudStack 腳本讓其自動配置數據庫:
#cloud-setup-databases cloud:<dbpassword>@localhost \ --deploy-as=root:<password>
即表示以 root 用戶身份來生成數據庫,該數據庫屬于新建的 cloud 用戶(密碼 dbpassword 可以留空)。
最后,下面的命令將完成對操作系統 iptables、sudoers 的設置(CloudStack 本身有安全性方面的要求,不是無限暴露給網絡,同時又需要一些管理權限來運行自身服務,因此要做這兩項的設置),并啟動管理服務器:
#cloud-setup-management
使用“service cloud-management status”查看運行狀態。
Q2:第 2 步中運行“hostname – fqdn”命令時,要保證機器是聯網狀態,才能返回正確的主機名稱。
Q3:如果后續打算把 hypervisor 也安裝在 management server 的同一臺主機上,需要在 /etc/sysconfig/network-scripts/ifcfg-<yourPhysicalDeviceName> 中配置出對應的信息。
同時,如果該 hypervisor 為 KVM,需要修改 /etc/sudoers ,加入如下行:
Defaults:cloud !requiretty
配置 NFS
前面講過,CloudStack 需要兩類存儲(primary storage 和 secondary storage)來支持它的 cluster 和 host,本節中由 NFS 來提供這兩個存儲,因此前述步驟中要啟動 NFS 服務。同時為了方便起見,NFS Server 也由 cloud-server.squirrel.org 充當。
以 root 身份登錄 cloud-server.squirrel.org。
創建兩個目錄,分別作為一級和二級存儲:
# mkdir -p /export/primary # mkdir -p /export/secondary
編輯文件 /etc/exports ,加入:
/export *(rw,async,no_root_squash)
然后導出 /export 目錄:
# exportfs -a
編輯 /etc/sysconfig/nfs 文件,取消如下行的注釋符號(或者在文件末尾直接添加下列行):
LOCKD_TCPPORT=32803 LOCKD_UDPPORT=32769 MOUNTD_PORT=892 RQUOTAD_PORT=875 STATD_PORT=662 STATD_OUTGOING_PORT=2020
編輯防火墻設置文件 /etc/sysconfig/iptables,在 input 部分最上面加入如下的規則:
-A INPUT -m state --state NEW -p udp --dport 111 -j ACCEPT -A INPUT -m state --state NEW -p tcp --dport 111 -j ACCEPT -A INPUT -m state --state NEW -p tcp --dport 2049 -j ACCEPT -A INPUT -m state --state NEW -p tcp --dport 32803 -j ACCEPT -A INPUT -m state --state NEW -p udp --dport 32769 -j ACCEPT -A INPUT -m state --state NEW -p tcp --dport 892 -j ACCEPT -A INPUT -m state --state NEW -p udp --dport 892 -j ACCEPT -A INPUT -m state --state NEW -p tcp --dport 875 -j ACCEPT -A INPUT -m state --state NEW -p udp --dport 875 -j ACCEPT -A INPUT -m state --state NEW -p tcp --dport 662 -j ACCEPT -A INPUT -m state --state NEW -p udp --dport 662 -j ACCEPT
重啟防火墻,并保存修改:
# service iptables restart # service iptables save
在管理服務器(cloud-server.squirrel.org)和 hypervisor 主機(cloud-agent.squirrel.org)上,修改文件 /etc/idmapd.conf,加入如下內容:
Domain = squirrel.org
重啟管理服務器的主機,然后測試并掛載 NFS。在 cloud-agent.squirrel.org 機器建立目錄 /primarymount,運行如下命令并確認其是否成功:
mount -t nfs 192.168.1.4:/export/primary /primarymount
Q4:在 KVM hypervisor 機器運行 showmount 命令時,如果采用的是 hostname,例如“showmount -e cloud-server.squirrel.org”,并且失敗,報錯“clnt_create: RPC: Program not registered”,那么可以嘗試用 IP 代替:“showmount -e 192.168.1.4”。或者編輯本機的 /etc/hosts,加入對方 server 的 IP- 主機名映射(但這樣失去了靈活性):
192.168.1.4 cloud-server.squirrel.org
Q5:第 5 步中新加入規則在防火墻配置文件中的次序對 NFS share 成功很重要,一定要加入 INPUT 區的最開始部分,即系統中原有的 input 項必須在新加入行的后面,否則可能在運行 showmount -e 192.168.1.4 時會出現
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host) 的錯誤。
Q6:出現錯誤 mount.nfs: access denied by server while mounting 192.168.1.4:/export/primary 的處理?
有時當運行“showmount -e cloud-server.squirrel.org”有“clnt_create: RPC: Port mapper failure - Unable to receive: errno 111 (Connection refused)”錯誤提示,然后 mount nfs 失敗,會出現標題上的錯誤信息,這可能跟 NFS 的建立方式有關,有時也跟防火墻有關。需要檢查 log:
tail -200 /var/log/messages refused mount request from 192.168.1.5 for /export/primary (/export): illegal port 1024
那么考慮嘗試如下方法:
vi /etc/exports
在原來的那一行上修改如下:
/export *(rw,async,insecure,no_root_squash)
然后:
exportfs -rv service nfs restart
在 cloud-agent.squirrel.org 上重新運行命令:
mount -t nfs 192.168.1.4:/export/primary /primarymount
沒有提示,應該成功了,可以確認:
mount |grep primary OK !
準備系統虛擬機模板
系統虛擬機模板(System VM Template)保存在二級存儲上,是用于創建云平臺上的系統虛擬機的。
以 root 身份登錄 cloud-server.squirrel.org。
這里下載的是 KVM 模板,運行如下命令安裝:
# /usr/lib64/cloud/agent/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary -u http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2 -h kvm -F
依賴于網絡速度,這個過程所需時間在幾分鐘到數小時(筆者的下載速度顯示在 2M~3M/s,三分鐘左右完成全部下載和安裝)。
Q7:這里有兩點需要注意:
磁盤分區必須夠大。
虛擬機模板的下載安裝這步不可省略,否則后面在控制臺添加二級存儲時會失敗。
系統虛擬機不同于普通的 hypervisor host 上的虛擬機,它是 CloudStack 自帶的用于完成自身系統相關的一些任務的 vm。它有兩種:
二級存儲虛擬機(Secondary Storage VM):下載上傳模板、下載鏡像,第一次創建虛擬機時從二級存儲拷貝模板到一級存儲并且自動創建快照等。
控制臺代理虛擬機(Console Proxy VM):用于在 web 界面上展示控制臺。
需要注意的是,系統虛機為 Debian 32 位操作系統,CloudStack 管理員可以用 SSH 登錄。同時,能在主機的 /var/lib/libvirt/images 查看到它們,如圖 5:
圖 5.查看已經安裝的 VMs
安裝 KVM Hypervisor
以 root 身份登錄 hypervisor 主機 cloud-agent.squirrel.org。
確保 hostname 是完整帶域名的,修改方法同管理服務器步驟 1。
運行“yum erase qemu-kvm”刪除 OS 自帶的 qemu-kvm。
進入下載并解壓好的 CloudStack 安裝目錄,運行命令“./install.sh”,選擇“A”安裝 agent。
安裝完畢后,運行下面命令啟動 nfs 和 rpcbind 服務,并設置為開機運行:
# service rpcbind start # service nfs start # chkconfig nfs on # chkconfig rpcbind on
Q8:如何處理因為沒有 enable VT 而導致 CloudStack Agent 啟動不成功?
注意檢查 log:/var/log/cloud/agent/。如果是因為 BIOS 的 VT 沒有打開而引起的啟動失敗,則需要在打開 VT 支持后重新安裝 agent。運行命令:
# service cloud-agent status
若顯示:
cloud-agent (pid 4188) is running...
則說明已經成功運行了。
安裝 NTP,時間同步
運行“yum install ntp”安裝 NTP 服務。
編輯配置文件 /etc/ntp.conf,加入如下服務器:
server 0.xenserver.pool.ntp.org server 1.xenserver.pool.ntp.org server 2.xenserver.pool.ntp.org server 3.xenserver.pool.ntp.org
重啟 NTP 并設置為開機自動運行:
# service ntpd restart # chkconfig ntpd on
在 Management Console 中配置虛擬化資源
當上面的管理服務器與 hypervisor 安裝好后,可以登錄進 CloudStack 的 UI console 進行資源的配置與部署。
和幾個競爭對手——例如 Eucalyptus 從一開始就對 AWS 的兼容,OpenStack 對松耦合組件的系統結構設計——相比,CloudStack 的特點之一就是有最友好的用戶界面,即控制管理臺。
首先打開瀏覽器,登錄 URL:
http://192.168.1.4:8080/client 用戶名 / 密碼:admin/password
選擇“Continue with basic installation”,接著修改 CloudStack 管理員密碼。
圖 6.添加 zone
圖 7.添加 pod
圖 8.添加客戶機網絡
圖 9.添加 cluster
圖 10.添加 host
圖 11.添加一級存儲
圖 12.添加二級存儲
最后點擊“Launch”啟動 CloudStack 云平臺,開始初始化。
圖 13.初始化中
直到出現成功信息。這樣一個簡單的云環境就搭建完畢,我們隨后可以在這個控制臺執行計算資源的管理任務了。下面兩圖為控制臺顯示界面。
圖 14.Overview
圖 15.Infrastructure
Q9:有時因為各種原因,例如在控制臺錯誤的配置了一些數據,需要重新初始化時,可以刪除 CloudStack 的數據庫,步驟如下:
在命令行下:
mysql –u root <password> mysql> drop database cloud; drop database cloud_usage; #cloud-setup-databases cloud:<dbpassword>@localhost --deploy-as=root:<password> #cloud-setup-management
然后重復本節的操作。
附:CloudStack 的 Web Console 界面是可以定制化的。
使用 CloudStack API
如同 AWS API 一樣,CloudStack API 也是基于 Web Service,可以使用任何一種支持 HTTP 調用的語言(例如 Java,PHP)編寫代碼。
調用代碼(caller)首先需要在管理服務器進行認證。目前 CloudStack 采用兩種認證方式:
Session 認證:通過 login API,獲得一個 JSESSIONID cookie 和一個 SESSIONKEY token。
API Key 認證。
本文代碼示例采用 API Key 進行認證。其過程如下:
管理員給調用者分配 API Key 和 Security Key(由 Admin 通過 web console 或者用 registerUserKeys在程序中生成)。
調用者用 Security Key 以 HMAC SHA-1 哈希算法對 API Key + Command String 生成簽名。
最后的 API Request=Base URL+API Path+Command String+Signature。
下面具體為 admin 用戶生成兩個 key:
首先登陸管理臺:http://192.168.1.4:8080/client。
點擊 accounts,選擇 admin,點擊 users tab,找到 admin。
可以看到 API Key 和 Security Key,如果兩個框沒有值,點擊工具欄的鑰匙小圖標,“Generate Keys”,如圖 16。
圖 16. 生成 API Key 和 Security Key
兩個 Key 的生成結果如下:
表 3.Admin 用戶的 API Key 和 Security Key
接下來用 CloudStack 的 Restful API 生成一個虛擬機。其調用 URL 如下:
http://192.168.1.4:8080/client/api?command=deployVirtualMachine&\ serviceofferingid=1&templateid=4&zoneid=1
command 參數中的內容可以參閱 API Reference: CloudStack,此處不贅述。需要注意的是,URL 當中每個參數是按照字母順序排列的,這是生成簽名必要的。
下面演示如何生成簽名并組裝一個完整的 URL。
首先在此處下載一段 perl 腳本,我們要利用它來幫助生成簽名。將它放入合適的目錄,然后在命令行下鍵入:
$ ./generate-url.pl –f 1 -u "command=deployvirtualmachine&serviceofferingid=1&templateid=4\ &zoneid=1" -a TEBBqfXkV-9blsxpkjFLAxNUmnvMsFEq7WKwPOMT_nuce69bmcElXz1\ izsN1qJFK58ye5U5hWWN2ckscsysodg – s 7VJx0QfxvJQZBYZbLdct2QFck8lV6hwLMvo9\ YCJ97pVou8f_aDSHdhEqBaY2CtFI6_MULP0eYqr_Z7D2Jon8nQ
-f 后面數字 1 是生成 url 的意思,-a 后面是 API Key,-s 后面是 Security Key。-u 后面的 command 參數都已經修改為小寫字母(此步不可省略)。命令運行完畢生成一段字符串:
http://*.*.*.*/client/api?command=deployvirtualmachine&serviceofferingid=1\&zoneid=1&templateid=4&apikey=Kn7rrPjdXDWTrcjCTLs7hZM22o0X6aKSZ4Cy4\ GDUHD1TmoVw3e-oNxjRTCBXchffju5OFTqW4zPIik-HKxH7-w&signature=%2BQMXTBOoicZJG\ 6EosCcRGvO7OWU%3D
然后把 IP 替換入上面 url,并把 command 中的小寫字母還原成原來正確的 API 名字,結果如下:
http://192.168.1.4:8080/client/api?command=listVirtualMachines&account=\admin&domainId=1&apikey=Kn7rrPjdXDWTrcjCTLs7hZM22o0X6aKSZ4Cy4GDUHD1TmoVw3e-o\ NxjRTCBXchffju5OFTqW4zPIik-HKxH7-w&signature=i5%2FQxBf7FIGc6GvAfNcpFnVKpEw%3D
把該 URL 鍵入瀏覽器,可以執行成功,返回一段 XML response:
<deployvirtualmachineresponse cloud-stack-version="3.0.2.20120506223416"> <id>d29a98f2-610c-4e4e-9331-18c133c5bdb3</id> <jobid>a5c9f26d-98be-4a81-9883-da9dd8dfda47</jobid> </deployvirtualmachineresponse>
如果回到控制臺界面的 instance tab,可以看到一個新的 vm instance 被創建。
用同樣的方法,使用如下命令,列舉出 Admin 用戶下的全部虛擬機。
http://192.168.1.4:8080/client/api?command=listVirtualMachines&account= admin&domainId=1&apikey=Kn7rrPjdXDWTrcjCTLs7hZM22o0X6aKSZ4Cy4GDUHD1TmoVw3e-\ oNxjRTCBXchffju5OFTqW4zPIik-HKxH7-w&signature=%2BQMXTBOoicZJG6EosCcRGvO7OWU%3D
Q10:CentOS 需要安裝 perl 開發環境才能運行上面的腳本。如果在命令執行過程中出現類似 cannot locate WWW/Mechanize 類的錯誤,需要先安裝 cpan:
yum install cpan
然后用 cpan 安裝缺少的 module:
cpan install WWW::Mechanize
后面缺少哪個 module,就用 cpan 安裝該 module,直到所使用的包都被裝入。
總體而言,CloudStack 的 API 提供了很靈活和強大的功能,而且通過 CloudBridge,更是實現了與亞馬遜 EC2 API 的兼容。
現狀與展望
CloudStack 目前在 Apache 站點的更新也很快,最新的 4.0 也已經發布,它提供了 VLAN 間路由(VPC)能力、給管理資源保存元數據、增加新類型存儲、和支持 Ubuntu 12.04 和 REHL6.3 等新功能。
在國內,像中國電信這類大型企業,還有一些中小型企業,都在迅速的使用 CloudStack 來構建它們的公共云或私有云、混合云平臺。在這些用戶的實踐中,CloudStack 對豐富種類的 Hypervisor、存儲類型的支持、強大的伸縮能力和網絡功能、良好的安全設計、靈活的 API 調用都令人留下深刻印象。
與 OpenStack 的競爭會是接下來幾年 CloudStack 無法回避的問題,相對于對手的后發優勢,CloudStack 更強調成熟的產品應用。但隨著自身的開源,將來的 IaaS 市場也許會在求同方面走的更遠。
以上是“怎么用CloudStack配置和管理云環境”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。