全部产品
云市场

SAP 高可用测试最佳实践

更新时间:2018-05-22 17:57:29

版本管理

版本 修订日期 变更类型 生效日期
1.0 2018.05.18

概述

本文档描述了如何在阿里云同可用区内部署SAP高可用性部署安装后,应该进行的高可用切换测试的场景和操作。主旨在于验证高可用性部署方案的完整性和准确性,切换测试的场景涵盖了SAP Netweaver和SAP HANA两部分。本文档不能完全取代Suse和SAP官方文档发布的Administration Guide,建议具体的管理任务和操作阅读Suse和SAP官方文档。

测试场景分类

Cluster 类型 测试分类
SAP Netweaver cluster • SAP Netweaver层面测试
• Cluster层面测试
• Infra层面测试
SAP HANA replication cluster • SAP HANA层面测试
• Cluster层面测试
• Infra层面测试

SAP Netweaver测试场景

SAP Netweaver层面测试

1. Message server进程
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:首先确认message server的进程PID,然后kill掉message server进程。

  1. pgrep -fl ms.sap<SID>
  2. kill -9 <pid-ms>

3)测试结果:kill掉message server进程后,message server自动重启,PID变成新的PID,kill掉多次(次数取决于参数Max_Program_Restart设置)后,HA发生切换,所有资源切换到备节点,ASCS instance在备节点启动。

2. Enqueue server进程
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:首先确认Enqueue server的进程PID,然后kill掉Enqueue server进程。

  1. pgrep -fl en.sap<SID>
  2. kill -9 <pid-en>

3)测试结果:kill掉Enqueue server进程后,HA发生切换,所有资源切换到备节点,ASCS instance在备节点启动。

3. Enqueue replication server进程
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:首先确认Enqueue replication server的进程PID,然后kill掉Enqueue replication server进程。

  1. pgrep -fl er.sap<SID>
  2. kill -9 <pid-er>

3)测试结果:kill掉Enqueue replication server进程后,Enquque replication server自动重启,PID变成新的PID。

4. Enqueue sapstartsrv service进程
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:首先确认Enqueue sapstartsrv service的进程PID,然后kill掉sapstartsrv service进程。

  1. pgrep -fl "ASCS.*sapstartsrv"
  2. kill -9 <pid-ssrv>

3)测试结果:kill掉sapstartsrv进程后,sapstartsrv自动重启,PID变成新的PID,可以作为第三方需要集成sapstartsrv的solution的状态信息提供来源。

5. Dispather进程
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态,PAS安装HA两个节点的本地。
2)操作:首先确认PAS的dispather进程PID,然后kill掉PAS的dispather进程。

  1. pgrep -fl dw.sap<SID>
  2. kill -9 <pid-disp>

3)测试结果:kill掉PAS的dispather进程后,dispather自动重启,PID变成新的PID。

6. sapcontrol起停ASCS
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:使用sapcontrol停止ASCS。

  1. sapcontrol -nr <ASCSNR> -function "Start/Stop"

3)测试结果:HA不发生切换,Multi-state resource处于Stopped (disabled)状态。

Cluster层面测试

1. Cluster软件
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:选择任意一个节点首先确认corosync进程,然后kill掉corosync进程。

  1. pgrep -fl corosync
  2. kill -9 <pid>

3)测试结果:所选择的节点被fence掉,本节点的所有resource切换到备节点
2. ASCS instance resource转移
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:选择ASCS instance resource所在的节点,转移resource到备节点。

  1. crm resource move rsc_sap_ASCS <target_node>

3)测试结果:ASCS instance resource转移到备节点
3. Cluster维护模式
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:首先使cluster处于维护模式,维护任务结束后使clsuter恢复正常模式。

  1. crm configure property maintenance-mode=on
  2. crm configure property maintenance-mode=off

3)测试结果:Cluster处于维护模式,SAP instance依然保持运行,所有节点resource处于unmanaged状态,此时可以对cluster进行维护任务,维护任务结束后执行off操作使cluster恢复正常。
4. Fence node
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:首先确保cluster处于正常状态,对其中一个几点进行fence操作,再将此节点状态恢复。

  1. crm node fence <target_node>
  2. sbd -d /<device name>/message <node name> clear
  3. systemctl start pacemaker

3)测试结果:被fence的节点上的所有资源切换到备节点,被fence的节点重启,STONITH device状态变为reset。恢复被fence节点需要将STONITH device状态设置为clear,然后启动pacemaker恢复cluster状态。

Infra层面测试

1. 主机关闭或重启
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:在控制台直接关机,再将此节点状态恢复。

  1. 控制台---实例---选中要停止的主机---选择更多---停机
  2. systemctl start pacemaker
  3. crm_mon -r
  4. ps -ef | grep ERS

