1. 程式人生 > 實用技巧 >CloudStack4.1.1升級CloudPlatForm4.2.0實踐手冊

CloudStack4.1.1升級CloudPlatForm4.2.0實踐手冊


背景闡述

CloudStack是開源軟體,CloudPlatFormCloudStack的企業版實現,其中增加了某些企業級特性,如主機高可用,所以打算將原有的CloudStack升級為CloudPlatForm,從而提高整個架構的穩定性與高可用性。

建議使用本手冊的讀者先單獨安裝CloudStack4.1.1以及CloudPlatForm4.2.0或者CloudStack4.2.0,需要足夠了解兩個版本之間的安裝差異,才能在升級的過程中遇到問題可以快速定位是個人操作的問題還是版本差異導致的問題。畢竟生產環境的升級風險還是非常之大的。

如果讀者使用在生產環境上面的CloudStack有外圍系統需要呼叫CloudStack的介面進行一些功能實現,也需要考慮兩個版本之間的

API差異,總之,生產環境升級之前一定要做到測試環境完全沒有問題,並且建議測試2~3遍。確保萬無一失的情況下面,做到生產環境的資料備份,再進行生產環境的升級。

本文同樣適用於CloudStack4.1.1CloudStack4.2.0的升級工作。

安裝差異

就筆者的操作經驗來看,安裝CloudStack4.1.1 CloudPlatForm4.2.0的最大區別是兩個版本的系統模板檔案不一樣,在整個升級過程中,官方文件中沒有提及,但是確實非常關鍵,如果關於系統模板的升級工作沒有做好,那麼在CloudStack中充當重要角色的幾個系統虛機就無法正常工作。

兩個系統模板連結

【本文以CloudStack+KVM為背景環境,故系統模板使用的是

KVM的模板】

CloudStack4.1.1

http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2

CloudPlatForm4.2.0【開源版也是這個,Md5值驗證一致】

http://download.cloud.com/templates/4.2/systemvmtemplate-2013-06-12-

master-kvm.qcow2.bz2

重現CloudStack4.1.1環境

本文不對CloudStack4.1.1的安裝步驟贅述了,在此僅僅列出CloudStack中的相關邏輯資源資訊

角色

Zone

ClovemZone

POD

POD

管理IP範圍

192.168.0.110-192.168.0.110

來賓IP範圍

192.168.0.130-192.168.0.150

叢集

CLUSTER

主機

192.168.0.2[解析後顯示ClovemDemo ]

主儲存

192.168.0.2/primary [NFS]

輔助儲存

192.168.0.2/secondary [NFS]

SSVM

s-1-VM

CPVM

v-2-VM

VRouter

r-6-VM

執行例項

clovem-instance-001 [i-2-5-VM]

:本文測試環境管理節點跟主機節點以及儲存均在一臺主機上

下面幾個截圖為以上部分資訊來源。

133853481.png

133855492.png

133857197.png


開始升級

132800425.png

登入已經執行的例項進行計時操作,按1個小時開始計算,計時的同時是為了證明升級過程中,不會影響例項的使用。

1.新增並啟用cloudplatform4.2.0的YUM源,用於更新使用。

[[email protected] ~]# cat /etc/yum.repos.d/rhel-source.repo
[rhel6u3]
name=rhel6u3
baseurl=file:///media/rhel6u3
enabled=1
gpgcheck=0
[cloudstack4.1.1]
name=cloudstack4.1.1
baseurl=file:///media/cloudstack4.1.1
enabled=1
gpgcheck=0
[cloudplatform4.2.0]
name=cloudplatform4.2.0
baseurl=file:///media/cloudplatform4.2.0
enabled=1
gpgcheck=0

2.停止cloudstack-management服務,並備份cloud庫檔案。

[[email protected] ~]# service cloudstack-management stop
Stopping cloudstack-management:   [  OK  ]
[[email protected] ~]# mysqldump -u root –p123456  cloud > cloudstack-backup.sql

