群集配置
引导集群并配置所有必需的集群资源和限制。
主题
为资源创建做准备
为确保集群在设置资源和配置期间不会执行任何意外操作,请将维护模式设置为 true。
运行以下命令,将集群置于维护模式:
# pcs property set maintenance-mode=true
要验证当前的维护状态,请执行以下操作:
$ pcs status
注意
维护模式分为两种类型:
-
集群范围的维护(使用
pcs property set maintenance-mode=true进行设置) -
特定于节点的维护(使用
pcs node maintenance nodename进行设置)
更改配置时,请务必使用集群范围的维护模式。有关特定于节点的操作,例如硬件维护,请参阅“操作”部分以了解正确的步骤。
要在配置完成后禁用维护模式,请执行以下操作:
# pcs property set maintenance-mode=false
集群引导
配置集群属性
配置集群属性以建立隔离行为和资源失效转移设置:
# pcs property set stonith-enabled="true" # pcs property set stonith-timeout="600" # pcs property set priority-fencing-delay="20"
-
建议使用 priority-fencing-delay,以便在网络分区事件期间保护 SAP HANA 节点。进行集群分区时,这种延迟会优先考虑托管更高优先级资源的节点,而 SAP HANA 主(已提升)实例将获得额外的优先级权重。这有助于确保主 HANA 节点在脑裂场景中存活下来。建议将 20 秒的 priority-fencing-delay 与在 stonith 中配置的 pcmk_delay_max(10 秒)结合使用,这样就能在发生隔离前提供总共可达 30 秒的潜在延迟。
要验证集群属性设置,请执行以下操作:
# pcs property list # pcs property config <property_name>
配置资源默认值
配置资源默认行为:
各个资源可以用自己定义的值覆盖这些默认值。
要验证您的资源默认设置,请执行以下操作:
配置操作默认值
# pcs resource op defaults update timeout="600"
如果未定义特定于资源的超时,op_defaults 超时可确保所有集群操作的默认超时为合理的 600 秒。默认值不适用于使用自己定义的值进行了覆盖的资源
创建 STONITH 隔离资源
正确的集群隔离操作需要 AWS STONITH 资源。建议将 fence_aws 资源用于 AWS 部署,因为该资源利用 AWS API,通过停止节点的 EC2 实例来安全地隔离出现故障或无法通信的节点。
使用资源代理 fence_aws 创建 STONITH 资源:
# pcs stonith create <stonith_resource_name> fence_aws \ pcmk_host_map="<hostname_1>:<instance_id_1>;<hostname_2>:<instance_id_2>" \ region="<aws_region>" \ pcmk_delay_max="10" \ pcmk_reboot_timeout="600" \ pcmk_reboot_retries="4" \ op start interval="0" timeout="600" \ op stop interval="0" timeout="180" \ op monitor interval="300" timeout="60"
详细信息:
-
pcmk_host_map:将集群节点主机名映射到其 EC2 实例 ID。此映射在 AWS 账户中必须唯一,并遵循 hostname:instance-id 的格式,使用分号分隔多个条目。
-
region:部署 EC2 实例的 AWS 区域。
-
pcmk_delay_max:执行隔离操作前的随机延迟。与集群属性
priority-fencing-delay配合使用以防止同时执行隔离。过去会设置为较高的值,但现在由priority-fencing-delay处理主节点保护,较低的值(10 秒)便已足够。 -
pcmk_reboot_timeout:重启操作允许的最长时间,以秒为单位。
-
pcmk_reboot_retries:重试失败的重新引导操作的次数。
-
使用参数参考中的值的示例:
# pcs stonith create rsc_fence_aws fence_aws \ pcmk_host_map="hanahost01:i-xxxxinstidforhost1;hanahost02:i-xxxxinstidforhost2" \ region="us-east-1" \ pcmk_delay_max="10" \ pcmk_reboot_timeout="600" \ pcmk_reboot_retries="4" \ op start interval="0" timeout="600" \ op stop interval="0" timeout="180" \ op monitor interval="300" timeout="60"
注意
配置 STONITH 资源时,请考虑实例的启动和关闭时间。默认 pcmk_reboot_action 是“reboot”,此时集群会等待停止和启动操作完成,然后才会将隔离操作视为成功。这使得集群可以返回受保护状态。设置 pcmk_reboot_action=off 可允许集群在关闭后立即继续。对于内存增强型裸机实例,建议只使用“off”,因为启动期间初始化内存的时间会延长。
# pcs resource update <stonith_resource_name> pcmk_reboot_action="off" # pcs resource update <stonith_resource_name> pcmk_off_timeout="600" # pcs resource update <stonith_resource_name> pcmk_off_retries="4"
创建重叠 IP 资源
此资源通过更新 AWS 路由表条目来确保在失效转移期间,客户端连接会跟随 SAP HANA 主实例。它管理一个始终指向活动 SAP HANA 数据库的重叠 IP 地址
创建 IP 资源:
# pcs resource create rsc_ip_<SID>_HDB<hana_sys_nr> ocf:heartbeat:aws-vpc-move-ip \ ip="<hana_overlayip>" \ routing_table="<routetable_id>" \ interface="eth0" \ profile="<cli_cluster_profile>" \ op start interval="0" timeout="180" \ op stop interval="0" timeout="180" \ op monitor interval="60" timeout="60"
详细信息:
-
ip:将用于连接主要 SAP HANA 数据库的重叠 IP 地址。参见重叠 IP 概念
-
routing_table:需要更新的 AWS 路由表的 ID。要指定多个路由表,可以使用逗号分隔(例如,
routing_table=rtb-xxxxxroutetable1,rtb-xxxxxroutetable2)。确保已按照为重叠 IP 添加 VPC 路由表条目中的说明创建初始条目 -
interface:IP 地址的网络接口(通常为 eth0)
-
profile:(可选)用于 API 身份验证的 AWS CLI 配置文件名称。使用
aws configure list-profiles验证配置文件是否存在。如果配置文件没有明确地进行配置,则将使用默认配置文件。 -
使用参数参考中的值的示例:
# pcs resource create rsc_ip_HDB_HDB00 ocf:heartbeat:aws-vpc-move-ip \ ip="172.16.52.1" \ routing_table="rtb-xxxxxroutetable1" \ interface="eth0" \ profile="cluster" \ op start interval="0" timeout="180" \ op stop interval="0" timeout="180" \ op monitor interval="60" timeout="60"
对于启用主动/主动只读
仅适用于您正在使用 logreplay_readenabled 并要求可通过重叠 IP 访问辅助系统时。您可以创建其他 IP 资源。
# pcs resource create primitive rsc_ip_<SID>_HDB<hana_sys_nr>_readenabled ocf:heartbeat:aws-vpc-move-ip \ ip="<readenabled_overlayip>" \ routing_table="<routetable_id>" \ interface="eth0" \ profile="<cli_cluster_profile>" \ op start interval="0" timeout="180" \ op stop interval="0" timeout="180" \ op monitor interval="60" timeout="60"
-
使用参数参考中的值的示例:
# crm configure primitive rsc_ip_HDB_HDB00_readenabled ocf:heartbeat:aws-vpc-move-ip \ params ip="172.16.52.2" \ routing_table="rtb-xxxxxroutetable1" \ interface="eth0" \ profile="cluster" \ op start interval="0" timeout="180" \ op stop interval="0" timeout="180" \ op monitor interval="60" timeout="60"
对于共享 VPC
如果您的配置需要共享 VPC,则需要另外两个参数。
# pcs resource create primitive rsc_ip_<SID>_HDB<hana_sys_nr> ocf:heartbeat:aws-vpc-move-ip \
ip="<hana_overlayip>" routing_table=<routetable_id> interface=eth0 \
profile="<cli_cluster_profile>" lookup_type=NetworkInterfaceId \
routing_table_role="arn:aws:iam::<sharing_vpc_account_id>:role/<sharing_vpc_account_cluster_role>" \
op start interval="0" timeout="180" \
op stop interval="0" timeout="180" \
op monitor interval="60" timeout="60"
其他详细信息:
-
lookup_type=NetworkInterfaceId
-
routing_table_role="arn:aws:iam::<shared_vpc_account_id>:role/<sharing_vpc_account_cluster_role>"
创建 SAPHanaTopology 资源
SAPHanaTopology 资源代理通过系统复制,帮助管理 SAP HANA 数据库的高可用性。它分析 HANA 拓扑并通过节点状态属性报告调查发现。SAPHana 或 SAPHanaController 资源代理使用这些属性来控制 HANA 数据库。SAPHanaTopology 启动并监控本地 saphostagent,利用 landscapeHostConfiguration.py、hdbnsutil 和 saphostctrl 等 SAP 接口收集有关系统状态、角色和配置的信息。
对于纵向扩展部署和横向扩展部署
有关该资源的文档,您可以查看 man 页面。
# man ocf_heartbeat_SAPHanaTopology
详细信息:
-
SID:HANA 实例的 SAP 系统 ID
-
InstanceNumber:SAP HANA 实例的实例编号
-
clone-node-max:定义在单个节点上可以启动多少个资源代理副本(设置为 1)
-
interleave:允许在同一节点上并行启动依赖克隆资源(设置为 true)
-
clone-max:定义可以在集群中启动的克隆实例总数(例如,使用 2 用于横向扩展,或设置为 6 用于横向扩展,每个站点 3 个节点,不包括仲裁生成器节点)
创建 SAPHANA 资源(基于资源代理 SAPHana 或 SAPHanaController)
SAP HANA 资源代理管理 SAP HANA 数据库之间的系统复制和失效转移。这些代理控制启动、停止和监视操作,同时检查同步状态,以保持数据一致性。代理利用 SAP 接口,包括 sapcontrol、landscapeHostConfiguration、hdbnsutil、systemReplicationStatus 和 saphostctrl。所有配置都与 SAPHanaTopology 代理配合使用,后者收集有关集群节点间系统复制状态的信息。
根据您的 SAP HANA 架构选择合适的资源代理配置:
SAPHanaSR-angi 部署(在 RHEL 9.6 和 10+ 版本中可用)
在 RHEL 9.6 和 10+ 版本上可用,并推荐用于新部署。SAPHanaController 资源代理采用新一代系统复制架构(SAPHanaSR-angi),为纵向扩展和横向扩展部署提供了改进的集成和管理功能。有关详细信息:
有关该资源的文档,您可以查看 man 页面。
# man ocf_heartbeat_SAPHanaController
详细信息:
-
SID:HANA 实例的 SAP 系统 ID
-
InstanceNumber:SAP HANA 实例的实例编号
-
clone-node-max:定义在单个节点上可以启动多少个资源代理副本(设置为 1)
-
interleave:允许在同一节点上并行启动依赖克隆资源(设置为 true)
-
clone-max:定义可以在集群中启动的克隆实例总数(例如,使用 2 用于横向扩展,或设置为 6 用于横向扩展,每个站点 3 个节点,不包括仲裁生成器节点)
-
PREFER_SITE_TAKEOVER 定义是否首选接管辅助系统。查看非标准部署。
-
AUTOMATED_REGISTER 定义是否应将前主系统注册为辅助系统。查看非标准部署。
-
DUPLICATE_PRIMARY_TIMEOUT 是等待时间,用于尽可能降低意外的双主系统风险。
-
meta priority:将其设置为 100 可与 priority-fencing-delay 配合使用,以确保正确的失效转移顺序并防止同时执行隔离操作
-
对于较大的数据库,可能需要增加启动和停止超时值(3600 秒)。根据数据库大小和观察到的启动/关闭时间调整这些值
-
如果您需要更新配置,以下示例可帮助您确定正确的命令
# pcs resource update rsc_SAPHanaController_HDB_HDB00 op monitor role="Promoted" timeout=900 # pcs resource update rsc_SAPHanaController_HDB_HDB00 DUPLICATE_PRIMARY_TIMEOUT=3600 # pcs resource meta rsc_SAPHanaController_HDB_HDB00-clone priority=100
经典部署
对于经典的纵向扩展部署,SAPHana 资源代理管理两个 SAP HANA 数据库之间的接管。有关详细信息:
# man ocf_heartbeat_SAPHana
详细信息:
-
SID:HANA 实例的 SAP 系统 ID
-
InstanceNumber:SAP HANA 实例的实例编号
-
clone-node-max:定义在单个节点上可以启动多少个资源代理副本(设置为 1)
-
interleave:允许在同一节点上并行启动依赖克隆资源(设置为 true)
-
clone-max:定义可以在集群中启动的克隆实例总数(例如,使用 2 用于横向扩展,或设置为 6 用于横向扩展,每个站点 3 个节点,不包括仲裁生成器节点)
-
PREFER_SITE_TAKEOVER 定义是否首选接管辅助系统。查看非标准部署。
-
AUTOMATED_REGISTER 定义是否应将前主系统注册为辅助系统。查看非标准部署。
-
DUPLICATE_PRIMARY_TIMEOUT 是等待时间,用于尽可能降低意外的双主系统风险。
-
meta priority:将其设置为 100 可与 priority-fencing-delay 配合使用,以确保正确的失效转移顺序并防止同时执行隔离操作
-
对于较大的数据库,可能需要增加启动和停止超时值(3600 秒)。根据数据库大小和观察到的启动/关闭时间调整这些值
-
如果您需要更新配置,以下示例可帮助您确定正确的命令
# pcs resource update rsc_SAPHana_HDB_HDB00 op monitor role="Promoted" timeout=900 # pcs resource update rsc_SAPHana_HDB_HDB00 DUPLICATE_PRIMARY_TIMEOUT=3600 # pcs resource meta rsc_SAPHana_HDB_HDB00-clone priority=100
创建资源约束
以下约束是必需的。
顺序约束
此约束定义 SAPHanaTopology 与 SAPHana 资源之间的启动顺序:
# pcs constraint order <SAPHanaTopology-clone> <SAPHana/SAPHanaController-clone> symmetrical=false
-
示例:
# pcs constraint order start rsc_SAPHanaTopology_HDB_HDB00-clone then rsc_SAPHana_HDB_HDB00-clone symmetrical=false
主机托管约束
主资源的 IP
此约束可确保用于确定重叠 IP 的目标的 IP 资源,运行在具有主 SAP Hana 角色的节点上:
# pcs constraint colocation add <ip_resource> with promoted <SAPHana/SAPHanaController-clone> 2000
-
示例:
# pcs constraint colocation add rsc_ip_HDB_HDB00 with promoted rsc_SAPHana_HDB_HDB00-clone 2000
辅助资源的只读 IP(仅适用于只读模式)
此约束可确保启用只读的 IP 资源运行在辅助(未提升)节点上。当辅助节点不可用时,IP 将移至主节点,读取工作负载将与主工作负载共享容量:
# pcs constraint colocation add <ip_resource> with unpromoted <SAPHana/SAPHanaController-clone> 2000
-
示例:
# pcs constraint colocation add rsc_ip_HDB_HDB00_readenabled with unpromoted rsc_SAPHana_HDB_HDB00-clone 2000
位置约束
仲裁生成器上没有 SAP HANA 资源(仅限横向扩展)
这种位置约束可确保 SAP HANA 资源避开仲裁生成器,因为其上不适合运行这些资源。
# pcs constraint location <SAPHanaTopology-clone> avoids <hostname_mm> # pcs constraint location <SAPHana/SAPHanaController-clone> avoids <hostname_mm>
激活集群
使用 pcs config show 来检查是否正确输入了所有值。
确认值正确之后,使用以下命令将维护模式设置为 false。这使得集群可以控制资源:
# pcs property set maintenance-mode=false
重置配置 – 可选
重要
以下说明可帮助您重置完整配置。只有当您想从头开始进行设置时,才运行这些命令。
运行以下命令可备份当前配置以供参考:
# pcs config backup /tmp/cluster_backup_$(date +%Y%m%d) # pcs config show > /tmp/config_backup_$(date +%Y%m%d).txt
运行以下命令可停止并清除当前配置
# pcs cluster stop --all hanahost02: Stopping Cluster (pacemaker)... hanahost01: Stopping Cluster (pacemaker)... hanahost02: Stopping Cluster (corosync)... hanahost01: Stopping Cluster (corosync)... # pcs cluster destroy Shutting down pacemaker/corosync services... Killing any remaining services... Removing all cluster configuration files...
执行上述擦除命令后,它将从集群信息库(CIB)中删除所有集群资源,并断开从 corosync 到集群的通信。只有在绝对需要将所有设置重置为默认值时才执行这些步骤。对于较小的更改,请改用 pcs 资源更新或 pcs 属性设置。