前言
本文不再对升级过程做太详细说明。
升级指南参考我的另外一篇博文: http://systems.blog.51cto.com/2500547/1385470

另外,生产环境中,如果需要升级,一定要进行多次模拟测试!
备份工作一定要做好。确定万无一失再进行升级!

环境
CloudStack:4.1.1 → 4.3.0
虚拟化:KVM
主机系统:RHEL6.3

升级过程

一、上传4.3的系统虚拟机模版
由于不同版本的CS所使用的系统虚拟机模版不一样。为了确保在升级完成后,系统虚拟机等组件能正常工作,官方首先建议在升级前就先把对应版本的系统虚拟机模版导入。方便升级后,现有系统虚拟机的更新。

1.由于我4.1.1的环境中仅存在kvm虚拟化平台,所以我只需上传4.3 for kvm的系统虚拟机模版。各位根据自己的环境上传。如果异构环境的话,建议3个模版全部上传。

注意:
注册模版严格按照升级文档要求来写。上传后系统虚拟机模版会有2个,一个是systemvm-kvm-4.3,另一个为默认的:SystemVM Template(KVM). 无须手动干预。也不要去手动删除它。

CloudStack升级实战:4.1.x至4.3版本_第1张图片


上传成功。查看模版信息:

CloudStack升级实战:4.1.x至4.3版本_第2张图片



二、备份数据库
备份数据库是为了出现错误时回滚升级操作,保证在升级新版本失败时,可以正常回滚到旧版本的基础。
1.首先,停止management服务
[root@SJCloudManager ~]# service cloudstack-management stop
2.(选做)停止usage服务,如果你在使用的话
[root@SJCloudManager ~]# service cloudstack-usage stop
3.(选做)如果你使用了本地存储,需修改本地存储路径,将路径最后的斜杠“/”移除
查看当前的本地存储信息:
[root@SJCloudManager ~]# mysql -ucloud -p1qaz2wsx -e "select id,name,path from cloud.storage_pool where pool_type='Filesystem'"
+-----+--------------+--------------------------+
| id | name | path |
+-----+--------------+--------------------------+
| 201 | SJCloudKVM-2 | /var/lib/libvirt/p_w_picpaths/ |
+-----+--------------+--------------------------+
[root@SJCloudManager ~]#
#修改如上本地存储路径,将路径最后的斜杠“/”移除:
[root@SJCloudManager ~]# mysql -ucloud -p1qaz2wsx -e 'update cloud.storage_pool set path="/var/lib/libvirt/p_w_picpaths" where path="/var/lib/libvirt/p_w_picpaths/"';
[root@SJCloudManager ~]# mysql -ucloud -p1qaz2wsx -e "select id,name,path from cloud.storage_pool where pool_type='Filesystem'"
+-----+--------------+-------------------------+
| id | name | path |
+-----+--------------+-------------------------+
| 201 | SJCloudKVM-2 | /var/lib/libvirt/p_w_picpaths |
+-----+--------------+-------------------------+
[root@SJCloudManager ~]#
#唯一的变化为路径最后的斜杠被移除。此步骤为官方要求。
4.开始备份数据库
[root@SJCloudManager ~]# mysqldump -uroot -proot cloud > cloudstack-backup.sql

三、制作4.3YUM源
此步骤不再啰嗦,不会的可以看我另一篇博客: http://systems.blog.51cto.com/2500547/1338039
#仅看下我的cloudstack的repo文件
[root@SJCloudManager 430]# cat /etc/yum.repos.d/cloudstack.repo
[apache-cloudstack]
name=Apache CloudStack 4.3.0
baseurl=http://192.168.100.3/cloudstack/430/
enabled=1
gpgcheck=0
[root@SJCloudManager 430]# yum clean all; yum makecache


四、升级管理端主机:
#停止cloudstack-management服务
[root@SJCloudManager ~]# service cloudstack-management stop
#upgrade cloudstack-management软件包
[root@SJCloudManager ~]# yum upgrade cloudstack-management -y
#启动cloudstack-management服务
[root@SJCloudManager ~]# service cloudstack-management start

