自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用 CloudStack 配置和管理一個(gè)簡單云

運(yùn)維 系統(tǒng)運(yùn)維
CloudStack 是 Ctrix 公司在 IaaS 市場上的主打產(chǎn)品,它提供了對云計(jì)算資源的靈活部署與管理能力。今年上半年 Ctrix 將其源代碼貢獻(xiàn)給 Apache 后,CloudStack 成為一個(gè)開源項(xiàng)目。這類開源項(xiàng)目的文檔雖歷經(jīng)完善,但作為一個(gè)云計(jì)算領(lǐng)域的新手開始嘗試它的安裝與部署時(shí),總還是遇到或多或少的挑戰(zhàn)。這便是本文目的所在,即忠實(shí)記錄并嘗試總結(jié)這個(gè)過程中的一些問題,與大家分享。

 CloudStack 在 IaaS 市場的背景和主要競爭對手

隨著亞馬遜在公有云和 VMware 在私有云方面的成功,各類企業(yè)紛紛在云時(shí)代邁出了自己的步伐,這些企業(yè)希望在自身的計(jì)算資源(主機(jī),網(wǎng)絡(luò),存儲)虛擬化過程中能夠獲得強(qiáng)大功能的同時(shí),又維持相對低廉的成本。這正是 IaaS 供應(yīng)商們發(fā)展的動(dòng)力。

IaaS 提供了對資源的自動(dòng)化管理能力。例如用界面、腳本甚至 Web Service API 實(shí)現(xiàn)對大量硬件、大量虛擬機(jī)的生命周期管理。IaaS 產(chǎn)品面對的是大規(guī)模、可伸縮的云環(huán)境,這是與用手工管理有限資源的方式完全不同的一類系統(tǒng)。

CloudStack 前身為 cloud.com 的商業(yè)化產(chǎn)品,它在 2011 年被 Ctrix 以超過二億美金價(jià)格收購,隨后又在今年被捐獻(xiàn)給 Apache 基金會。這項(xiàng)產(chǎn)品開源的舉措,引起了市場對 IaaS 發(fā)展路線的一些爭議,例如它與另外一個(gè)開源產(chǎn)品 OpenStack 的競爭與合作關(guān)系?

OpenStack 是由 Rackspace 和 NASA 主導(dǎo)開發(fā)的一個(gè) IaaS,它擁有更大的用戶群,包括 HP,IBM,Dell 和 Redhat 等大公司。表 1 列出了 CloudStack 與 OpenStack 的一些對比。

表 1.CloudStack 與 OpenStack 的對比

附:比較數(shù)據(jù)截止至2012年中,對應(yīng)的軟件版本為CloudStack 3和OpenStack Essex。

可以認(rèn)為,在市場上 CloudStack 和 OpenStack 這兩個(gè) IaaS 平臺存在不同的功能、客戶和發(fā)展路線,前者作為曾經(jīng)的商業(yè)軟件,已經(jīng)被證明為可以可靠的用于生產(chǎn)系統(tǒng);而后者,雖則目前缺少廣泛的真實(shí)用戶,卻擁有更多的大公司支持。這是它們顯著的不同。

盡管如此,但從技術(shù)而言,它們背后的源代碼貢獻(xiàn)者并不是一定不同的,經(jīng)常有來自同一家公司的開發(fā)人員為這兩個(gè)開源項(xiàng)目提交代碼。從這個(gè)角度說,兩個(gè)平臺在某一天的合并也不會令人驚奇。

還存在其它眾多的 IaaS 產(chǎn)品(例如 Eucalyptus,Nebula 等),可以在文末的 參考資源中找到一些介紹??傮w而言,這些產(chǎn)品當(dāng)中 CloudStack 和 OpenStack 是特性最為相近、也是最引起爭論的,參考資源中的一篇文章提及到了最近發(fā)生的一個(gè)有趣爭論。

CloudStack 架構(gòu)圖

CloudStack 采用了典型的分層結(jié)構(gòu):客戶端、核心引擎、以及資源層。它面向各類型的客戶提供了不同的訪問方式:Web Console、Command Shell 和 Web Service API。通過它們,用戶可以管理使用在其底層的計(jì)算資源(又分為主機(jī)、網(wǎng)絡(luò)和存儲),完成諸如在主機(jī)上分配虛擬機(jī),配給虛擬磁盤等功能。見圖 1。