3. 執行yum upgrade操作,進行元件升級

[[email protected] ~]# yum upgrade –y
[[email protected] ~]# rpm -qa |grep cloudstack
cloudstack-common-4.2.0-2.el6.x86_64
cloudstack-agent-4.2.0-2.el6.x86_64
cloudstack-awsapi-4.2.0-2.el6.x86_64
cloudstack-management-4.2.0-2.el6.x86_64

由於本測試環境的管理節點跟主機[Agent]節點為同一臺物理主機,所以,此處會將cloudstack-agent也進行更新,不管是開源版的cloudstack,還是企業版的cloudplatform,名稱都是cloudstack-服務項。

可以看到所有的cloudstack元件均升級到4.2.0版本了。

4. 啟動管理節點,重啟[Agent]節點

[[email protected] ~]# ps -ef |grep java |grep -v grep |wc –l
0
[[email protected] ~]# service cloudstack-management start
Starting cloudstack-management:       [  OK  ]
[[email protected] ~]# ps -ef |grep java |grep -v grep  |wc -l
1
[[email protected] ~]# /etc/init.d/cloudstack-agent   restart
Stopping Cloud Agent:
Starting Cloud Agent:
[[email protected] ~]# ps -ef |grep java |grep -v grep |wc -l
3
[[email protected] ~]# lsof -i:8080
COMMAND   PID  USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
java    64485 cloud   35u  IPv6 1289046      0t0  TCP *:webcache (LISTEN)
[[email protected] ~]# tailf /var/log/cloudstack/management/management-server.log

通過以上命令發現服正常啟動,用tailf命令監控管理服務的日誌資訊

5. 登入UI檢視升級後資訊

134056208.png

134058315.png

134101970.png

134103720.png

134106411.png此時日誌中會有如下資訊

134228881.png

這樣的警告,可以暫不關心,做到最後,一切都會正常了。

134447152.png

6. 升級系統模板

[1] 記錄資料庫中儲存的原先系統模板的名稱以及路徑

template/tmpl/1/3//b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2

[[email protected] ~]# mysql -uroot -p123456 cloud -e  'SELECT install_path  FROM template_host_ref\G'
*************************** 1. row ***************************
install_path: template/tmpl/1/9/
*************************** 2. row ***************************
install_path: template/tmpl/1/8/
*************************** 3. row ***************************
install_path: template/tmpl/1/3//b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2
*************************** 4. row ***************************
install_path: template/tmpl/1/1/
*************************** 5. row ***************************
install_path: NULL
*************************** 6. row ***************************
install_path: NULL
*************************** 7. row ***************************
install_path: NULL
*************************** 8. row ***************************
install_path: template/tmpl/2/202//3bce9e6c-4480-32e6-bd52-c7199a1bc375.qcow2

[2] 檢視模板所在路徑以及相關模板資訊

[[email protected] ~]# ls\
 /secondary/template/tmpl/1/3/b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2
/secondary/template/tmpl/1/3/b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2
[[email protected] ~]# cat /secondary/template/tmpl/1/3/
b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2  template.properties                    
[[email protected] ~]# cat /secondary/template/tmpl/1/3/template.properties
filename=b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2
description=SystemVM Template
checksum=
hvm=false
size=725811200
qcow2=true
id=3
public=true
qcow2.filename=b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2
uniquename=routing-3
qcow2.virtualsize=725811200
virtualsize=725811200
qcow2.size=725811200

記錄template.properties 中的filename以及qcow2.filename欄位

b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2

[3] 匯入cloudplatform4.2.0的系統模板,覆蓋原有模板檔案

[[email protected] ~]# /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt 、-m /secondary/ -f /var/www/html/cloud/systemvmtemplate-2013-06-12-master-kvm.qcow2.bz2  -h kvm -F
Uncompressing to /usr/share/cloudstack-common/scripts/storage/secondary/7d037545-8106-4007-b1b9-3aaf59e9ae64.qcow2.tmp (type bz2)...could take a long time
Moving to /secondary/template/tmpl/1/3///7d037545-8106-4007-b1b9-3aaf59e9ae64.qcow2...could take a while
Successfully installed system VM template /var/www/html/cloud/systemvmtemplate-2013-06-12-master-kvm.qcow2.bz2 to /secondary/template/tmpl/1/3/