3)测试结果:HA发生切换,停止的主机上的所有resource切换到备节点,ASCS instace切换到备节点。重新启动主机,启动cluster,检查状态,检查ERS是否启动。

2. Disable心跳网卡
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态,ifconfig中网卡状态正常,心跳网和业务网地址通讯正常,corosync中冗余配置正常。
2)操作:在cluster中的主节点disable心跳网卡,ping心跳IP地址,检查cluster状态,然后恢复正常状态。

  1. ifdown eth<nr>
  2. ping 心跳IP地址
  3. crm_mon -r
  4. ifup eth<nr>

3)测试结果:disable主节点的心跳网卡后,检查心跳IP地址没法ping通,检查HA状态发现不发生切换,通讯切换到冗余的业务网卡,恢复被disable的心跳网卡。

3. Disable业务网卡
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态,ifconfig中网卡状态正常,心跳网和业务网地址通讯正常,corosync中冗余配置正常。
2)操作:在cluster中的主节点disable业务网卡,ping业务IP地址,检查cluster状态,然后恢复正常状态。

  1. ifdown eth<nr>
  2. ping 业务IP地址
  3. crm_mon -r
  4. 使用心跳IP登录
  5. ifup eth<nr>

3)测试结果:disable主节点的业务网卡后,检查业务IP地址没法ping通,HA发生切换,所有主节点上的resource切换到备节点,使用心跳IP登录主节点,恢复被disable的业务网卡。

SAP HANA测试场景

SAP HANA层面测试

1. 主节点Indexserver进程
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:首先确认主节点上indexserver的进程PID,然后kill掉indexserver进程。

  1. pgrep -fl hdbindexserver
  2. kill -9 <pid-indexserver>
  3. HDB info

3)测试结果:kill掉indexserver进程后,indexserver自动重启,HDB info检查可以看到PID变成新的PID。

2. 备节点Indexserver进程
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:首先确认备节点上indexserver的进程PID,然后kill掉indexserver进程。

  1. pgrep -fl hdbindexserver
  2. kill -9 <pid-indexserver>
  3. HDB info

3)测试结果:kill掉indexserver进程后,indexserver自动重启,HDB info检查可以看到PID变成新的PID。

3. 主节点xsengineserver进程
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:首先确认xsengineserver进程PID,然后kill掉xsengineserver进程。

  1. pgrep -fl xsengine
  2. kill -9 <pid-hdbxsengine>
  3. HDB info

3)测试结果:kill掉xsengineserver进程后,xsengineserver自动重启,HDB info检查可以看到PID变成新的PID。

4. 备节点xsengineserver进程
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:首先确认备节点xsengineserver进程PID,然后kill掉xsengineserver进程。

  1. pgrep -fl xsengine
  2. kill -9 <pid-hdbxsengine>

3)测试结果:kill掉xsengineserver进程后,xsengineserver自动重启,HDB info检查可以看到PID变成新的PID。

5. 主节点nameserver进程
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:首先确认主节点nameserver进程PID,然后kill掉nameserver进程。

  1. pgrep -fl hdbnameserver
  2. kill -9 <pid-hdbnameserver>
  3. HDB info

3)测试结果:kill掉nameserver进程后,nameserver自动重启,HDB info检查可以看到PID变成新的PID。

6. 备节点nameserver进程
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:首先确认备节点nameserver进程PID,然后kill掉nameserver进程。

  1. pgrep -fl hdbnameserver
  2. kill -9 <pid-hdbnameserver>

3)测试结果:kill掉hdbnameserver进程后,hdbnameserver自动重启,HDB info检查可以看到PID变成新的PID。

7. 主节点Daemon进程
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:首先确认主节点daemon的进程PID,然后kill掉daemon进程。

  1. pgrep -fl hdb.sap<SID>
  2. kill -9 <pid-disp>
  3. crm_mon -r
  4. HDB info
  5. hdbnsutil -sr_state
  6. hdbnsutil -sr_register --remoteHost=备节点 --remoteInstance= --replicationMode= --name= --operationMode=
  7. HDB start
  8. crm resource cleanup <failed resource>

3)测试结果:kill掉主节点daemon的进程PID后,如果HA的配置中PREFER_SITE_TAKEOVER设置为true,那么HA发生切换,resource切换到备节点,备节点成为主节点,如果AUTOMATED_REGISTER设置为false,不会发生自动注册,恢复之前的主节点首先HSR重新注册变为备节点,然后启动HANA,清理失败的resource记录。

8. 备节点Daemon进程
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:首先确认备节点daemon的进程PID,然后kill掉daemon进程。

  1. pgrep -fl hdb.sap<SID>
  2. kill -9 <pid-disp>
  3. HDB info
  4. crm_mon -r
  5. crm resource cleanup <failed resource>