圖 1. 系統(tǒng)架構(gòu)圖

虛擬機(jī)如果使用 Xen 和 KVM,需要安裝 CloudStack Agent 來支持其與管理服務(wù)器的交互。而管理服務(wù)器和 Xen Server 交互則是靠 XAPI,和 vCenter、ESX 交互靠 HTTP。

當(dāng)部署 CloudStack 時(shí),需要了解它的層次結(jié)構(gòu)和存儲管理,見圖 2。

圖 2. 部署圖

Zone:Zone 對應(yīng)于現(xiàn)實(shí)中的一個(gè)數(shù)據(jù)中心,它是 CloudStack 中最大的一個(gè)單元。

Pod:Pod 對應(yīng)著一個(gè)機(jī)架。同一個(gè) pod 中的機(jī)器在同一個(gè)子網(wǎng)(網(wǎng)段)中。

Cluster:Cluster 是多個(gè)主機(jī)組成的一個(gè)集群。同一個(gè) cluster 中的主機(jī)有相同的硬件,相同的 Hypervisor,和共用同樣的存儲。同一個(gè) cluster 中的虛擬機(jī),可以實(shí)現(xiàn)無中斷服務(wù)地從一個(gè)主機(jī)遷移到另外一個(gè)上。

Host:Host 就是運(yùn)行虛擬機(jī)(VM)的主機(jī)。

即從包含關(guān)系上來說,一個(gè) zone 包含多個(gè) pod,一個(gè) pod 包含多個(gè) cluster,一個(gè) cluster 包含多個(gè) host。

CloudStack 中存在兩種存儲:

Primary storage:一級存儲與 cluster 關(guān)聯(lián),它為該 cluster 中的主機(jī)的全部虛擬機(jī)提供磁盤卷。一個(gè) cluster 至少有一個(gè)一級存儲,且在部署時(shí)位置要臨近主機(jī)以提供高性能。

Secondary storage:二級存儲與 zone 關(guān)聯(lián),它存儲模板文件,ISO 鏡像和磁盤卷快照。

模板:可以啟動(dòng)虛擬機(jī)的操作系統(tǒng)鏡像,也包括了諸如已安裝應(yīng)用的其余配置信息。

ISO 鏡像:包含操作系統(tǒng)數(shù)據(jù)或啟動(dòng)媒質(zhì)的磁盤鏡像。

磁盤卷快照:虛擬機(jī)數(shù)據(jù)的已儲存副本,能用于數(shù)據(jù)恢復(fù)或者創(chuàng)建新模板。#p#

安裝 CloudStack

環(huán)境準(zhǔn)備

  • 一個(gè)完整的 CloudStack 環(huán)境包括兩部分:
  • 管理服務(wù)器(Management Server)
  • 虛擬機(jī)管理器 (Hypervisor)

附:通常對 CloudStack 的 hypervisor 也有另外的稱呼,例如主機(jī)(host),代理(agent)等。本文統(tǒng)一為 hypervisor。

在本文的安裝步驟中,所要配置的為一個(gè)簡單網(wǎng)絡(luò),即所有被管理的虛擬機(jī)都位于一個(gè)網(wǎng)段。相應(yīng)的硬件如下:

表 2.軟硬件環(huán)境

本次安裝中 CloudStack 的版本為:Red Hat Enterprise Linux/CentOS 6.2

Hypervisor 為 KVM。

管理服務(wù)器需要更多的存儲空間是因?yàn)?NFS 也建在該機(jī)上。更多的詳細(xì)安裝需求可以參閱 CloudStack 官網(wǎng)的指南。這里需要著重列出的問題為:

Q1:官網(wǎng)的安裝要求中哪些軟硬件因素容易導(dǎo)致 CloudStack 的安裝失???

Hypervisor 所在的主機(jī),要求 CPU 和主板支持硬件虛擬化(本人的機(jī)器是 DELL 臺式機(jī),需要在主板的 BIOS 中設(shè)置 Intel-VT 為 enable)。

