前言
本文不再对升级过程做太详细说明。
升级指南参考我的另外一篇博文: 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). 无须手动干预。也不要去手动删除它。
上传成功。查看模版信息:
二、备份数据库
备份数据库是为了出现错误时回滚升级操作,保证在升级新版本失败时,可以正常回滚到旧版本的基础。
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.并确保在防火墙中开放此端口的访问。
七、升级系统虚拟机
升级系统虚拟机有几种办法:
1.官方说只需要重启系统虚拟机即可。你可以手动或者借助cloudstack-sysvmadm脚本。 #但我未验证是否可行。
2.销毁系统虚拟机,待系统自行创建 #我在升级SSVM和CPVM过程中是采用这种方式。
3.手动点击使用新模版更新系统虚拟机 #我在升级VR过程中是采用这种方式。
升级前系统虚拟机状态:
手动升级虚拟路由器虚拟机:
升级完毕后,该升级选项消失:
至此,CS4.1.1 到4.3.0的升级工作全部完成!
升级过程中,虚拟机实例没有出现异常宕机情况
已知问题(BUG?)
升级完成后,如果碰到控制台界面打不开,提示如下:
提示找不到服务器,无法找到 x.x.x.x.*.realhostip.com.
可以看到realhostip.com前被加入了一个*,正是因为该域名无法解析照成console打不开。
此问题由4.1升级到4.3带来,且全新安装不会出现该问题。
请修改两个变量参数。
consoleproxy.url.domain secstorage.ssl.cert.domain
升级完成后,该值被修改为 *.realhostip.com
正确的应该为realhostip.com
升级后:
验证
更新前我有一台虚拟机实例:
更新后此实例没有被影响:
更新前,我主存储本地路径信息:
更新后的信息:
创建新的虚拟机测试:
九、新版UI
登录界面:
项目视图:
基础架构视图:
十、扯犊子
使用CS的过程中,状况百出,特别是面对一坨有一坨的java异常。
那种感觉,你懂得。
蛋疼菊紧人憔悴。
但,生活还得继续。
活着,就要继续被虐。
什么是经验?
经验就是CS虐了你千百遍,脑子缺根筋的你还要当它是初恋似的一次又一次扑上去。
为啥扑不对?“姿势”很重要。