CloudStack4.1.1升级CloudPlatForm4.2.0实践手册
背景闡述
CloudStack是開源軟件,CloudPlatForm是CloudStack的企業版實現,其中增加了某些企業級特性,如主機高可用,所以打算將原有的CloudStack升級為CloudPlatForm,從而提高整個架構的穩定性與高可用性。
建議使用本手冊的讀者先單獨安裝CloudStack4.1.1以及CloudPlatForm4.2.0或者CloudStack4.2.0,需要足夠了解兩個版本之間的安裝差異,才能在升級的過程中遇到問題可以快速定位是個人操作的問題還是版本差異導致的問題。畢竟生產環境的升級風險還是非常之大的。
如果讀者使用在生產環境上面的CloudStack有外圍系統需要調用CloudStack的接口進行一些功能實現,也需要考慮兩個版本之間的API差異,總之,生產環境升級之前一定要做到測試環境完全沒有問題,并且建議測試2~3遍。確保萬無一失的情況下面,做到生產環境的數據備份,再進行生產環境的升級。
本文同樣適用于CloudStack4.1.1到CloudStack4.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] |
注:本文測試環境管理節點跟主機節點以及存儲均在一臺主機上
下面幾個截圖為以上部分信息來源。
開始升級
登錄已經運行的實例進行計時操作,按1個小時開始計算,計時的同時是為了證明升級過程中,不會影響實例的使用。
1.添加并啟用cloudplatform4.2.0的YUM源,用于更新使用。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [root@ClovemDemo ~]# 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庫文件。
| 1 2 3 | [root@ClovemDemo ~]# service cloudstack-management stop Stopping cloudstack-management:?? [? OK? ] [root@ClovemDemo ~]# mysqldump -u root –p123456? cloud > cloudstack-backup.sql |
3. 執行yum upgrade操作,進行組件升級
| 1 2 3 4 5 6 | [root@ClovemDemo ~]# yum upgrade –y [root@ClovemDemo ~]# 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]節點
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [root@ClovemDemo ~]# ps -ef |grep java |grep -v grep |wc –l 0 [root@ClovemDemo ~]# service cloudstack-management start Starting cloudstack-management:?????? [? OK? ] [root@ClovemDemo ~]# ps -ef |grep java |grep -v grep? |wc -l 1 [root@ClovemDemo ~]# /etc/init.d/cloudstack-agent?? restart Stopping Cloud Agent: Starting Cloud Agent: [root@ClovemDemo ~]# ps -ef |grep java |grep -v grep |wc -l 3 [root@ClovemDemo ~]# lsof -i:8080 COMMAND?? PID? USER?? FD?? TYPE? DEVICE SIZE/OFF?NODE NAME java??? 64485 cloud?? 35u? IPv6 1289046????? 0t0? TCP *:webcache (LISTEN) [root@ClovemDemo ~]# tailf /var/log/cloudstack/management/management-server.log |
通過以上命令發現服正常啟動,用tailf命令監控管理服務的日志信息
5. 登錄UI查看升級后信息
此時日志中會有如下信息
這樣的警告,可以暫不關心,做到最后,一切都會正常了。
6. 升級系統模板
[1] 記錄數據庫中保存的原先系統模板的名稱以及路徑
template/tmpl/1/3//b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [root@ClovemDemo ~]# 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] 查看模板所在路徑以及相關模板信息
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | [root@ClovemDemo ~]# ls\ ?/secondary/template/tmpl/1/3/b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2 /secondary/template/tmpl/1/3/b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2 [root@ClovemDemo ~]# cat /secondary/template/tmpl/1/3/ b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2? template.properties??????????????????? [root@ClovemDemo ~]# 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的系統模板,覆蓋原有模板文件
| 1 2 3 4 | [root@ClovemDemo ~]# /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]查看新導入的系統模板信息
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [root@ClovemDemo ~]# ls /secondary/template/tmpl/1/3/ 7d037545-8106-4007-b1b9-3aaf59e9ae64.qcow2? template.properties [root@ClovemDemo ~]# 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] 修改新系統模板導入后的文件名,跟原先的系統模板名一致
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [root@ClovemDemo ~]# cd /secondary/template/tmpl/1/3/ [root@ClovemDemo 3]# mv 7d037545-8106-4007-b1b9-3aaf59e9ae64.qcow2? b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2 [root@ClovemDemo 3]# sed -i 's/7d037545-8106-4007-b1b9-3aaf59e9ae64.qcow2/b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2/g'? template.properties [root@ClovemDemo 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.qcow2,template.properties中也同時替換,如此,無需修改數據庫中的相關字段。
[6]將CloudPlatForm的區域禁用
[7] 清空系統模板緩存,將所有系統虛機狀態置為Stopped
| 1 2 3 4 5 6 7 8 9 10 11 12 | 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狀態的系統虛機
按照同樣的方式銷毀SSVM(s-1-VM)跟CPVM(v-2-VM),然后查看基礎架構
等待片刻,查看系統虛機,發現新的SSVM跟 CPVM已經重建完成
[9] 新建實例,驗證功能是否正常
[10]查看原有實例clovem-instance-001狀態并驗證功能調用
此時再去看日志,會發現之前的警告消失了。
按照以上的步驟操作,基本不會有問題了,筆者通過了多次驗證,記錄下以上所有步驟,希望可以幫到大家。
升級成功后,大家可以進行更加詳細的測試,比如上文的停止,啟動實例,也可以通過注冊模板,下載模板等其他方式驗證升級是否成功!
祝大家操作順利!
本文轉自 暗黑魔君 51CTO博客,原文鏈接:http://blog.51cto.com/clovemfong/1345640,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的CloudStack4.1.1升级CloudPlatForm4.2.0实践手册的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: xenserver下的SR,VDI,VB
- 下一篇: 从V.C.Space抄来的