操作系統(tǒng)必須是 64 位的,推薦 centos 6.2(當(dāng)前最新的 CloudStack 3 支持 6.2)。如果使用 5.5 或者 6.0 版本,一定要選擇匹配的 CloudStack 安裝包。Ubuntu 目前只有運(yùn)行在 10.04 平臺上的發(fā)行版,且該 release 不是最新的 CloudStack。此處強(qiáng)烈建議新用戶給 Managment Server 和 Hypervisor 所在的兩臺主機(jī)選擇一樣的操作系統(tǒng)(推薦 centos/redhat)和一樣版本的 CloudStack 軟件,同時(shí)注意 OS 一定是要被官方 release 宣稱支持,這樣能避免走不少彎路。例如確實(shí)也存在有人能成功在 Ubuntu 12.04 或 centos 6.3(官方 2012 年 9 月尚未宣稱支持)上部署 CloudStack,但付出精力較大。

Hypervisor 的主機(jī)不能有任何正在運(yùn)行的虛擬機(jī),否則在后續(xù)的 add host 操作中會遇到失敗。最佳的建議是 hypervisor 主機(jī)上的操作系統(tǒng)為全新安裝,且沒有部署任何其余虛擬機(jī)。

無論是管理服務(wù)器還是 hypervisor 所在主機(jī),都需要以 root 登錄進(jìn)行 CloudStack 安裝。

Management Server 和 Hypervisor 主機(jī)必須是有獨(dú)立靜態(tài) IP 的主機(jī)。否則后續(xù)安裝因?yàn)?IP 地址變化會導(dǎo)致 service 狀態(tài)異常。

CentOS 安裝后的默認(rèn)網(wǎng)絡(luò)配置為 DHCP,需修改為手工分配 IP,這步操作要在 cloud-server 和 cloud-agent 兩臺機(jī)器都進(jìn)行:

點(diǎn)擊桌面右上角的網(wǎng)絡(luò)圖標(biāo),編輯網(wǎng)絡(luò):

圖 3

Method 原來為“DHCP”,改成設(shè)置為“Manual”,然后輸入靜態(tài) IP 地址、掩碼、網(wǎng)關(guān)、DNS 服務(wù)器信息。

圖 4

安裝 Management Server

以 root 身份登錄 cloud-server.squirrel.org。

運(yùn)行“hostname – fqdn”,檢查其返回的格式必須是包括域名的全稱(例如 cloud-server.squirrel.org)。Hostname 最好是在安裝 centos 時(shí)即設(shè)置好,否則需要在 /etc/hosts 和 /etc/sysconfig/network 兩處文件中同時(shí)修改才可以永久生效。

設(shè)置 SELinux。在 /etc/selinux/config 中修改“SELINUX=enforcing”為“SELINUX=permissive ”,并在 shell 中運(yùn)行“setenforce permissive ”令其立即生效。

進(jìn)入下載并解壓好的 CloudStack 安裝目錄 ( 我這里是 /home/squirrel/mybox/cloud/CloudStack-oss-3.0.2-1-rhel6.2),運(yùn)行命令“./install.sh”,選擇“M”安裝 Management Server 軟件。

運(yùn)行下面命令啟動(dòng) NFS 和 rpcbind 服務(wù),并設(shè)置為開機(jī)運(yùn)行:

  1. # service rpcbind start 
  2. # service nfs start 
  3. # chkconfig nfs on 
  4. # chkconfig rpcbind on 

再次運(yùn)行命令“./install.sh”,選擇“D”安裝數(shù)據(jù)庫 mysql。

編輯 /etc/my.cnf,在 [mysqld] 下面加入內(nèi)容:

  1. innodb_rollback_on_timeout=1 
  2. innodb_lock_wait_timeout=600 
  3. max_connections=350 
  4. log-bin=mysql-bin 
  5. binlog-format = 'ROW' 

重啟數(shù)據(jù)庫后,設(shè)置 root 用戶密碼。

  1. # service mysqld restart 
  2. # mysql -u root 
  3. mysql> SET PASSWORDPASSWORD = PASSWORD('<password>'); 
  4. mysql> exit 

運(yùn)行 CloudStack 腳本讓其自動(dòng)配置數(shù)據(jù)庫:

  1. #cloud-setup-databases cloud:<dbpassword>@localhost \ 
  2. --deploy-as=root:<password> 

