一、前言:
据官方称Cloudstack的HA(高可用)功能在4.2.1 SP3中已经修复一些bug,遂测试其可用性。
CloudStack的HA功能分为VM的HA和Host的HA
比较:
CS4.2.1 HA+KVM | 区别 | 前提 | 备注 |
基于VM | 启用VM的HA功能后,如果VM异常宕机(crash) 或者进程被异常终止(而并非主机原因), CS会自动检测并尝试在当前主机重新开启该VM | 1.VM被从内部(init 0, halt ,shutdown)关闭,或进程被杀掉。 2.不能使用cloudstack控制界面关闭。 | 如果是使用cloudstack控制界面关闭,那该VM不会进行HA 尝试。 如果是前提1中方法导致VM关闭,CS会自动重新启动该VM。 |
基于HOST | 启用主机的HA功能后,如果物理主机异常宕机或 者出现物理损坏,CS会尝试将在该主机上面的虚 拟机,在打了HA tag的主机上面重新启动。 | 1.不能使用reboot,shutdown这些命令关闭物理主机。 2.必须是被动、异常关闭,而不是主动关闭主机。 3.比如:系统crash、断电,网络故障等。 原理:cloudstack-manager在内存中记录物理主机存活 状态,如果manager通过cloudstack-agent接收到物理主 机正常关闭时,则把内存信息中的该物理主机T除掉, 那么主动T除的情况下,是不会发生HA切换的。 | 即使是因为物理主机网络异常触发的HA,所有VM都会被 关闭并且在打了HA标签的主机上重新启动。 所以就是VM重新在其他服务器上启动的过程。 |
基于VM+HOST | 2者结合,才真正实现高可用性。 | 生产中,推荐该做法。 |
Cloudstack与Cloudplatform操作步骤一样。据Citrix的售后顾问称,其两者并无太大差别。几乎一样。
另外,这里操作步骤还是把暗黑魔君大牛的直接拿来用。 总结的挺好,我书读的不多,暗黑君可别打我。
1.设置全局变量中的HA标签
2.给需要成为VM高可用特性的主机打上HA标签
3.创建支持VM高可用特性的计算方案
4.通过普通模板使用HA计算方案,创建实例
5.对一台启动高可用的VM进行手动关机或杀进程,测试VM高可用(虚拟机自动启动)
6.对一台服务器进行关机操作,测试HOST高可用(其上的虚拟机自动在启动HA的主机上启动)
4.通过普通模板使用HA计算方案,创建实例
5.对一台启动高可用的VM进行手动关机或杀进程,测试VM高可用(虚拟机自动启动)
5.1.从内部使用(init 0, halt ,shutdown)关闭,或将进程干掉。
然后30秒后查看该虚拟机是否重新起来了。
不再演示,唯一注意的是使用这种方法将虚拟机关闭,CS会自动将该VM重新启动。
5.2. 在CloudStack界面中,将该虚拟机关机。
此方法关闭虚拟机,将不再触发ha设置。
6.对一台服务器进行关机操作,测试HOST高可用(其上的虚拟机自动在启动HA的主机上重新启动)
NFO[storage.secondary.SecondaryStorageManagerImpl](secstorage-1:)Unable tostartsecondary storage vmforstandbycapacity,secStorageVm vmId:4,will recycle itandstartanewone
WARN[cloud.consoleproxy.ConsoleProxyManagerImpl](consoleproxy-1:)Exceptionwhiletrying tostartconsoleproxy
com.cloud.exception.InsufficientServerCapacityException:Unable tocreatea deploymentforVM[ConsoleProxy|v-5-VM]Scope=interfacecom.cloud.dc.DataCenter;id=1
at com.cloud.vm.VirtualMachineManagerImpl.advanceStart(VirtualMachineManagerImpl.java:841)
at com.cloud.vm.VirtualMachineManagerImpl.start(VirtualMachineManagerImpl.java:577)
at com.cloud.vm.VirtualMachineManagerImpl.start(VirtualMachineManagerImpl.java:570)
at com.cloud.consoleproxy.ConsoleProxyManagerImpl.startProxy(ConsoleProxyManagerImpl.java:556)
at com.cloud.consoleproxy.ConsoleProxyManagerImpl.allocCapacity(ConsoleProxyManagerImpl.java:928)
at com.cloud.consoleproxy.ConsoleProxyManagerImpl.expandPool(ConsoleProxyManagerImpl.java:1672)
at com.cloud.consoleproxy.ConsoleProxyManagerImpl.expandPool(ConsoleProxyManagerImpl.java:157)
at com.cloud.vm.SystemVmLoadScanner.loadScan(SystemVmLoadScanner.java:111)
at com.cloud.vm.SystemVmLoadScanner.access$100(SystemVmLoadScanner.java:33)
at com.cloud.vm.SystemVmLoadScanner$1.reallyRun(SystemVmLoadScanner.java:81)
at com.cloud.vm.SystemVmLoadScanner$1.run(SystemVmLoadScanner.java:72)
atjava.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
atjava.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)
atjava.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)
atjava.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
atjava.lang.Thread.run(Thread.java:744)
本文出自 “systems” 博客,请务必保留此出处http://systems.blog.51cto.com/2500547/1382827
CloudStack4.2.1/RHEL6.3 KVM HA高可用性测试,布布扣,bubuko.com
CloudStack4.2.1/RHEL6.3 KVM HA高可用性测试
原文:http://systems.blog.51cto.com/2500547/1382827