
# 配置SAP NetWeaver的HA功能（分布式高可用部署）
#### 操作场景
为保护SAP NetWeaver免受单点故障的影响，提高SAP NetWeaver的可用性，需要为ASCS主备节点配置HA机制，此操作只有在分布式HA部署场景下才需要执行。
#### 前提条件
- ASCS主备节点之间已建立互信。
- 已关闭操作系统防火墙。操作方法请参考[修改操作系统配置](https://support.huaweicloud.com/usermanual-sapnw/sapnetweaver_01_0052.html)。
- 为保证ASCS主备节点内部通信正常，在安装完SAP NetWeaver实例后需要修改hosts文件，增加虚拟IP与虚拟主机的映射关系。
  - 登录ASCS主备节点，执行以下命令，修改"/etc/hosts"文件。 **vi /etc/hosts**
    
  
  - 将虚拟主机名对应的主机IP改为虚拟IP。
    ```
    10.0.3.52       netweaver-0001
    10.0.3.196      netweaver-0002
    10.0.3.220      ascsha
    10.0.3.2        ersha
    ```
    ![](https://support.huaweicloud.com/usermanual-sapnw/public_sys-resources/note_3.0-zh-cn.png)
    ascsha为ASCS主节点虚拟主机名，ersha为ASCS备节点虚拟主机名，虚拟机主机名可自定义。
    
   
- 检查ASCS主备节点是否存在"/var/log/cluster"目录，不存在则创建这个目录。
- 在ASCS主备节点上更新SAP resource agents。
  1. 执行以下命令，检查是否已安装resource-agents补丁包。 **sudo grep 'parameter name="IS_ERS"' /usr/lib/ocf/resource.d/heartbeat/SAPInstance**
     - 输出如下，表示已安装补丁包，结束操作。
     
     - 未输出以下结果，则需要安装补丁包，执行[2]。
     
     
     ```
     <parameter name="IS_ERS" unique="0" required="0">
     ```
     
  
  2. 执行以下命令，安装resource-agents补丁包。
     镜像为SLES 12 SP1时需执行以下命令：
     **sudo zypper in -t patch SUSE-SLE-HA-12-SP1-2017-885=1**
     镜像为SLES 12 SP2时需执行以下命令：
     **sudo zypper in -t patch** **SUSE-SLE-HA-12-SP2-2018-1923=1**
     镜像为SLES 12 SP3时需执行以下命令：
     **sudo zypper in -t patch** **SUSE-SLE-HA-12-SP3-2018-1922** **=1**
     
   
- 在ASCS主备节点上更新sap_suse_cluster_connector。
- 确保已安装了依赖包patterns-ha-ha_sles和sap-suse-cluster-connector。 执行以下命令，检查是否安装依赖包。
  **rpm -qa \| grep** **patterns-ha-ha_sles**
  **rpm -qa \| grep** **sap-suse-cluster-connector**
  如未安装，请执行以下命令安装。
  **zypper in -y patterns-ha-ha_sles**
  **zypper in -y** **sap-suse-cluster-connector**
  
 
#### 操作步骤
1. 登录ASCS实例节点，获取ha_auto_script.zip压缩包，解压到任意目录。 
   1. 获取ha_auto_script.zip压缩包 **华北-北京一：wget https://obs-sap-cn-north-1.obs.cn-north-1.myhuaweicloud.com/ha_auto_script/ha_auto_script.zip -P /sapmnt**
      **华北-北京四：** **wget https://obs-sap-cn-north-4.obs.cn-north-4.myhuaweicloud.com/ha_auto_script/ha_auto_script.zip** **-P /sapmnt**
      **华东-上海二：wget https://obs-sap.obs.cn-east-2.myhuaweicloud.com/ha_auto_script/ha_auto_script.zip** **-P /sapmnt**
      **华南-广州：wget https://obs-sap-cn-south-1.obs.cn-south-1.myhuaweicloud.com/ha_auto_script/ha_auto_script.zip** **-P /sapmnt**
      
   
   2. 解压文件
   
   
   **cd /sapmnt**
   **unzip **ha_auto_script**.zip**
   
   
2. 根据客户实际情况配置ascs_ha.cfg文件中的参数。各参数含义如[表1]所示。
   
    表1ascs_ha.cfg配置文件参数含义 
   | 参数类型                                                                                                                                                 | 参数名称               | 参数解释                                                    |
   |:---|:---|:---|
   | masterNode                                                                                      | masterName         | ASCS实例节点的主机名                                            |
   | masterNode                                                                                      | masterHeartbeatIP1 | ASCS实例节点心跳平面IP1                                         |
   | masterNode                                                                                      | masterHeartbeatIP2 | ASCS实例节点业务平面IP                                          |
   | slaveNode                                                                                        | slaveName          | ERS实例节点的主机名                                             |
   | slaveNode                                                                                        | slaveHeartbeatIP1  | ERS实例节点心跳平面IP1                                          |
   | slaveNode                                                                                        | slaveHeartbeatIP2  | ERS实例节点业务平面IP                                           |
   | ASCSInstance                                                                                                                                         | ASCSFloatIP        | ASCS实例的业务IP                                             |
   | ASCSInstance                                                                                                                                         | ASCSInstanceDir    | ASCS实例的目录                                               |
   | ASCSInstance                                                                                                                                         | ASCSDevice         | ASCS实例目录所使用的磁盘分区                                        |
   | ASCSInstance                                                                                                                                         | ASCSProfile        | ASCS实例的profile文件                                        |
   | ERSInstance 说明： ERSInstanceDir、ERSDevice和ERSProfile参数信息需要登录ERS实例节点获取。 | ERSFloatIP         | ERS实例的业务IP                                              |
   | ERSInstance 说明： ERSInstanceDir、ERSDevice和ERSProfile参数信息需要登录ERS实例节点获取。 | ERSInstanceDir     | ERS实例的目录                                                |
   | ERSInstance 说明： ERSInstanceDir、ERSDevice和ERSProfile参数信息需要登录ERS实例节点获取。 | ERSDevice          | ERS实例目录所使用的磁盘分区                                         |
   | ERSInstance 说明： ERSInstanceDir、ERSDevice和ERSProfile参数信息需要登录ERS实例节点获取。 | ERSProfile         | ERS实例的profile文件                                         |
   | trunkInfo                                                                                                                                            | SBDDevice          | SBD使用独立磁盘，最多支持3个，使用英文逗号分隔，如/dev/sda, /dev/sdb, /dev/sdc |
      
   
   
3. 执行脚本进行HA自动部署。 
   **sh ascs_auto_ha.sh**
   
   
4. 执行crm status命令，查看资源状态。 
   ![](https://support.huaweicloud.com/usermanual-sapnw/zh-cn_image_0127607791.png)
   ![](https://support.huaweicloud.com/usermanual-sapnw/public_sys-resources/note_3.0-zh-cn.png)
   HA功能配置完成后，HAE会管理资源，请不要使用其他方式启动或停止资源。如果需要手动执行一些测试或者修改操作，请先将集群进入维护模式。
   **crm configure property maintenance-mode=true**
   修改完成后再退出维护模式。
   **crm configure property maintenance-mode=false**
   如果需要对节点进行关机或者重启等操作，请先手动关闭集群服务。
   **systemctl stop pacemaker**
   虚拟机启动或者重启完成后，需要手动执行以下命令来启动集群服务。
   **systemctl start pacemaker**
   
   