即表示以 root 用戶身份來生成數(shù)據(jù)庫,該數(shù)據(jù)庫屬于新建的 cloud 用戶(密碼 dbpassword 可以留空)。

最后,下面的命令將完成對操作系統(tǒng) iptables、sudoers 的設(shè)置(CloudStack 本身有安全性方面的要求,不是無限暴露給網(wǎng)絡(luò),同時(shí)又需要一些管理權(quán)限來運(yùn)行自身服務(wù),因此要做這兩項(xiàng)的設(shè)置),并啟動(dòng)管理服務(wù)器:

  1. #cloud-setup-management 

使用“service cloud-management status”查看運(yùn)行狀態(tài)。

Q2:第 2 步中運(yùn)行“hostname – fqdn”命令時(shí),要保證機(jī)器是聯(lián)網(wǎng)狀態(tài),才能返回正確的主機(jī)名稱。

Q3:如果后續(xù)打算把 hypervisor 也安裝在 management server 的同一臺主機(jī)上,需要在 /etc/sysconfig/network-scripts/ifcfg-<yourPhysicalDeviceName> 中配置出對應(yīng)的信息。

同時(shí),如果該 hypervisor 為 KVM,需要修改 /etc/sudoers ,加入如下行:

  1. Defaults:cloud !requiretty 

配置 NFS

前面講過,CloudStack 需要兩類存儲(primary storage 和 secondary storage)來支持它的 cluster 和 host,本節(jié)中由 NFS 來提供這兩個(gè)存儲,因此前述步驟中要啟動(dòng) NFS 服務(wù)。同時(shí)為了方便起見,NFS Server 也由 cloud-server.squirrel.org 充當(dāng)。

以 root 身份登錄 cloud-server.squirrel.org。

創(chuàng)建兩個(gè)目錄,分別作為一級和二級存儲:

  1. # mkdir -p /export/primary 
  2. # mkdir -p /export/secondary 

編輯文件 /etc/exports ,加入:

  1. /export *(rw,async,no_root_squash) 

然后導(dǎo)出 /export 目錄:

  1. # exportfs -a 

編輯 /etc/sysconfig/nfs 文件,取消如下行的注釋符號(或者在文件末尾直接添加下列行):

  1. LOCKD_TCPPORT=32803 
  2. LOCKD_UDPPORT=32769 
  3. MOUNTD_PORT=892 
  4. RQUOTAD_PORT=875 
  5. STATD_PORT=662 
  6. STATD_OUTGOING_PORT=2020 

編輯防火墻設(shè)置文件 /etc/sysconfig/iptables,在 input 部分最上面加入如下的規(guī)則:

  1. -A INPUT -m state --state NEW -p udp --dport 111 -j ACCEPT 
  2. -A INPUT -m state --state NEW -p tcp --dport 111 -j ACCEPT 
  3. -A INPUT -m state --state NEW -p tcp --dport 2049 -j ACCEPT 
  4. -A INPUT -m state --state NEW -p tcp --dport 32803 -j ACCEPT 
  5. -A INPUT -m state --state NEW -p udp --dport 32769 -j ACCEPT 
  6. -A INPUT -m state --state NEW -p tcp --dport 892 -j ACCEPT 
  7. -A INPUT -m state --state NEW -p udp --dport 892 -j ACCEPT 
  8. -A INPUT -m state --state NEW -p tcp --dport 875 -j ACCEPT 
  9. -A INPUT -m state --state NEW -p udp --dport 875 -j ACCEPT 
  10. -A INPUT -m state --state NEW -p tcp --dport 662 -j ACCEPT 
  11. -A INPUT -m state --state NEW -p udp --dport 662 -j ACCEPT 

重啟防火墻,并保存修改:

  1. # service iptables restart 
  2. # service iptables save 

在管理服務(wù)器(cloud-server.squirrel.org)和 hypervisor 主機(jī)(cloud-agent.squirrel.org)上,修改文件 /etc/idmapd.conf,加入如下內(nèi)容:

  1. Domain = squirrel.org 

重啟管理服務(wù)器的主機(jī),然后測試并掛載 NFS。在 cloud-agent.squirrel.org 機(jī)器建立目錄 /primarymount,運(yùn)行如下命令并確認(rèn)其是否成功:

  1. mount -t nfs 192.168.1.4:/export/primary /primarymount 

