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的安裝步驟贅述了,在此僅僅列出CloudStack中的相關邏輯資源資訊
角色
值
Zone
ClovemZone
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]
注:本文測試環境管理節點跟主機節點以及存儲均在一台主機上
下面幾個截圖為以上部分資訊來源。
<a href="http://blog.51cto.com/attachment/201312/133853481.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/133855492.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/133857197.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/132800425.png" target="_blank"></a>
登入已經運作的執行個體進行計時操作,按1個小時開始計算,計時的同時是為了證明更新過程中,不會影響執行個體的使用。
1.添加并啟用cloudplatform4.2.0的YUM源,用于更新使用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<code>[root@ClovemDemo ~]</code><code># cat /etc/yum.repos.d/rhel-source.repo</code>
<code>[rhel6u3]</code>
<code>name=rhel6u3</code>
<code>baseurl=</code><code>file</code><code>:</code><code>///media/rhel6u3</code>
<code>enabled=1</code>
<code>gpgcheck=0</code>
<code>[cloudstack4.1.1]</code>
<code>name=cloudstack4.1.1</code>
<code>baseurl=</code><code>file</code><code>:</code><code>///media/cloudstack4</code><code>.1.1</code>
<code>[cloudplatform4.2.0]</code>
<code>name=cloudplatform4.2.0</code>
<code>baseurl=</code><code>file</code><code>:</code><code>///media/cloudplatform4</code><code>.2.0</code>
2.停止cloudstack-management服務,并備份cloud庫檔案。
<code>[root@ClovemDemo ~]</code><code># service cloudstack-management stop</code>
<code>Stopping cloudstack-management: [ OK ]</code>
<code>[root@ClovemDemo ~]</code><code># mysqldump -u root –p123456 cloud > cloudstack-backup.sql</code>
3. 執行yum upgrade操作,進行元件更新
<code>[root@ClovemDemo ~]</code><code># yum upgrade –y</code>
<code>[root@ClovemDemo ~]</code><code># rpm -qa |grep cloudstack</code>
<code>cloudstack-common-4.2.0-2.el6.x86_64</code>
<code>cloudstack-agent-4.2.0-2.el6.x86_64</code>
<code>cloudstack-awsapi-4.2.0-2.el6.x86_64</code>
<code>cloudstack-management-4.2.0-2.el6.x86_64</code>
由于本測試環境的管理節點跟主機[Agent]節點為同一台實體主機,是以,此處會将cloudstack-agent也進行更新,不管是開源版的cloudstack,還是企業版的cloudplatform,名稱都是cloudstack-服務項。
可以看到所有的cloudstack元件均更新到4.2.0版本了。
4. 啟動管理節點,重新開機[Agent]節點
<code>[root@ClovemDemo ~]</code><code># ps -ef |grep java |grep -v grep |wc –l</code>
<code>0</code>
<code>[root@ClovemDemo ~]</code><code># service cloudstack-management start</code>
<code>Starting cloudstack-management: [ OK ]</code>
<code>[root@ClovemDemo ~]</code><code># ps -ef |grep java |grep -v grep |wc -l</code>
<code>1</code>
<code>[root@ClovemDemo ~]</code><code># /etc/init.d/cloudstack-agent restart</code>
<code>Stopping Cloud Agent:</code>
<code>Starting Cloud Agent:</code>
<code>[root@ClovemDemo ~]</code><code># ps -ef |grep java |grep -v grep |wc -l</code>
<code>3</code>
<code>[root@ClovemDemo ~]</code><code># lsof -i:8080</code>
<code>COMMAND PID USER FD TYPE DEVICE SIZE</code><code>/OFF</code> <code>NODE NAME</code>
<code>java 64485 cloud 35u IPv6 1289046 0t0 TCP *:webcache (LISTEN)</code>
<code>[root@ClovemDemo ~]</code><code># tailf /var/log/cloudstack/management/management-server.log</code>
通過以上指令發現服正常啟動,用tailf指令監控管理服務的日志資訊
5. 登入UI檢視更新後資訊
<a href="http://blog.51cto.com/attachment/201312/134056208.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/134058315.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/134101970.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/134103720.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/134228881.png" target="_blank"></a>
這樣的警告,可以暫不關心,做到最後,一切都會正常了。
<a href="http://blog.51cto.com/attachment/201312/134447152.png" target="_blank"></a>
6. 更新系統模闆
[1] 記錄資料庫中儲存的原先系統模闆的名稱以及路徑
<code>template</code><code>/tmpl/1/3//b7b85af8-d127-41d9-b316-34d2301fa7c7</code><code>.qcow2</code>
17
<code>[root@ClovemDemo ~]</code><code># mysql -uroot -p123456 cloud -e 'SELECT install_path FROM template_host_ref\G'</code>
<code>*************************** 1. row ***************************</code>
<code>install_path: template</code><code>/tmpl/1/9/</code>
<code>*************************** 2. row ***************************</code>
<code>install_path: template</code><code>/tmpl/1/8/</code>
<code>*************************** 3. row ***************************</code>
<code>install_path: template</code><code>/tmpl/1/3//b7b85af8-d127-41d9-b316-34d2301fa7c7</code><code>.qcow2</code>
<code>*************************** 4. row ***************************</code>
<code>install_path: template</code><code>/tmpl/1/1/</code>
<code>*************************** 5. row ***************************</code>
<code>install_path: NULL</code>
<code>*************************** 6. row ***************************</code>
<code>*************************** 7. row ***************************</code>
<code>*************************** 8. row ***************************</code>
<code>install_path: template</code><code>/tmpl/2/202//3bce9e6c-4480-32e6-bd52-c7199a1bc375</code><code>.qcow2</code>
[2] 檢視模闆所在路徑以及相關模闆資訊
18
19
<code>[root@ClovemDemo ~]</code><code># ls\</code>
<code> </code><code>/secondary/template/tmpl/1/3/b7b85af8-d127-41d9-b316-34d2301fa7c7</code><code>.qcow2</code>
<code>/secondary/template/tmpl/1/3/b7b85af8-d127-41d9-b316-34d2301fa7c7</code><code>.qcow2</code>
<code>[root@ClovemDemo ~]</code><code># cat /secondary/template/tmpl/1/3/</code>
<code>b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2 template.properties </code>
<code>[root@ClovemDemo ~]</code><code># cat /secondary/template/tmpl/1/3/template.properties</code>
<code>filename=b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2</code>
<code>description=SystemVM Template</code>
<code>checksum=</code>
<code>hvm=</code><code>false</code>
<code>size=725811200</code>
<code>qcow2=</code><code>true</code>
<code>id</code><code>=3</code>
<code>public=</code><code>true</code>
<code>qcow2.filename=b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2</code>
<code>uniquename=routing-3</code>
<code>qcow2.virtualsize=725811200</code>
<code>virtualsize=725811200</code>
<code>qcow2.size=725811200</code>
記錄<code>template.properties</code> 中的filename以及qcow2.filename字段
<code>b7b85af8-d127-41d9-b316-34d2301fa7c7</code><code>.qcow2</code>
[3] 導入cloudplatform4.2.0的系統模闆,覆寫原有模闆檔案
<code>[root@ClovemDemo ~]</code><code># /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</code>
<code>Uncompressing to </code><code>/usr/share/cloudstack-common/scripts/storage/secondary/7d037545-8106-4007-b1b9-3aaf59e9ae64</code><code>.qcow2.tmp (</code><code>type</code> <code>bz2)...could take a long </code><code>time</code>
<code>Moving to </code><code>/secondary/template/tmpl/1/3///7d037545-8106-4007-b1b9-3aaf59e9ae64</code><code>.qcow2...could take a </code><code>while</code>
<code>Successfully installed system VM template </code><code>/var/www/html/cloud/systemvmtemplate-2013-06-12-master-kvm</code><code>.qcow2.bz2 to </code><code>/secondary/template/tmpl/1/3/</code>
[4]檢視新導入的系統模闆資訊
<code>[root@ClovemDemo ~]</code><code># ls /secondary/template/tmpl/1/3/</code>
<code>7d037545-8106-4007-b1b9-3aaf59e9ae64.qcow2 template.properties</code>
<code>filename=7d037545-8106-4007-b1b9-3aaf59e9ae64.qcow2</code>
<code>size=276162048</code>
<code>qcow2.filename=7d037545-8106-4007-b1b9-3aaf59e9ae64.qcow2</code>
<code>qcow2.virtualsize=276162048</code>
<code>virtualsize=276162048</code>
<code>qcow2.size=276162048</code>
發現其檔案名已經改變
[5] 修改新系統模闆導入後的檔案名,跟原先的系統模闆名一緻
<code>[root@ClovemDemo ~]</code><code># cd /secondary/template/tmpl/1/3/</code>
<code>[root@ClovemDemo 3]</code><code># mv 7d037545-8106-4007-b1b9-3aaf59e9ae64.qcow2 b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2</code>
<code>[root@ClovemDemo 3]</code><code># sed -i 's/7d037545-8106-4007-b1b9-3aaf59e9ae64.qcow2/b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2/g' template.properties</code>
<code>[root@ClovemDemo 3]</code><code># cat template.properties</code>
如上代碼操作,将<code>7d037545-8106-4007-b1b9-3aaf59e9ae64.qcow2 </code>修改為原先系統模闆的名稱
<code>b7b85af8-d127-41d9-b316-34d2301fa7c7.qcow2</code>,<code>template.properties</code>中也同時替換,如此,無需修改資料庫中的相關字段。
[6]将CloudPlatForm的區域禁用
<a href="http://blog.51cto.com/attachment/201312/135640185.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/135643362.png" target="_blank"></a>
[7] 清空系統模闆緩存,将所有系統虛機狀态置為Stopped
<code>mysql> UPDATE template_spool_ref SET download_pct=</code><code>'0'</code><code>,download_state=</code><code>'NOT_DOWNLOADED'</code><code>,state=</code><code>'NULL'</code><code>,local_path=</code><code>'NULL'</code><code>,install_path=</code><code>'NULL'</code><code>,template_size=</code><code>'0'</code> <code>WHERE template_id=</code><code>'3'</code><code>;</code>
<code>Query OK, 1 row affected (0.01 sec)</code>
<code>Rows matched: 1 Changed: 1 Warnings: 0</code>
<code>mysql> UPDATE vm_instance SET state=</code><code>'Stopped'</code> <code>where </code><code>id</code><code>=1;</code>
<code>mysql> UPDATE vm_instance SET state=</code><code>'Stopped'</code> <code>where </code><code>id</code><code>=2;</code>
<code>Query OK, 1 row affected (0.02 sec)</code>
<code>mysql> UPDATE vm_instance SET state=</code><code>'Stopped'</code> <code>where </code><code>id</code><code>=6;</code>
将s-1-VM,v-2-VM,r-6-VM的狀态全部置為Stopped狀态,id号一般為系統虛機名稱中間的數字,不确定的話,通過對vm_instance的記錄進行查詢即可。
[8] 啟用cloudplatform的區域,銷毀所有Stopped狀态的系統虛機
<a href="http://blog.51cto.com/attachment/201312/140030833.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/135949809.png" target="_blank"></a>
按照同樣的方式銷毀SSVM(s-1-VM)跟CPVM(v-2-VM),然後檢視基礎架構
<a href="http://blog.51cto.com/attachment/201312/140256830.png" target="_blank"></a>
等待片刻,檢視系統虛機,發現新的SSVM跟 CPVM已經重建完成
<a href="http://blog.51cto.com/attachment/201312/140412279.png" target="_blank"></a>
[9] 建立執行個體,驗證功能是否正常
<a href="http://blog.51cto.com/attachment/201312/140709314.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/140712110.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/140714133.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/140716567.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/140718383.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/140721892.png" target="_blank"></a>
[10]檢視原有執行個體clovem-instance-001狀态并驗證功能調用
<a href="http://blog.51cto.com/attachment/201312/140824842.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/140932990.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/140935283.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/141207355.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/141209210.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201312/141753313.png" target="_blank"></a>
此時再去看日志,會發現之前的警告消失了。
<a href="http://blog.51cto.com/attachment/201312/141417828.png" target="_blank"></a>
按照以上的步驟操作,基本不會有問題了,筆者通過了多次驗證,記錄下以上所有步驟,希望可以幫到大家。
更新成功後,大家可以進行更加詳細的測試,比如上文的停止,啟動執行個體,也可以通過注冊模闆,下載下傳模闆等其他方式驗證更新是否成功!
祝大家操作順利!
本文轉自 暗黑魔君 51CTO部落格,原文連結:http://blog.51cto.com/clovemfong/1345640,如需轉載請自行聯系原作者