[4]檢視新匯入的系統模板資訊

[[email protected] ~]# ls /secondary/template/tmpl/1/3/
7d037545-8106-4007-b1b9-3aaf59e9ae64.qcow2  template.properties
[[email protected] ~]# cat /secondary/template/tmpl/1/3/template.properties
filename=7d037545-8106-4007-b1b9-3aaf59e9ae64.qcow2
description=SystemVM Template
checksum=
hvm=false
size=276162048
qcow2=true
id=3
public=true
qcow2.filename=7d037545-8106-4007-b1b9-3aaf59e9ae64.qcow2
uniquename=routing-3
qcow2.virtualsize=276162048
virtualsize=276162048
qcow2.size=276162048

發現其檔名已經改變

[5] 修改新系統模板匯入後的檔名,跟原先的系統模板名一致

[[email protected] ~]# cd /secondary/template/tmpl/1/3/
[[email protected] 3]# mv 7d037545-8106-4007-b1b9-3aaf59e9ae64.qcow2  b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2
[[email protected] 3]# sed -i 's/7d037545-8106-4007-b1b9-3aaf59e9ae64.qcow2/b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2/g'  template.properties
[[email protected] 3]# cat template.properties
filename=b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2
description=SystemVM Template
checksum=
hvm=false
size=276162048
qcow2=true
id=3
public=true
qcow2.filename=b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2
uniquename=routing-3
qcow2.virtualsize=276162048
virtualsize=276162048
qcow2.size=276162048

如上程式碼操作,將7d037545-8106-4007-b1b9-3aaf59e9ae64.qcow2 修改為原先系統模板的名稱

b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2template.properties中也同時替換,如此,無需修改資料庫中的相關欄位。

[6]將CloudPlatForm的區域禁用

135640185.png

135643362.png


[7] 清空系統模板快取,將所有系統虛機狀態置為Stopped

mysql> UPDATE template_spool_ref SET download_pct='0',download_state='NOT_DOWNLOADED',state='NULL',local_path='NULL',install_path='NULL',template_size='0' WHERE template_id='3';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> UPDATE vm_instance SET state='Stopped' where id=1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> UPDATE vm_instance SET state='Stopped' where id=2;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> UPDATE vm_instance SET state='Stopped' where id=6;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

將s-1-VM,v-2-VM,r-6-VM的狀態全部置為Stopped狀態,id號一般為系統虛機名稱中間的數字,不確定的話,通過對vm_instance的記錄進行查詢即可。

[8] 啟用cloudplatform的區域,銷燬所有Stopped狀態的系統虛機

140030833.png

140136225.png


135949809.png


按照同樣的方式銷燬SSVM(s-1-VM)跟CPVM(v-2-VM),然後檢視基礎架構

140256830.png


等待片刻,檢視系統虛機,發現新的SSVM跟 CPVM已經重建完成

140412279.png

[9] 新建例項,驗證功能是否正常

140709314.png

140712110.png

140714133.png

140716567.png

140718383.png

140721892.png

[10]檢視原有例項clovem-instance-001狀態並驗證功能呼叫

140824842.png

140932990.png

140935283.png



141207355.png

141209210.png

141753313.png


此時再去看日誌,會發現之前的警告消失了。

141417828.png



按照以上的步驟操作,基本不會有問題了,筆者通過了多次驗證,記錄下以上所有步驟,希望可以幫到大家。

升級成功後,大家可以進行更加詳細的測試,比如上文的停止,啟動例項,也可以通過註冊模板,下載模板等其他方式驗證升級是否成功!

祝大家操作順利!

轉載於:https://blog.51cto.com/clovemfong/1345640