Q4:在 KVM hypervisor 機(jī)器運(yùn)行 showmount 命令時(shí),如果采用的是 hostname,例如“showmount -e cloud-server.squirrel.org”,并且失敗,報(bào)錯(cuò)“clnt_create: RPC: Program not registered”,那么可以嘗試用 IP 代替:“showmount -e 192.168.1.4”?;蛘呔庉嫳緳C(jī)的 /etc/hosts,加入對方 server 的 IP- 主機(jī)名映射(但這樣失去了靈活性):

  1. 192.168.1.4 cloud-server.squirrel.org 

Q5:第 5 步中新加入規(guī)則在防火墻配置文件中的次序?qū)?NFS share 成功很重要,一定要加入 INPUT 區(qū)的最開始部分,即系統(tǒng)中原有的 input 項(xiàng)必須在新加入行的后面,否則可能在運(yùn)行 showmount -e 192.168.1.4 時(shí)會出現(xiàn)

clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host) 的錯(cuò)誤。

Q6:出現(xiàn)錯(cuò)誤 mount.nfs: access denied by server while mounting 192.168.1.4:/export/primary 的處理?

有時(shí)當(dāng)運(yùn)行“showmount -e cloud-server.squirrel.org”有“clnt_create: RPC: Port mapper failure - Unable to receive: errno 111 (Connection refused)”錯(cuò)誤提示,然后 mount nfs 失敗,會出現(xiàn)標(biāo)題上的錯(cuò)誤信息,這可能跟 NFS 的建立方式有關(guān),有時(shí)也跟防火墻有關(guān)。需要檢查 log:

  1. tail -200 /var/log/messages 
  2. refused mount request from 192.168.1.5 for /export/primary (/export): illegal port 1024 

那么考慮嘗試如下方法:

  1. vi /etc/exports 

在原來的那一行上修改如下:

  1. /export *(rw,async,insecure,no_root_squash) 

然后:

  1. exportfs -rv 
  2. service nfs restart 

在 cloud-agent.squirrel.org 上重新運(yùn)行命令:

  1. mount -t nfs 192.168.1.4:/export/primary /primarymount 

沒有提示,應(yīng)該成功了,可以確認(rèn):

  1. mount |grep primary 
  2. OK ! 

準(zhǔn)備系統(tǒng)虛擬機(jī)模板

系統(tǒng)虛擬機(jī)模板(System VM Template)保存在二級存儲上,是用于創(chuàng)建云平臺上的系統(tǒng)虛擬機(jī)的。

以 root 身份登錄 cloud-server.squirrel.org。

這里下載的是 KVM 模板,運(yùn)行如下命令安裝:

  1. # /usr/lib64/cloud/agent/scripts/storage/secondary/cloud-install-sys-tmplt 
  2. -m /export/secondary 
  3. -u http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2 
  4. -h kvm -F 

依賴于網(wǎng)絡(luò)速度,這個(gè)過程所需時(shí)間在幾分鐘到數(shù)小時(shí)(筆者的下載速度顯示在 2M~3M/s,三分鐘左右完成全部下載和安裝)。

Q7:這里有兩點(diǎn)需要注意:

  • 磁盤分區(qū)必須夠大。
  • 虛擬機(jī)模板的下載安裝這步不可省略,否則后面在控制臺添加二級存儲時(shí)會失敗。

系統(tǒng)虛擬機(jī)不同于普通的 hypervisor host 上的虛擬機(jī),它是 CloudStack 自帶的用于完成自身系統(tǒng)相關(guān)的一些任務(wù)的 vm。它有兩種:

  • 二級存儲虛擬機(jī)(Secondary Storage VM):下載上傳模板、下載鏡像,第一次創(chuàng)建虛擬機(jī)時(shí)從二級存儲拷貝模板到一級存儲并且自動(dòng)創(chuàng)建快照等。
  • 控制臺代理虛擬機(jī)(Console Proxy VM):用于在 web 界面上展示控制臺。

需要注意的是,系統(tǒng)虛機(jī)為 Debian 32 位操作系統(tǒng),CloudStack 管理員可以用 SSH 登錄。同時(shí),能在主機(jī)的 /var/lib/libvirt/images 查看到它們,如圖 5:

 

