SAP HANA 이중화 구성 Pacemaker RA(Resource Agent) 설명 및 구성 방법
1. SAP HANA Pacemaker 이중화 관련 RA(Resource Agent, 리소스 에이전트) 이해
SAP에서는 SAP HANA 고가용성을 위해 Host Failover, System Replication, Storage Replication을 제공하고 있습니다.
이 중에서 가장 많이 쓰이는 것은 System Replication인데, Primary DB에서 Fail이 발생하면 수동으로 Takeover를 해주어야 하는 단점이 있습니다. 이를 자동화해주기 위해서 SUSE에서 Pacemaker Resource Agent(RA)를 만들었습니다.
1.1 SAPHanaTopology RA
SAP HANA의 토폴로지를 분석합니다. 즉, 클러스터 노드의 상태, System Replication 구성 현황 등을 확인하고, 노드들끼리 공유합니다.
모든 노드가 상태 정보를 가지고 있어야 하기 때문에, Pacemaker의 Clone 리소스 타입을 사용합니다.
1.2 SAPHana RA
System Replication으로 이중화 구성된 SAP HANA System을 Master/Slave로 구분하고, 상태 점검 및 이상이 발생할 경우 SAP HANA 인스턴스를 시작/중지합니다.
Master/Slave 두 가지 상태로 구분하기 위해 Pacemaker의 Multi State 리소스 타입을 사용합니다.
2. SAP HANA Pacemaker 이중화 관련 RA 구성 방법
2.1 사전 조건
① SAP HANA DB 호스트 2대가 SUSE Linux Enterprise Server for SAP Application 운영체제로 구성되어 있어야 함
※ SAP HANA 설치 방법 (hdblcm 커맨드 사용) 포스팅 참고
※ 동일한 SID로 구성되어야 함
② SAP HANA DB Replication 구성되어 있어야 함
※ SAP HANA System Replication 설정 포스팅 참고
③ Pacemaker 이중화 구성되어 있어야 함
※ Linux Pacemaker Cluster 구성 포스팅 참고
④ 아래 패키지가 설치되어 있어야 함
zypper install -t pattern ha_sles
zypper install SAPHanaSR SAPHanaSR-doc
2.2 Pacemaker Resource 구성 방법
모든 노드에 대해 유지보수 모드 (Maintenance Mode)로 변경
saphanadb01:~ crm configure property maintenance-mode=true
SAPHanaTopology 리소스 에이전트 구성
saphanadb01:~ crm configure primitive rsc_SAPHanaTopology_H00_HDB00 ocf:suse:SAPHanaTopology \
operations \$id="rsc_H00_HDB00-operations" \
op monitor interval="10" timeout="600" \
op start interval="0" timeout="600" \
op stop interval="0" timeout="300" \
params SID="H00" InstanceNumber="00"
SAPHanaTopology 리소스 에이전트를 Clone 리소스로 구성하여 각 노드에서 모두 기동되도록 사용
saphanadb01:~ crm configure clone cln_SAPHanaTopology_H00_HDB00 rsc_SAPHanaTopology_H00_HDB00 \
meta is-managed="true" clone-node-max="1" target-role="Started" interleave="true"
SAPHana 리소스 에이전트 구성
saphanadb01:~ crm configure primitive rsc_SAPHana_H00_HDB00 ocf:suse:SAPHana \
operations \$id="rsc_saphana_H00_HDB00-operations" \
op start interval="0" timeout="3600" \
op stop interval="0" timeout="3600" \
op promote interval="0" timeout="3600" \
op monitor interval="60" role="Master" timeout="700" \
op monitor interval="61" role="Slave" timeout="700" \
params SID="H00" InstanceNumber="00" PREFER_SITE_TAKEOVER="true" \
DUPLICATE_PRIMARY_TIMEOUT="7200" AUTOMATED_REGISTER="false"
SAPHana 리소스 에이전트를 Multi State 리소스로 구성하여 2개의 노드 중 하나는 Master Role을, 하나는 Slave Role을 가지도록 구성
saphanadb01:~ crm configure ms msl_SAPHana_H00_HDB00 rsc_SAPHana_H00_HDB00 \
meta is-managed="true" notify="true" clone-max="2" clone-node-max="1" \
target-role="Started" interleave="true"
클러스터에서 사용하는 Virtual IP가 없다면 생성
saphanadb01:~ crm configure primitive rsc_ip_H00_HDB00 ocf:heartbeat:IPaddr2 \
meta target-role="Started" is-managed="true" \
operations \$id="rsc_ip_H00_HDB00-operations" \
op monitor interval="10s" timeout="20s" \
params ip="192.168.45.140"
각 리소스 에이전트들 간에 시작 순서 설정 (SAPHanaTopology RA가 시작된 후 SAPHana RA 시작)
saphanadb01:~ crm configure order ord_SAPHana_H00_HDB00 Optional: cln_SAPHanaTopology_H00_HDB00 \
msl_SAPHana_H00_HDB00
SAPHana 리소스 에이전트 상태 초기화
saphanadb01:~ crm resource cleanup rsc_SAPHana_H00_HDB00
위에서 설정했던 유지보수 모드(Maintenance Mode) 해제
saphanadb01:~ crm configure property maintenance-mode=false
Pacemaker 기본 설정값 변경 (노드가 죽었다 다시 살아나도 리소스 에이전트 소유권이 다시 넘어가지 않도록 설정)
saphanadb01:~ crm configure rsc_defaults resource-stickiness=1000
Pacemaker 기본 설정값 변경 (노드 헬스 체크 실패가 몇 번 일어나야 Migration 동작할 지 설정)
saphanadb01:~ crm configure rsc_defaults migration-threshold=5000
※ SAPHana 리소스의 상태가 제대로 동작하지 않는 이슈가 있어서 노드2(saphanadb02) 호스트를 재부팅했더니 이슈 해결됨
참고자료:
https://docs.microsoft.com/ko-kr/azure/virtual-machines/workloads/sap/sap-hana-high-availability