你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用隔离设备在 SUSE 中进行高可用性设置
本文将针对如何使用隔离设备在 SUSE 操作系统上的 HANA 大型实例中设置高可用性 (HA) 进行详细的分步说明。
注意
本指南是成功测试 Microsoft HANA 大型实例环境中的设置的结果。 适用于 HANA 大型实例的 Microsoft 服务管理团队不支持操作系统。 有关操作系统层的故障排除或说明,请联系 SUSE。
Microsoft 服务管理团队确实设置并完全支持隔离设备。 它可以帮助排查隔离设备问题。
先决条件
要使用 SUSE 集群设置高可用性,需要执行以下操作:
- 预配 HANA 大型实例。
- 使用最新补丁安装和注册操作系统。
- 将 HANA 大型实例服务器连接到 SMT 服务器以获取补丁和包。
- 设置网络时间协议(NTP 时间服务器)。
- 阅读并了解有关 HA 设置的最新 SUSE 文档。
设置详细信息
本指南使用以下设置:
- 操作系统:适用于 SAP 的 SLES 12 SP1
- HANA 大型实例:2xS192(4 个套接字,2 TB)
- HANA 版本:HANA 2.0 SP1
- 服务器名:sapprdhdb95 (node1) 和 sapprdhdb96 (node2)
- 隔离设备:基于 iSCSI
- HANA 大型实例节点之一上的 NTP
在使用 HANA 系统复制设置 HANA 大型实例时,可请求 Microsoft 服务管理团队设置隔离设备。 在预配时执行此操作。
如果你是已预配 HANA 大型实例的现有客户,则仍可以设置隔离设备。 以服务申请表 (SRF) 的形式向 Microsoft 服务管理团队提供以下信息。 可通过技术部客户经理或 HANA 大型实例载入的 Microsoft 联系人来获取 SRF。
- 服务器名和服务器 IP 地址(例如,myhanaserver1 和 10.35.0.1)
- 位置(例如,美国东部)
- 客户名称(例如,Microsoft)
- HANA 系统标识符 (SID)(例如,H11)
配置隔离设备后,Microsoft 服务管理团队会提供 SBD 名称和 iSCSI 存储的 IP 地址。 可以使用此信息来配置隔离设置。
按照以下部分中的步骤使用隔离设备设置 HA。
标识 SBD 设备
注意
本部分仅适用于现有客户。 如果你是新客户,Microsoft 服务管理团队会向你提供 SBD 设备名称,因此可以跳过此部分。
将 /etc/iscsi/initiatorname.isci 修改为:
iqn.1996-04.de.suse:01:<Tenant><Location><SID><NodeNumber>
Microsoft 服务管理会提供此字符串。 在这两个节点上修改文件。 但每个节点上的节点编号不同。
通过设置
node.session.timeo.replacement_timeout=5
和node.startup = automatic
来修改 /etc/iscsi/iscsid.conf。 在这两个节点上修改文件。在这两个节点上运行以下发现命令。
iscsiadm -m discovery -t st -p <IP address provided by Service Management>:3260
结果显示四个会话。
在这两个节点上运行以下命令以登录到 iSCSI 设备。
iscsiadm -m node -l
结果显示四个会话。
使用以下命令运行 rescan-scsi-bus.sh 重新扫描脚本。 此脚本显示为你创建的新磁盘。 在这两个节点上运行该命令。
rescan-scsi-bus.sh
结果应显示一个大于零的 LUN 编号(例如,1、2 等)。
要获取设备名,请在这两个节点上运行以下命令。
fdisk –l
在结果中,选择大小为 178 MiB 的设备。
初始化 SBD 设备
在这两个节点上使用以下命令初始化 SBD 设备。
sbd -d <SBD Device Name> create
在这两个节点上使用以下命令检查已写入设备的信息。
sbd -d <SBD Device Name> dump
配置 SUSE HA 群集
在这两个节点上使用以下命令检查是否安装了 ha_sles 和 SAPHanaSR-doc 模式。 如果未安装,请先进行安装。
zypper in -t pattern ha_sles zypper in SAPHanaSR SAPHanaSR-doc
使用
ha-cluster-init
命令或 yast2 向导设置群集。 本示例中使用的是 yast2 向导。 仅在主节点上执行此步骤。依次转到“yast2”>“高可用性”>“群集” 。
在显示的有关 hawk 包安装的对话框中,选择“取消”,因为已安装 halk2 包。
在显示的有关继续的对话框中,选择“继续”。
预期值为已部署的节点数(在本例中为 2)。 选择“下一页”。
添加节点名,然后选择“添加建议的文件”。
选择“开启 csync2”。
选择“生成预共享密钥”。
在显示的弹出消息中,选择“确定”。
使用 Csync2 中的 IP 地址和预共享密钥执行身份验证。 使用
csync2 -k /etc/csync2/key_hagroup
生成密钥文件。在创建文件 key_hagroup 后,将其手动复制到群集的所有成员。 确保将文件从 node1 复制到 node2。 然后,选择“下一步”。
在默认选项中,“启动”为“关闭” 。 将其更改为“打开”,以便在启动时启动 pacemaker 服务。 可以基于设置需求做出选择。
选择“下一步”,完成群集配置。
设置 softdog 监视程序
在这两个节点上将以下行添加到 /etc/init.d/boot.local 。
modprobe softdog
在这两个节点上使用以下命令更新文件 /etc/sysconfig/sbd 。
SBD_DEVICE="<SBD Device Name>"
通过运行以下命令在这两个节点上加载内核模块。
modprobe softdog
使用以下命令确保 softdog 在这两个节点上运行。
lsmod | grep dog
在这两个节点上使用以下命令启动 SBD 设备。
/usr/share/sbd/sbd.sh start
在这两个节点上使用以下命令测试 SBD 守护程序。
sbd -d <SBD Device Name> list
在这两个节点上配置后,结果显示两个条目。
向其中一个节点发送以下测试消息。
sbd -d <SBD Device Name> message <node2> <message>
在第二个节点 (node2) 上,使用以下命令检查消息状态。
sbd -d <SBD Device Name> list
要采用 SBD 配置,请在这两个节点上更新文件 /etc/sysconfig/sbd,如下所示 。
SBD_DEVICE=" <SBD Device Name>" SBD_WATCHDOG="yes" SBD_PACEMAKER="yes" SBD_STARTMODE="clean" SBD_OPTS=""
在主节点 (node1) 上使用以下命令启动 pacemaker 服务。
systemctl start pacemaker
如果 pacemaker 服务失败,请参阅本文稍后的场景 5:Pacemaker 服务失败部分。
将节点加入到群集
在 node2 上运行以下命令,让该节点加入群集。
ha-cluster-join
如果在加入群集期间收到错误,请参阅本文稍后的场景 6:Node2 无法加入群集部分。
验证群集
在这两个节点上使用以下命令检查并选择首次启动群集。
systemctl status pacemaker systemctl start pacemaker
运行以下命令,确保这两个节点都处于联机状态。 可以在该群集的任意节点上运行该命令。
crm_mon
还可登录到 hawk 来检查群集状态:
https://\<node IP>:7630
。 默认用户为 hacluster,密码为 linux 。 如果需要,可使用passwd
命令更改密码。
配置群集属性和资源
本部分将介绍配置群集资源的步骤。 在本示例中设置以下资源。 如果需要,可引用 SUSE HA 指南来配置其余部分。
- 群集启动
- 隔离设备
- 虚拟 IP 地址
仅在主节点上执行配置。
创建群集启动文件,并添加以下文本对其进行配置。
sapprdhdb95:~ # vi crm-bs.txt # enter the following to crm-bs.txt property $id="cib-bootstrap-options" \ no-quorum-policy="ignore" \ stonith-enabled="true" \ stonith-action="reboot" \ stonith-timeout="150s" rsc_defaults $id="rsc-options" \ resource-stickiness="1000" \ migration-threshold="5000" op_defaults $id="op-options" \ timeout="600"
使用以下命令将配置添加到群集。
crm configure load update crm-bs.txt
通过添加资源、创建文件和添加文本来配置隔离设备,如下所示。
# vi crm-sbd.txt # enter the following to crm-sbd.txt primitive stonith-sbd stonith:external/sbd \ params pcmk_delay_max="15"
使用以下命令将配置添加到群集。
crm configure load update crm-sbd.txt
通过创建文件并添加以下文本来添加资源的虚拟 IP 地址。
# vi crm-vip.txt primitive rsc_ip_HA1_HDB10 ocf:heartbeat:IPaddr2 \ operations $id="rsc_ip_HA1_HDB10-operations" \ op monitor interval="10s" timeout="20s" \ params ip="10.35.0.197"
使用以下命令将配置添加到群集。
crm configure load update crm-vip.txt
使用
crm_mon
命令验证资源。结果显示两个资源。
此外,可以在 https://<node IP address>:7630/cib/live/state 检查状态。
测试故障转移过程
要测试故障转移过程,请使用以下命令停止 node1 上的 pacemaker 服务。
Service pacemaker stop
资源故障转移到 node2。
停止 node2 上的 pacemaker 服务,资源故障转移到 node1。
以下是故障转移前的状态:
以下是故障转移后的状态:
疑难解答
本部分介绍在设置过程中可能会遇到的失败场景。
情景 1:群集节点未联机
如果在群集管理器中没有任何节点显示为联机,则可以尝试此过程使其联机。
使用以下命令启动 iSCSI 服务。
service iscsid start
使用以下命令登录到该 iSCSI 节点。
iscsiadm -m node -l
预期输出如下所示:
sapprdhdb45:~ # iscsiadm -m node -l Logging in to [iface: default, target: iqn.1992-08.com.netapp:hanadc11:1:t020, portal: 10.250.22.11,3260] (multiple) Logging in to [iface: default, target: iqn.1992-08.com.netapp:hanadc11:1:t020, portal: 10.250.22.12,3260] (multiple) Logging in to [iface: default, target: iqn.1992-08.com.netapp:hanadc11:1:t020, portal: 10.250.22.22,3260] (multiple) Logging in to [iface: default, target: iqn.1992-08.com.netapp:hanadc11:1:t020, portal: 10.250.22.21,3260] (multiple) Login to [iface: default, target: iqn.1992-08.com.netapp:hanadc11:1:t020, portal: 10.250.22.11,3260] successful. Login to [iface: default, target: iqn.1992-08.com.netapp:hanadc11:1:t020, portal: 10.250.22.12,3260] successful. Login to [iface: default, target: iqn.1992-08.com.netapp:hanadc11:1:t020, portal: 10.250.22.22,3260] successful. Login to [iface: default, target: iqn.1992-08.com.netapp:hanadc11:1:t020, portal: 10.250.22.21,3260] successful.
场景 2:Yast2 不显示图形视图
在本文中,使用 yast2 图形屏幕来设置高可用性群集。 如果 yast2 不随如下所示的图形窗口一起打开,并引发 Qt 错误,请执行以下步骤安装所需的包。 如果正常打开,则可以跳过这些步骤。
以下是 Qt 错误的示例:
以下是预期输出的示例:
必须以用户“root”身份登录,并设置 SMT 以下载并安装包。
转到“yast”>“软件”>“软件管理”>“依赖项”,然后选择“安装建议的包” 。
注意
在这两个节点上执行这些步骤,以便可以从两个节点访问 yast2 图形视图。
以下屏幕截图显示了预期的屏幕。
在“依赖项”下,选择“安装建议的包” 。
查看所做的更改,然后选择“确定”。
包安装继续进行。
选择“下一页”。
当显示“安装成功完成”屏幕时,选择“完成” 。
使用以下命令安装 libqt4 和 libyui-qt 包。
zypper -n install libqt4
zypper -n install libyui-qt
Yast2 现在可以打开图形视图。
场景 3:Yast2 不显示高可用性选项
要在 yast2 控制中心上显示高可用性选项,需要安装其他包。
依次转到“Yast2”>“软件”>“软件管理” 。 然后选择“软件”>“联机更新” 。
选择以下项的模式。 然后选择“接受”。
- SAP HANA 服务器基
- C/C++ 编译器和工具
- 高可用性
- SAP 应用程序服务器基
在已更改的用于解析依赖项的包列表中,选择“继续”。
在“正在执行安装”状态页上,选择“下一步” 。
安装完成后,将显示安装报告。 选择“完成”。
情景 4:HANA 安装失败,显示 gcc 程序集错误
如果 HANA 安装失败,可能会收到以下错误。
要修复此问题,请安装 libgcc_sl 和 libstdc++6 库,如以下屏幕截图所示。
情景 5:Pacemaker 服务失败
如果 pacemaker 服务无法启动,则会显示以下信息。
sapprdhdb95:/ # systemctl start pacemaker
A dependency job for pacemaker.service failed. See 'journalctl -xn' for details.
sapprdhdb95:/ # journalctl -xn
-- Logs begin at Thu 2017-09-28 09:28:14 EDT, end at Thu 2017-09-28 21:48:27 EDT. --
Sep 28 21:48:27 sapprdhdb95 corosync[68812]: [SERV ] Service engine unloaded: corosync configuration map
Sep 28 21:48:27 sapprdhdb95 corosync[68812]: [QB ] withdrawing server sockets
Sep 28 21:48:27 sapprdhdb95 corosync[68812]: [SERV ] Service engine unloaded: corosync configuration ser
Sep 28 21:48:27 sapprdhdb95 corosync[68812]: [QB ] withdrawing server sockets
Sep 28 21:48:27 sapprdhdb95 corosync[68812]: [SERV ] Service engine unloaded: corosync cluster closed pr
Sep 28 21:48:27 sapprdhdb95 corosync[68812]: [QB ] withdrawing server sockets
Sep 28 21:48:27 sapprdhdb95 corosync[68812]: [SERV ] Service engine unloaded: corosync cluster quorum se
Sep 28 21:48:27 sapprdhdb95 corosync[68812]: [SERV ] Service engine unloaded: corosync profile loading s
Sep 28 21:48:27 sapprdhdb95 corosync[68812]: [MAIN ] Corosync Cluster Engine exiting normally
Sep 28 21:48:27 sapprdhdb95 systemd[1]: Dependency failed for Pacemaker High Availability Cluster Manager
-- Subject: Unit pacemaker.service has failed
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit pacemaker.service has failed.
--
-- The result is dependency.
sapprdhdb95:/ # tail -f /var/log/messages
2017-09-28T18:44:29.675814-04:00 sapprdhdb95 corosync[57600]: [QB ] withdrawing server sockets
2017-09-28T18:44:29.676023-04:00 sapprdhdb95 corosync[57600]: [SERV ] Service engine unloaded: corosync cluster closed process group service v1.01
2017-09-28T18:44:29.725885-04:00 sapprdhdb95 corosync[57600]: [QB ] withdrawing server sockets
2017-09-28T18:44:29.726069-04:00 sapprdhdb95 corosync[57600]: [SERV ] Service engine unloaded: corosync cluster quorum service v0.1
2017-09-28T18:44:29.726164-04:00 sapprdhdb95 corosync[57600]: [SERV ] Service engine unloaded: corosync profile loading service
2017-09-28T18:44:29.776349-04:00 sapprdhdb95 corosync[57600]: [MAIN ] Corosync Cluster Engine exiting normally
2017-09-28T18:44:29.778177-04:00 sapprdhdb95 systemd[1]: Dependency failed for Pacemaker High Availability Cluster Manager.
2017-09-28T18:44:40.141030-04:00 sapprdhdb95 systemd[1]: [/usr/lib/systemd/system/fstrim.timer:8] Unknown lvalue 'Persistent' in section 'Timer'
2017-09-28T18:45:01.275038-04:00 sapprdhdb95 cron[57995]: pam_unix(crond:session): session opened for user root by (uid=0)
2017-09-28T18:45:01.308066-04:00 sapprdhdb95 CRON[57995]: pam_unix(crond:session): session closed for user root
要修复此问题,请从文件 /usr/lib/systemd/system/fstrim.timer 中删除以下行:
Persistent=true
场景 6:Node2 无法加入群集
如果通过 ha-cluster-join 命令将 node2 加入到现有群集出现问题,则会显示以下错误。
ERROR: Can’t retrieve SSH keys from <Primary Node>
要修复此问题,请执行以下操作:
在这两个节点上运行以下命令。
ssh-keygen -q -f /root/.ssh/id_rsa -C 'Cluster Internal' -N '' cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
确认 node2 已添加到群集。
后续步骤
可以在以下文章中找到有关 SUSE HA 设置的详细信息:
- SAP HANA SR 性能优化方案(SUSE 网站)
- 隔离和隔离设备(SUSE 网站)
- 准备好为 SAP HANA 使用 Pacemaker 群集 – 第 1 部分:基本信息(SAP 博客)
- 准备好为 SAP HANA 使用 Pacemaker 群集 – 第 2 部分:两个节点的故障(SAP 博客)
- OS 备份和还原