圖 5.查看已經(jīng)安裝的 VMs

#p#

安裝 KVM Hypervisor

以 root 身份登錄 hypervisor 主機(jī) cloud-agent.squirrel.org。

確保 hostname 是完整帶域名的,修改方法同管理服務(wù)器步驟 1。

運(yùn)行“yum erase qemu-kvm”刪除 OS 自帶的 qemu-kvm。

進(jìn)入下載并解壓好的 CloudStack 安裝目錄,運(yùn)行命令“./install.sh”,選擇“A”安裝 agent。

安裝完畢后,運(yùn)行下面命令啟動(dòng) nfs 和 rpcbind 服務(wù),并設(shè)置為開機(jī)運(yùn)行:

  1. # service rpcbind start 
  2. # service nfs start 
  3. # chkconfig nfs on 
  4. # chkconfig rpcbind on 

Q8:如何處理因?yàn)闆]有 enable VT 而導(dǎo)致 CloudStack Agent 啟動(dòng)不成功?

注意檢查 log:/var/log/cloud/agent/。如果是因?yàn)?BIOS 的 VT 沒有打開而引起的啟動(dòng)失敗,則需要在打開 VT 支持后重新安裝 agent。運(yùn)行命令:

  1. # service cloud-agent status 

若顯示:

  1. cloud-agent (pid  4188) is running... 

則說明已經(jīng)成功運(yùn)行了。

安裝 NTP,時(shí)間同步

運(yùn)行“yum install ntp”安裝 NTP 服務(wù)。

編輯配置文件 /etc/ntp.conf,加入如下服務(wù)器:

  1. server 0.xenserver.pool.ntp.org 
  2. server 1.xenserver.pool.ntp.org 
  3. server 2.xenserver.pool.ntp.org 
  4. server 3.xenserver.pool.ntp.org 

重啟 NTP 并設(shè)置為開機(jī)自動(dòng)運(yùn)行:

  1. # service ntpd restart 
  2. # chkconfig ntpd on  

在 Management Console 中配置虛擬化資源

當(dāng)上面的管理服務(wù)器與 hypervisor 安裝好后,可以登錄進(jìn) CloudStack 的 UI console 進(jìn)行資源的配置與部署。

和幾個(gè)競爭對手——例如 Eucalyptus 從一開始就對 AWS 的兼容,OpenStack 對松耦合組件的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)——相比,CloudStack 的特點(diǎn)之一就是有最友好的用戶界面,即控制管理臺。

首先打開瀏覽器,登錄 URL:

  1. http://192.168.1.4:8080/client 
  2. 用戶名 / 密碼:admin/password 

選擇“Continue with basic installation”,接著修改 CloudStack 管理員密碼。

圖 6.添加 zone

圖 7.添加 pod

圖 8.添加客戶機(jī)網(wǎng)絡(luò)

圖 9.添加 cluster

圖 10.添加 host

圖 11.添加一級存儲

圖 12.添加二級存儲

最后點(diǎn)擊“Launch”啟動(dòng) CloudStack 云平臺,開始初始化。

 

圖 13.初始化中

直到出現(xiàn)成功信息。這樣一個(gè)簡單的云環(huán)境就搭建完畢,我們隨后可以在這個(gè)控制臺執(zhí)行計(jì)算資源的管理任務(wù)了。下面兩圖為控制臺顯示界面。

圖 14.Overview

圖 15.Infrastructure

Q9:有時(shí)因?yàn)楦鞣N原因,例如在控制臺錯(cuò)誤的配置了一些數(shù)據(jù),需要重新初始化時(shí),可以刪除 CloudStack 的數(shù)據(jù)庫,步驟如下:

在命令行下:

  1. mysql –u root <password> 
  2. mysql> drop database cloud; drop database cloud_usage; 
  3. #cloud-setup-databases cloud:<dbpassword>@localhost --deploy-as=root:<password> 
  4. #cloud-setup-management 

然后重復(fù)本節(jié)的操作。

附:CloudStack 的 Web Console 界面是可以定制化的。

#p#

使用 CloudStack API

如同 AWS API 一樣,CloudStack API 也是基于 Web Service,可以使用任何一種支持 HTTP 調(diào)用的語言(例如 Java,PHP)編寫代碼。

