公司前不久搭建的cloudstack 4.0(3台XenServer 6.1节点,Centos 6.3管理机器,freenas)由于机房意外停电,造成管理机器无法联系节点,系统vm无法启动,加上时间紧迫,上面有没有上面重要数据,就进行全新安装。安装后,为防止相同事件再次发生,做了简单的灾难恢复测试。

故障模拟
1,系统vm维护
   步骤:维护模式关闭系统ssvm cpvm所在物理主机,启用主机维护模式,重启主机
   现象:ssvm cpvm 状态处于stop状态
   恢复:主机启动完成后,取消维护模式,ssvm cpvm自动启动(5分钟左右)
2,系统vm故障
   故障:系统vm丢失
   步骤:删除ssvm,cpvm
   现象:无法进行添加删除vm操作
   恢复:删除的ssvm,cpvm 会自动重建,重建完成后功能恢复
3,系统vrouter故障
   故障:系统vrouter丢失
   步骤:停止并删除vrouter
   现象:客户vm无法通过域名访问,通过ip访问无影响
   恢复:重新执行创建vm操作,vrouter自动创建;客户vm需要重启网络服务
4,重启CS管理机器
   故障:管理服务器宕机
   步骤:直接重启管理机器
   现象:无法登陆控制台
   恢复:系统启动完成后,正常登陆
5, 存储意外关闭
   故障:模拟主存储故障
   步骤:重启关闭主存储并禁用网卡10分钟
   现象:cpvm,ssvm状态系统正常,cs控制台会有disconneting提示;用户vm状态running,但是无法通过console连接,停止后,无法重启;添加用户vm 一直处于starting状态
   恢复:恢复通信后,自动恢复,如果有问题,依次重启各个vm主机
6, 集群主机故障1
   故障:所有主机网络故障
   步骤:直接关闭主机网络交换机
   现象:所有主机状态都为down,系统vm为starting,无法进行用户vm操作
   恢复:恢复交换机故障,当master主机通信故障时,及时其他主机通信恢复,其他主机状态依旧为down;master主机恢复通信后,其他主机依次恢复;最后重启用户vm
7, 集群主机故障2       
   故障:非master主机网络故障
   步骤:直接关闭主机网络接口
   现象:主机状态都为down,该主机上的用户vm处于shutdown;管理主机日志提示故障主机设置master异常
   恢复:直接启动状态为shutdown的用户vm(cloudstack会自动在其他可用主机节点部署用户vm);恢复故障主机故障后重新加入
8, 集群主机故障3       
   故障:master主机故障
   步骤:直接关闭主机网络接口,模拟意外关闭
   现象:主机状态为down,该主机上的用户vm处于shutdown
   恢复:其他主机会自动成为master主机;恢复原故障主机通信,仍旧无法加入主机,cs中删除主机,重启;本机登陆命令行,执行xe pool-join 加入到pool,cs中再次添加主机如果需要;资源池的每个成员都将包含担任主主机角色所需的所有信息。

  在cloudstack一个cluster中的pool资源池中(通过xenCenter也可以创建资源池),有一个物理主机充当master主机,进行资源的分配;当一个pool中的master主机发生故障,将依次发生下列事件:
1. 成员意识到通信已中断,每个成员都重试 60 秒
2. 然后,各成员将自身置于紧急模式,这样,成员 XenServer 主机现在将仅接受池紧急命令(xe pool-emergency-reset-master 和 xe pool-emergency-transition-to-master)。此时,如果master主机恢复,它将重新建立与其成员的通信,成员退出紧急模式,操作恢复正常。不过,如果master主机已停用,您应该选择一个成员并对其执行 xe pool-emergency-transition-to-master 命令。当该成员成为master主机后,执行命令 xe pool-recover-slaves,其他成员现在将指向此新master主机。如果修复或替换用作原始master主机的服务器,您只需启动服务器,安装 XenServer 主机软件,然后将它添加到池中。由于池中的 XenServer 主机强制为同类主机,因此实际上不需要将替换的服务器设为主主机。将成员 XenServer 主机转换为master主机后,您还应检查默认池存储库是否设置了适当的值。通过使用 xe pool-param-list 命令并验证 default-SR 参数是否指向有效存储库,可实现此操作。

名词解释:xenserver master
          在一个xenserver 组成的资源pool中,会选举一个xenserver作为该pool的master,管理工具cloudstack或者xencerter通过操作master,让master决定vm的资源分配情况