3)测试结果:kill掉备节点daemon的进程PID后,不会发生切换,备节点的HANA停止后,cluster会自动重新启动HANA。

Cluster层面测试

1. Cluster软件
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:选择任意一个节点首先确认corosync进程,然后kill掉corosync进程。

  1. pgrep -fl corosync
  2. kill -9 <pid>
  3. hdbnsutil -sr_register --remoteHost=备节点 --remoteInstance= --replicationMode= --name= --operationMode= #如果kill掉的是主节点,需要重新注册HSR后再启动cluster#
  4. sbd -d /<device name> message 节点 clear
  5. systemctl start pacemaker
  6. HDB info
  7. crm_mon -r
  8. crm resource cleanup <failed resource>

3)测试结果:所选择的节点被fence掉,本节点的所有resource切换到另外一个节点,恢复被fence的节点需要将Stonith设备状态设置为clear,如果是主节点被fence还需要考虑恢复时重新注册HSR,然后重启cluster。

2. fence节点
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:选择任意一个节点fence。

  1. crm node fence <target_node>
  2. hdbnsutil -sr_register --remoteHost=备节点 --remoteInstance= --replicationMode= --name= --operationMode= #如果fence掉的是主节点,需要重新注册HSR后再启动cluster#
  3. sbd -d /<device name> message 节点 clear
  4. systemctl start pacemaker
  5. HDB info
  6. crm_mon -r
  7. crm resource cleanup <failed resource>

3)测试结果:所选择的节点被fence掉,本节点的所有resource切换到另外一个节点,恢复被fence的节点需要将Stonith设备状态设置为clear,如果是主节点被fence还需要考虑恢复时重新注册HSR,然后重启cluster。

3. Cluster维护模式
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:首先使cluster处于维护模式,维护任务结束后使clsuter恢复正常模式。

  1. crm configure property maintenance-mode=on
  2. crm configure property maintenance-mode=off

3)测试结果:Cluster处于维护模式,HANA依然保持运行,所有节点resource处于unmanaged状态,此时可以对cluster进行维护任务,维护任务结束后执行off操作使cluster恢复正常。

Infra层面测试

1. 主机关闭或重启
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态。
2)操作:在控制台直接关闭或重启主节点(备节点),再将此节点状态恢复。

  1. 控制台---实例---选中要停止的主机---选择更多---停机或重启
  2. hdbnsutil -sr_register --remoteHost=备节点 --remoteInstance= --replicationMode= --name= --operationMode= #备节点不需要重新注册HSR#
  3. systemctl start pacemaker
  4. crm_mon -r
  5. HDB info

3)测试结果:HA发生切换,停止或重启的主机上的所有resource切换到备节点。主节点的HSR需要重新注册成为备节点(如果是备节点不需要重新注册),启动cluster,检查cluster状态,检查HANA是否启动。

2. Disable心跳网卡
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态,ifconfig中网卡状态正常,心跳网和业务网地址通讯正常,corosync中冗余配置正常。
2)操作:在cluster中的主节点disable心跳网卡,ping心跳IP地址,检查cluster状态,然后恢复正常状态。

  1. ifdown eth<nr>
  2. ping 心跳IP地址
  3. crm_mon -r
  4. ifup eth<nr>

3)测试结果:disable主节点的心跳网卡后,检查心跳IP地址没法ping通,检查HA状态发现不发生切换,通讯切换到冗余的业务网卡,恢复被disable的心跳网卡。

3. Disable业务网卡
1)前提条件:#crm status显示cluster状态正常,所有resource正常状态,ifconfig中网卡状态正常,心跳网和业务网地址通讯正常,corosync中冗余配置正常。
2)操作:在cluster中的主节点(备节点)disable业务网卡,ping业务IP地址,检查cluster状态,然后恢复正常状态。

  1. ifdown eth<nr>
  2. ping 业务IP地址
  3. 使用心跳IP登录
  4. ifup eth<nr>
  5. hdbnsutil -sr_register --remoteHost=备节点 --remoteInstance= --replicationMode= --name= --operationMode= #如果disable掉的是主节点业务网卡,需要重新注册HSR后再启动cluster#
  6. systemctl start pacemaker
  7. crm_mon -r
  8. HDB info

3)测试结果:disable主节点的业务网卡后,检查业务IP地址没法ping通,HA发生切换,所有主节点上的resource切换到备节点,使用心跳IP登录主节点,恢复被disable的业务网卡,主节点的HSR需要重新注册成为备节点,启动cluster,检查cluster状态,检查HANA是否启动,如果disable备节点的业务网卡则整个过程不需要重新注册HSR。