調(diào)用代碼(caller)首先需要在管理服務(wù)器進(jìn)行認(rèn)證。目前 CloudStack 采用兩種認(rèn)證方式:

  • Session 認(rèn)證:通過 login API,獲得一個(gè) JSESSIONID cookie 和一個(gè) SESSIONKEY token。
  • API Key 認(rèn)證。

本文代碼示例采用 API Key 進(jìn)行認(rèn)證。其過程如下:

管理員給調(diào)用者分配 API Key 和 Security Key(由 Admin 通過 web console 或者用 registerUserKeys在程序中生成)。

調(diào)用者用 Security Key 以 HMAC SHA-1 哈希算法對 API Key + Command String 生成簽名。

最后的 API Request=Base URL+API Path+Command String+Signature。

下面具體為 admin 用戶生成兩個(gè) key:

首先登陸管理臺:http://192.168.1.4:8080/client。

點(diǎn)擊 accounts,選擇 admin,點(diǎn)擊 users tab,找到 admin。

可以看到 API Key 和 Security Key,如果兩個(gè)框沒有值,點(diǎn)擊工具欄的鑰匙小圖標(biāo),“Generate Keys”,如圖 16。

圖 16. 生成 API Key 和 Security Key

兩個(gè) Key 的生成結(jié)果如下:

表 3.Admin 用戶的 API Key 和 Security Key

接下來用 CloudStack 的 Restful API 生成一個(gè)虛擬機(jī)。其調(diào)用 URL 如下:

  1. http://192.168.1.4:8080/client/api?command=deployVirtualMachine&\ 
  2. serviceofferingid=1&templateid=4&zoneid=1 

command 參數(shù)中的內(nèi)容可以參閱 API Reference: CloudStack,此處不贅述。需要注意的是,URL 當(dāng)中每個(gè)參數(shù)是按照字母順序排列的,這是生成簽名必要的。

下面演示如何生成簽名并組裝一個(gè)完整的 URL。

首先在此處下載一段 perl 腳本,我們要利用它來幫助生成簽名。將它放入合適的目錄,然后在命令行下鍵入:

  1. $ ./generate-url.pl –f 1 -u 
  2. "command=deployvirtualmachine&serviceofferingid=1&templateid=4
  3. &zoneid=1" -a TEBBqfXkV-9blsxpkjFLAxNUmnvMsFEq7WKwPOMT_nuce69bmcElXz1\ 
  4. izsN1qJFK58ye5U5hWWN2ckscsysodg – s 7VJx0QfxvJQZBYZbLdct2QFck8lV6hwLMvo9\ 
  5. YCJ97pVou8f_aDSHdhEqBaY2CtFI6_MULP0eYqr_Z7D2Jon8nQ 

-f 后面數(shù)字 1 是生成 url 的意思,-a 后面是 API Key,-s 后面是 Security Key。-u 后面的 command 參數(shù)都已經(jīng)修改為小寫字母(此步不可省略)。命令運(yùn)行完畢生成一段字符串:

  1. http://*.*.*.*/client/api?command=deployvirtualmachine&serviceofferingid=1\&zoneid=1&templateid=4&apikey=Kn7rrPjdXDWTrcjCTLs7hZM22o0X6aKSZ4Cy4
  2. GDUHD1TmoVw3e-oNxjRTCBXchffju5OFTqW4zPIik-HKxH7-w&signature=%2BQMXTBOoicZJG\ 
  3. 6EosCcRGvO7OWU%3D 

然后把 IP 替換入上面 url,并把 command 中的小寫字母還原成原來正確的 API 名字,結(jié)果如下:

  1. http://192.168.1.4:8080/client/api?command=listVirtualMachines&account=\admin&amp;domainId=1&apikey=Kn7rrPjdXDWTrcjCTLs7hZM22o0X6aKSZ4Cy4GDUHD1TmoVw3e-o\ 
  2. NxjRTCBXchffju5OFTqW4zPIik-HKxH7-w&signature=i5%2FQxBf7FIGc6GvAfNcpFnVKpEw%3D 