管理端升级完成!

五、升级KVM主机:
#停止cloudstack-agent服务
[root@SJCloudKVM-2 ~]# service cloudstack-agent stop
[root@SJCloudKVM-2 ~]# killall jsvc
#upgrade cloudstack-agent软件包
[root@SJCloudKVM-2 ~ ]# yum upgrade cloudstack-agent -y
#查找/etc/cloudstack/agent/environment.properties文件中,有无如下行:
[root@SJCloudKVM-2 ~]# grep -r "paths.script" /etc/cloudstack/agent/environment.properties
paths.script=/usr/share/cloudstack-common
#确定存在paths.script行,如果没有,自行添加上去。
#启动cloudstack-agent服务
[root@SJCloudKVM-2 ~]# service cloudstack-agent start
#确定服务启动
[root@SJCloudKVM-2 ~]# service cloudstack-agent status
cloudstack-agent (pid 19059) is running...

KVM主机升级完成!

六、登录CS管理页面
1.查看CS版本是否更新成功。
2.设置全局变量”integration.api.port“参数为:8096

在升级结束后cloud-sysvmadm脚本会使用这个端口,进行对系统虚拟机的管理。

3.并确保在防火墙中开放此端口的访问。

CloudStack升级实战:4.1.x至4.3版本_第3张图片


CloudStack升级实战:4.1.x至4.3版本_第4张图片

七、升级系统虚拟机
升级系统虚拟机有几种办法:
1.官方说只需要重启系统虚拟机即可。你可以手动或者借助cloudstack-sysvmadm脚本。 #但我未验证是否可行。
2.销毁系统虚拟机,待系统自行创建      #我在升级SSVM和CPVM过程中是采用这种方式。
3.手动点击使用新模版更新系统虚拟机   #我在升级VR过程中是采用这种方式。

升级前系统虚拟机状态:

CloudStack升级实战:4.1.x至4.3版本_第5张图片


手动升级虚拟路由器虚拟机:

CloudStack升级实战:4.1.x至4.3版本_第6张图片


升级完毕后,该升级选项消失:

CloudStack升级实战:4.1.x至4.3版本_第7张图片


至此,CS4.1.1 到4.3.0的升级工作全部完成!

升级过程中,虚拟机实例没有出现异常宕机情况


已知问题(BUG?)

升级完成后,如果碰到控制台界面打不开,提示如下:

CloudStack升级实战:4.1.x至4.3版本_第8张图片


提示找不到服务器,无法找到 x.x.x.x.*.realhostip.com.

可以看到realhostip.com前被加入了一个*,正是因为该域名无法解析照成console打不开。

此问题由4.1升级到4.3带来,且全新安装不会出现该问题。

请修改两个变量参数。

consoleproxy.url.domain
secstorage.ssl.cert.domain

升级完成后,该值被修改为 *.realhostip.com

正确的应该为realhostip.com

升级后:

CloudStack升级实战:4.1.x至4.3版本_第9张图片


验证

更新前我有一台虚拟机实例:


更新后此实例没有被影响:

CloudStack升级实战:4.1.x至4.3版本_第10张图片



更新前,我主存储本地路径信息:

CloudStack升级实战:4.1.x至4.3版本_第11张图片


更新后的信息:
CloudStack升级实战:4.1.x至4.3版本_第12张图片

创建新的虚拟机测试:




九、新版UI

登录界面:

CloudStack升级实战:4.1.x至4.3版本_第13张图片


控制板:


CloudStack升级实战:4.1.x至4.3版本_第14张图片


项目视图:


CloudStack升级实战:4.1.x至4.3版本_第15张图片

基础架构视图:

CloudStack升级实战:4.1.x至4.3版本_第16张图片



十、扯犊子
使用CS的过程中,状况百出,特别是面对一坨有一坨的java异常。
那种感觉,你懂得。
蛋疼菊紧人憔悴。
但,生活还得继续。
活着,就要继续被虐。

什么是经验?
经验就是CS虐了你千百遍,脑子缺根筋的你还要当它是初恋似的一次又一次扑上去。
为啥扑不对?“姿势”很重要。