把該 URL 鍵入瀏覽器,可以執(zhí)行成功,返回一段 XML response:

  1. <deployvirtualmachineresponse cloud-stack-version="3.0.2.20120506223416"> 
  2. <id>d29a98f2-610c-4e4e-9331-18c133c5bdb3</id> 
  3. <jobid>a5c9f26d-98be-4a81-9883-da9dd8dfda47</jobid> 
  4. </deployvirtualmachineresponse> 

如果回到控制臺界面的 instance tab,可以看到一個(gè)新的 vm instance 被創(chuàng)建。

用同樣的方法,使用如下命令,列舉出 Admin 用戶下的全部虛擬機(jī)。

  1. http://192.168.1.4:8080/client/api?command=listVirtualMachines&account
  2. admin&amp;domainId=1&apikey=Kn7rrPjdXDWTrcjCTLs7hZM22o0X6aKSZ4Cy4GDUHD1TmoVw3e-\ 
  3. oNxjRTCBXchffju5OFTqW4zPIik-HKxH7-w&signature=%2BQMXTBOoicZJG6EosCcRGvO7OWU%3D 

Q10:CentOS 需要安裝 perl 開發(fā)環(huán)境才能運(yùn)行上面的腳本。如果在命令執(zhí)行過程中出現(xiàn)類似 cannot locate WWW/Mechanize 類的錯(cuò)誤,需要先安裝 cpan:

  1. yum install cpan 

然后用 cpan 安裝缺少的 module:

  1. cpan install WWW::Mechanize 

后面缺少哪個(gè) module,就用 cpan 安裝該 module,直到所使用的包都被裝入。

總體而言,CloudStack 的 API 提供了很靈活和強(qiáng)大的功能,而且通過 CloudBridge,更是實(shí)現(xiàn)了與亞馬遜 EC2 API 的兼容。

現(xiàn)狀與展望

CloudStack 目前在 Apache 站點(diǎn)的更新也很快,最新的 4.0 也已經(jīng)發(fā)布,它提供了 VLAN 間路由(VPC)能力、給管理資源保存元數(shù)據(jù)、增加新類型存儲、和支持 Ubuntu 12.04 和 REHL6.3 等新功能。

在國內(nèi),像中國電信這類大型企業(yè),還有一些中小型企業(yè),都在迅速的使用 CloudStack 來構(gòu)建它們的公共云或私有云、混合云平臺。在這些用戶的實(shí)踐中,CloudStack 對豐富種類的 Hypervisor、存儲類型的支持、強(qiáng)大的伸縮能力和網(wǎng)絡(luò)功能、良好的安全設(shè)計(jì)、靈活的 API 調(diào)用都令人留下深刻印象。

與 OpenStack 的競爭會是接下來幾年 CloudStack 無法回避的問題,相對于對手的后發(fā)優(yōu)勢,CloudStack 更強(qiáng)調(diào)成熟的產(chǎn)品應(yīng)用。但隨著自身的開源,將來的 IaaS 市場也許會在求同方面走的更遠(yuǎn)。

責(zé)任編輯:黃丹 來源: developerWorks
相關(guān)推薦

2013-06-27 14:44:36

思杰

2011-04-08 10:29:04

AccessMIS管理系統(tǒng)

2020-07-20 10:00:52

Python翻譯工具命令行

2017-06-08 15:53:38

PythonWeb框架

2020-06-04 12:55:44

PyTorch分類器神經(jīng)網(wǎng)絡(luò)

2011-11-10 09:46:41

云計(jì)算云管理

2019-09-23 09:11:02

Python文本編輯器操作系統(tǒng)

2022-10-21 14:21:46

JavaScript筆記技能

2013-03-12 09:39:37

CloudStack開源云平臺虛擬機(jī)

2016-03-01 14:37:47

華為

2013-10-18 09:56:06

CloudStackIPMI

2024-09-09 17:06:32

2011-09-08 13:41:53

Widget

2011-03-24 09:34:41

SPRING

2021-08-27 12:16:34

fastjarJAR文件Java

2021-04-25 08:58:00

Go拍照云盤

2018-11-06 21:00:09

Python編程語言人臉識別

2011-03-02 15:47:37

PureftpdPureDBLinux

2012-11-01 09:37:42

CloudStackOpenStack

2020-09-28 12:42:17

機(jī)器學(xué)習(xí)語言GitHub
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號