Azure의 SUSE Linux Enterprise Server에서 Pacemaker 설정

이 문서에서는 Azure의 SLES(SUSE Linux Enterprise Server)에서 Pacemaker를 설정하는 방법에 대해 설명합니다.

개요

Azure에는 SLES용 Pacemaker 클러스터에서 펜싱을 설정하는 두 가지 옵션이 있습니다. Azure API를 통해 실패한 노드를 다시 시작하는 Azure 펜스 에이전트를 사용하거나 SBD 디바이스를 사용할 수 있습니다.

SBD 디바이스 사용

다음 두 옵션 중 하나를 사용하여 SBD 디바이스를 구성할 수 있습니다.

  • iSCSI 대상 서버가 있는 SBD:

    SBD 디바이스에는 iSCSI(Internet Small Computer System Interface) 대상 서버 역할을 하고 SBD 디바이스를 제공하는 추가 VM(가상 머신)이 하나 이상 필요합니다. 단, 이러한 iSCSI 대상 서버를 다른 Pacemaker 클러스터와 공유할 수 있습니다. SBD 디바이스를 사용할 때의 장점은 이미 온-프레미스에서 SBD 디바이스를 사용하고 있는 경우 Pacemaker 클러스터를 작동하는 방법을 변경할 필요가 없다는 것입니다.

    예를 들어, iSCSI 대상 서버의 OS 패치 동안 Pacemaker 클러스터에서 SBD 디바이스를 사용할 수 없게 하도록 하려면 최대 3개의 SBD 디바이스를 사용할 수 있습니다. Pacemaker당 2개 이상의 SBD 디바이스를 사용하려는 경우 여러 iSCSI 대상 서버를 배포하고 각 iSCSI 대상 서버에서 하나의 SBD를 연결해야 합니다. SBD 디바이스를 1개 또는 3개 사용하는 것이 좋습니다. 두 개의 SBD 디바이스만 구성되어 있고 그중 하나를 사용할 수 없는 경우 Pacemaker는 클러스터 노드를 자동으로 차단할 수 없습니다. 하나의 iSCSI 대상 서버가 다운되었을 때 방어하려면 3개의 SBD 디바이스, 즉 3개의 iSCSI 대상 서버를 사용해야 합니다. SBD를 사용할 때 가장 탄력적인 구성입니다.

    SLES 개요의 Pacemaker 다이어그램

    Important

    Linux Pacemaker 클러스터 노드 및 SBD 디바이스를 계획하고 배포하는 경우 가상 머신과 SBD 디바이스를 호스팅하는 VM 간의 라우팅이 NVA(네트워크 가상 어플라이언스)와 같은 다른 디바이스를 통과하도록 허용하지 않습니다.

    NVA의 유지 관리 이벤트 및 기타 문제는 전체 클러스터 구성의 안정성에 부정적인 영향을 미칠 수 있습니다. 자세한 내용은 사용자 정의 라우팅 규칙을 참조하세요.

  • Azure 공유 디스크가 있는 SBD:

    SBD 디바이스를 구성하려면 Pacemaker 클러스터의 일부인 모든 가상 머신에 하나 이상의 Azure 공유 디스크를 연결해야 합니다. Azure 공유 디스크를 사용하는 SBD 디바이스의 장점은 추가 가상 머신을 배포할 필요가 없다는 것입니다.

    SLES Pacemaker 클러스터용 Azure 공유 디스크 SBD 디바이스의 다이어그램.

    다음은 Azure 공유 디스크를 사용할 때 SBD 디바이스에 대한 몇 가지 중요한 고려 사항입니다.

    • 프리미엄 SSD가 있는 Azure 공유 디스크는 SBD 디바이스로 지원됩니다.
    • Azure 공유 디스크를 사용하는 SBD 디바이스는 SLES 고가용성 15 SP01 이상에서 지원됩니다.
    • Azure 프리미엄 공유 디스크를 사용하는 SBD 디바이스는 LRS(로컬 중복 스토리지)ZRS(영역 중복 스토리지)에서 지원됩니다.
    • 배포 유형에 따라 Azure 공유 디스크에 대한 적절한 중복 스토리지를 SBD 디바이스로 선택합니다.
    • Azure 프리미엄 공유 디스크(skuName - Premium_LRS)용 LRS를 사용하는 SBD 디바이스는 가용성 집합의 배포에서만 지원됩니다.
    • Azure 프리미엄 공유 디스크(skuName - Premium_ZRS)에 ZRS를 사용하는 SBD 디바이스는 가용성 영역에 배포하는 것이 좋습니다.
    • 관리 디스크용 ZRS는 현재 가용성 영역이 있는 모든 지역에서 사용할 수 없습니다. 자세한 내용은 관리 디스크의 중복 옵션에서 ZRS "제한 사항" 섹션을 검토합니다.
    • SBD 디바이스에 사용하는 Azure 공유 디스크는 클 필요가 없습니다. maxShares 값은 공유 디스크를 사용할 수 있는 클러스터 노드 수를 결정합니다. 예를 들어 SAP ASCS/ERS 또는 SAP HANA 수직 스케일 업과 같은 2노드 클러스터의 SBD 디바이스에 대해 P1 또는 P2 디스크 크기를 사용할 수 있습니다.
    • HANA HSR(시스템 복제) 및 Pacemaker를 사용한 HANA 스케일 아웃의 경우 현재 maxShares 제한으로 인해 복제 사이트당 최대 4개의 노드가 있는 클러스터의 SBD 디바이스에 Azure 공유 디스크를 사용할 수 있습니다.
    • Pacemaker 클러스터에 Azure 공유 디스크 SBD 디바이스를 연결하는 것은 권장하지 않습니다.
    • 여러 Azure 공유 디스크 SBD 디바이스를 사용하는 경우 VM에 연결할 수 있는 최대 데이터 디스크 수 제한을 확인합니다.
    • Azure 공유 디스크의 제한 사항에 대한 자세한 내용은 Azure 공유 디스크 설명서의 "제한 사항" 섹션을 주의 깊게 검토합니다.

Azure 펜스 에이전트 사용

Azure 펜스 에이전트를 사용하여 펜싱을 설정할 수 있습니다. Azure 펜스 에이전트에는 Azure API를 통해 실패한 노드 다시 시작을 관리하는 클러스터 VM 또는 서비스 주체에 대한 관리 ID가 필요합니다. Azure 펜스 에이전트에는 추가 가상 머신 배포가 필요하지 않습니다.

iSCSI 대상 서버가 있는 SBD

보호용 iSCSI 대상 서버를 사용하는 SBD 디바이스를 사용하려면 다음 섹션의 지침을 따릅니다.

iSCSI 대상 서버 설정

먼저 iSCSI 대상 가상 머신을 만들어야 합니다. 여러 Pacemaker 클러스터와 iSCSI 대상 서버를 공유할 수 있습니다.

  1. 새 SLES 12 SP3 이상의 가상 머신을 배포하고 SSH를 통해 머신에 연결합니다. 컴퓨터가 클 필요는 없습니다. 가상 머신 크기 Standard_E2s_v3 또는 Standard_D2s_v3이면 충분합니다. 반드시 OS 디스크용 프리미엄 스토리지를 사용합니다.

  2. iSCSI 대상 가상 머신에서 다음 명령을 실행합니다.

    a. SLES를 업데이트합니다.

    sudo zypper update
    

    참고 항목

    OS를 업그레이드 또는 업데이트한 후 OS를 다시 부팅해야 할 수도 있습니다.

    b. 패키지를 제거합니다.

    targetcli 및 SLES 12 SP3의 알려진 문제를 방지하려면 다음 패키지를 제거합니다. 찾을 수 없는 패키지에 대한 오류는 무시할 수 있습니다.

    sudo zypper remove lio-utils python-rtslib python-configshell targetcli
    

    c. iSCSI 대상 패키지를 설치합니다.

    sudo zypper install targetcli-fb dbus-1-python
    

    d. iSCSI 대상 서비스를 사용하도록 설정합니다.

    sudo systemctl enable targetcli
    sudo systemctl start targetcli
    

iSCSI 대상 서버에 iSCSI 디바이스 만들기

SAP 컴퓨터에서 사용할 클러스터용 iSCSI 디스크를 만들려면 모든 iSCSI 대상 가상 머신에서 다음 명령을 실행합니다. 이 예에서는 여러 클러스터에 대한 SBD 디바이스가 만들어집니다. 여러 클러스터에 하나의 iSCSI 대상 서버를 사용하는 방법을 보여 줍니다. SBD 디바이스는 OS 디스크에 배치됩니다. 충분한 공간이 있는지 확인합니다.

  • nfs: NFS 클러스터를 식별합니다.
  • ascsnw1: NW1의 ASCS 클러스터를 식별합니다.
  • dbnw1: NW1의 데이터베이스 클러스터를 식별합니다.
  • nfs-0nfs-1: NFS 클러스터 노드의 호스트 이름입니다.
  • nw1-xscs-0nw1-xscs-1: NW1 ASCS 클러스터 노드의 호스트 이름입니다.
  • nw1-db-0nw1-db-1: 데이터베이스 클러스터 노드의 호스트 이름입니다.

다음 지침에서 클러스터 노드의 호스트 이름과 SAP 시스템의 SID를 조정합니다.

  1. 모든 SBD 디바이스에 대한 루트 폴더를 만듭니다.

    sudo mkdir /sbd
    
  2. NFS 서버용 SBD 디바이스를 만듭니다.

    sudo targetcli backstores/fileio create sbdnfs /sbd/sbdnfs 50M write_back=false
    sudo targetcli iscsi/ create iqn.2006-04.nfs.local:nfs
    sudo targetcli iscsi/iqn.2006-04.nfs.local:nfs/tpg1/luns/ create /backstores/fileio/sbdnfs
    sudo targetcli iscsi/iqn.2006-04.nfs.local:nfs/tpg1/acls/ create iqn.2006-04.nfs-0.local:nfs-0
    sudo targetcli iscsi/iqn.2006-04.nfs.local:nfs/tpg1/acls/ create iqn.2006-04.nfs-1.local:nfs-1
    
  3. SAP System NW1의 ASCS 서버용 SBD 디바이스를 만듭니다.

    sudo targetcli backstores/fileio create sbdascsnw1 /sbd/sbdascsnw1 50M write_back=false
    sudo targetcli iscsi/ create iqn.2006-04.ascsnw1.local:ascsnw1
    sudo targetcli iscsi/iqn.2006-04.ascsnw1.local:ascsnw1/tpg1/luns/ create /backstores/fileio/sbdascsnw1
    sudo targetcli iscsi/iqn.2006-04.ascsnw1.local:ascsnw1/tpg1/acls/ create iqn.2006-04.nw1-xscs-0.local:nw1-xscs-0
    sudo targetcli iscsi/iqn.2006-04.ascsnw1.local:ascsnw1/tpg1/acls/ create iqn.2006-04.nw1-xscs-1.local:nw1-xscs-1
    
  4. SAP System NW1의 데이터베이스 클러스터에 대한 SBD 디바이스를 만듭니다.

    sudo targetcli backstores/fileio create sbddbnw1 /sbd/sbddbnw1 50M write_back=false
    sudo targetcli iscsi/ create iqn.2006-04.dbnw1.local:dbnw1
    sudo targetcli iscsi/iqn.2006-04.dbnw1.local:dbnw1/tpg1/luns/ create /backstores/fileio/sbddbnw1
    sudo targetcli iscsi/iqn.2006-04.dbnw1.local:dbnw1/tpg1/acls/ create iqn.2006-04.nw1-db-0.local:nw1-db-0
    sudo targetcli iscsi/iqn.2006-04.dbnw1.local:dbnw1/tpg1/acls/ create iqn.2006-04.nw1-db-1.local:nw1-db-1
    
  5. targetcli 변경 내용을 저장합니다.

    sudo targetcli saveconfig
    
  6. 모든 것이 올바르게 설정되었는지 확인합니다.

    sudo targetcli ls
    
    o- / .......................................................................................................... [...]
    o- backstores ............................................................................................... [...]
    | o- block ................................................................................... [Storage Objects: 0]
    | o- fileio .................................................................................. [Storage Objects: 3]
    | | o- sbdascsnw1 ................................................ [/sbd/sbdascsnw1 (50.0MiB) write-thru activated]
    | | | o- alua .................................................................................... [ALUA Groups: 1]
    | | |   o- default_tg_pt_gp ........................................................ [ALUA state: Active/optimized]
    | | o- sbddbnw1 .................................................... [/sbd/sbddbnw1 (50.0MiB) write-thru activated]
    | | | o- alua .................................................................................... [ALUA Groups: 1]
    | | |   o- default_tg_pt_gp ........................................................ [ALUA state: Active/optimized]
    | | o- sbdnfs ........................................................ [/sbd/sbdnfs (50.0MiB) write-thru activated]
    | |   o- alua .................................................................................... [ALUA Groups: 1]
    | |     o- default_tg_pt_gp ........................................................ [ALUA state: Active/optimized]
    | o- pscsi ................................................................................... [Storage Objects: 0]
    | o- ramdisk ................................................................................. [Storage Objects: 0]
    o- iscsi ............................................................................................. [Targets: 3]
    | o- iqn.2006-04.ascsnw1.local:ascsnw1 .................................................................. [TPGs: 1]
    | | o- tpg1 ................................................................................ [no-gen-acls, no-auth]
    | |   o- acls ........................................................................................... [ACLs: 2]
    | |   | o- iqn.2006-04.nw1-xscs-0.local:nw1-xscs-0 ............................................... [Mapped LUNs: 1]
    | |   | | o- mapped_lun0 ............................................................ [lun0 fileio/sbdascsnw1 (rw)]
    | |   | o- iqn.2006-04.nw1-xscs-1.local:nw1-xscs-1 ............................................... [Mapped LUNs: 1]
    | |   |   o- mapped_lun0 ............................................................ [lun0 fileio/sbdascsnw1 (rw)]
    | |   o- luns ........................................................................................... [LUNs: 1]
    | |   | o- lun0 .......................................... [fileio/sbdascsnw1 (/sbd/sbdascsnw1) (default_tg_pt_gp)]
    | |   o- portals ..................................................................................... [Portals: 1]
    | |     o- 0.0.0.0:3260 ...................................................................................... [OK]
    | o- iqn.2006-04.dbnw1.local:dbnw1 ...................................................................... [TPGs: 1]
    | | o- tpg1 ................................................................................ [no-gen-acls, no-auth]
    | |   o- acls ........................................................................................... [ACLs: 2]
    | |   | o- iqn.2006-04.nw1-db-0.local:nw1-db-0 ................................................... [Mapped LUNs: 1]
    | |   | | o- mapped_lun0 .............................................................. [lun0 fileio/sbddbnw1 (rw)]
    | |   | o- iqn.2006-04.nw1-db-1.local:nw1-db-1 ................................................... [Mapped LUNs: 1]
    | |   |   o- mapped_lun0 .............................................................. [lun0 fileio/sbddbnw1 (rw)]
    | |   o- luns ........................................................................................... [LUNs: 1]
    | |   | o- lun0 .............................................. [fileio/sbddbnw1 (/sbd/sbddbnw1) (default_tg_pt_gp)]
    | |   o- portals ..................................................................................... [Portals: 1]
    | |     o- 0.0.0.0:3260 ...................................................................................... [OK]
    | o- iqn.2006-04.nfs.local:nfs .......................................................................... [TPGs: 1]
    |   o- tpg1 ................................................................................ [no-gen-acls, no-auth]
    |     o- acls ........................................................................................... [ACLs: 2]
    |     | o- iqn.2006-04.nfs-0.local:nfs-0 ......................................................... [Mapped LUNs: 1]
    |     | | o- mapped_lun0 ................................................................ [lun0 fileio/sbdnfs (rw)]
    |     | o- iqn.2006-04.nfs-1.local:nfs-1 ......................................................... [Mapped LUNs: 1]
    |     |   o- mapped_lun0 ................................................................ [lun0 fileio/sbdnfs (rw)]
    |     o- luns ........................................................................................... [LUNs: 1]
    |     | o- lun0 .................................................. [fileio/sbdnfs (/sbd/sbdnfs) (default_tg_pt_gp)]
    |     o- portals ..................................................................................... [Portals: 1]
    |       o- 0.0.0.0:3260 ...................................................................................... [OK]
    o- loopback .......................................................................................... [Targets: 0]
    o- vhost ............................................................................................. [Targets: 0]
    o- xen-pvscsi ........................................................................................ [Targets: 0]
    

iSCSI 대상 서버 SBD 디바이스 설정

클러스터에서 마지막 단계에서 만든 iSCSI 디바이스에 연결합니다. 만들려는 새 클러스터의 노드에서 다음 명령을 실행합니다.

참고 항목

  • [A]: 모든 노드에 적용됩니다.
  • [1]: 노드 1에만 적용됩니다.
  • [2]: 노드 2에만 적용됩니다.
  1. [A] iSCSI 패키지를 설치합니다.

    sudo zypper install open-iscsi
    
  2. [A] iSCSI 디바이스에 연결합니다. 먼저 iSCSI 및 SBD 서비스를 사용하도록 설정합니다.

    sudo systemctl enable iscsid
    sudo systemctl enable iscsi
    sudo systemctl enable sbd
    
  3. [1] 첫 번째 노드에서 초기자 이름을 변경합니다.

    sudo vi /etc/iscsi/initiatorname.iscsi
    
  4. [1] iSCSI 대상 서버(예: NFS 서버용)에서 iSCSI 디바이스를 만들 때 사용한 ACL(액세스 제어 목록)과 일치하도록 파일 내용을 변경합니다.

    InitiatorName=iqn.2006-04.nfs-0.local:nfs-0
    
  5. [2] 두 번째 노드에서 초기자 이름을 변경합니다.

    sudo vi /etc/iscsi/initiatorname.iscsi
    
  6. [2] iSCSI 대상 서버에서 iSCSI 디바이스를 만들 때 사용한 ACL과 일치하도록 파일 내용을 변경합니다.

    InitiatorName=iqn.2006-04.nfs-1.local:nfs-1
    
  7. [A] 이제 iSCSI 서비스를 다시 시작하여 변경 내용을 적용합니다.

    sudo systemctl restart iscsid
    sudo systemctl restart iscsi
    
  8. [A] iSCSI 디바이스를 연결합니다. 다음 예에서 10.0.0.17은 iSCSI 대상 서버의 IP 주소이고 3260은 기본 포트입니다. iqn.2006-04.nfs.local:nfs는 첫 번째 명령인 iscsiadm -m discovery를 실행할 때 나열되는 대상 이름 중 하나입니다.

    sudo iscsiadm -m discovery --type=st --portal=10.0.0.17:3260   
    sudo iscsiadm -m node -T iqn.2006-04.nfs.local:nfs --login --portal=10.0.0.17:3260
    sudo iscsiadm -m node -p 10.0.0.17:3260 -T iqn.2006-04.nfs.local:nfs --op=update --name=node.startup --value=automatic
    
  9. [A] 여러 SBD 디바이스를 사용하려면 두 번째 iSCSI 대상 서버에도 연결합니다.

    sudo iscsiadm -m discovery --type=st --portal=10.0.0.18:3260   
    sudo iscsiadm -m node -T iqn.2006-04.nfs.local:nfs --login --portal=10.0.0.18:3260
    sudo iscsiadm -m node -p 10.0.0.18:3260 -T iqn.2006-04.nfs.local:nfs --op=update --name=node.startup --value=automatic
    
  10. [A] 여러 SBD 디바이스를 사용하려면 세 번째 iSCSI 대상 서버에도 연결합니다.

    sudo iscsiadm -m discovery --type=st --portal=10.0.0.19:3260   
    sudo iscsiadm -m node -T iqn.2006-04.nfs.local:nfs --login --portal=10.0.0.19:3260
    sudo iscsiadm -m node -p 10.0.0.19:3260 -T iqn.2006-04.nfs.local:nfs --op=update --name=node.startup --value=automatic
    
  11. [A] iSCSI 디바이스를 사용할 수 있는지 확인하고 디바이스 이름(다음 예에서는 /dev/sde)을 기록해 둡니다.

    lsscsi
    
    # [2:0:0:0]    disk    Msft     Virtual Disk     1.0   /dev/sda
    # [3:0:1:0]    disk    Msft     Virtual Disk     1.0   /dev/sdb
    # [5:0:0:0]    disk    Msft     Virtual Disk     1.0   /dev/sdc
    # [5:0:0:1]    disk    Msft     Virtual Disk     1.0   /dev/sdd
    # [6:0:0:0]    disk    LIO-ORG  sbdnfs           4.0   /dev/sdd
    # [7:0:0:0]    disk    LIO-ORG  sbdnfs           4.0   /dev/sde
    # [8:0:0:0]    disk    LIO-ORG  sbdnfs           4.0   /dev/sdf
    
  12. [A] iSCSI 디바이스의 ID를 검색합니다.

    ls -l /dev/disk/by-id/scsi-* | grep sdd
    
    # lrwxrwxrwx 1 root root  9 Aug  9 13:20 /dev/disk/by-id/scsi-1LIO-ORG_sbdnfs:afb0ba8d-3a3c-413b-8cc2-cca03e63ef42 -> ../../sdd
    # lrwxrwxrwx 1 root root  9 Aug  9 13:20 /dev/disk/by-id/scsi-36001405afb0ba8d3a3c413b8cc2cca03 -> ../../sdd
    # lrwxrwxrwx 1 root root  9 Aug  9 13:20 /dev/disk/by-id/scsi-SLIO-ORG_sbdnfs_afb0ba8d-3a3c-413b-8cc2-cca03e63ef42 -> ../../sdd
    
    ls -l /dev/disk/by-id/scsi-* | grep sde
    
    # lrwxrwxrwx 1 root root  9 Feb  7 12:39 /dev/disk/by-id/scsi-1LIO-ORG_cl1:3fe4da37-1a5a-4bb6-9a41-9a4df57770e4 -> ../../sde
    # lrwxrwxrwx 1 root root  9 Feb  7 12:39 /dev/disk/by-id/scsi-360014053fe4da371a5a4bb69a419a4df -> ../../sde
    # lrwxrwxrwx 1 root root  9 Feb  7 12:39 /dev/disk/by-id/scsi-SLIO-ORG_cl1_3fe4da37-1a5a-4bb6-9a41-9a4df57770e4 -> ../../sde
    
    ls -l /dev/disk/by-id/scsi-* | grep sdf
    
    # lrwxrwxrwx 1 root root  9 Aug  9 13:32 /dev/disk/by-id/scsi-1LIO-ORG_sbdnfs:f88f30e7-c968-4678-bc87-fe7bfcbdb625 -> ../../sdf
    # lrwxrwxrwx 1 root root  9 Aug  9 13:32 /dev/disk/by-id/scsi-36001405f88f30e7c9684678bc87fe7bf -> ../../sdf
    # lrwxrwxrwx 1 root root  9 Aug  9 13:32 /dev/disk/by-id/scsi-SLIO-ORG_sbdnfs_f88f30e7-c968-4678-bc87-fe7bfcbdb625 -> ../../sdf
    

    이 명령은 모든 SBD 디바이스에 대해 세 개의 디바이스 ID를 나열합니다. scsi-3으로 시작하는 ID를 사용하는 것이 좋습니다. 앞의 예에서 ID는 다음과 같습니다.

    • /dev/disk/by-id/scsi-36001405afb0ba8d3a3c413b8cc2cca03
    • /dev/disk/by-id/scsi-360014053fe4da371a5a4bb69a419a4df
    • /dev/disk/by-id/scsi-36001405f88f30e7c9684678bc87fe7bf
  13. [1] SBD 디바이스 만들기

    a. iSCSI 디바이스의 디바이스 ID를 사용하여 첫 번째 클러스터 노드에 새 SBD 디바이스를 만듭니다.

    sudo sbd -d /dev/disk/by-id/scsi-36001405afb0ba8d3a3c413b8cc2cca03 -1 60 -4 120 create
    

    b. 또한 두 개 이상을 사용하려면 두 번째 및 세 번째 SBD 디바이스를 만듭니다.

    sudo sbd -d /dev/disk/by-id/scsi-360014053fe4da371a5a4bb69a419a4df -1 60 -4 120 create
    sudo sbd -d /dev/disk/by-id/scsi-36001405f88f30e7c9684678bc87fe7bf -1 60 -4 120 create
    
  14. [A] SBD 구성을 조정합니다.

    a. SBD 구성 파일을 엽니다.

    sudo vi /etc/sysconfig/sbd
    

    b. SBD 디바이스의 속성을 변경하고, Pacemaker 통합을 활성화하고, SBD의 시작 모드를 변경합니다.

    [...]
    SBD_DEVICE="/dev/disk/by-id/scsi-36001405afb0ba8d3a3c413b8cc2cca03;/dev/disk/by-id/scsi-360014053fe4da371a5a4bb69a419a4df;/dev/disk/by-id/scsi-36001405f88f30e7c9684678bc87fe7bf"
    [...]
    SBD_PACEMAKER="yes"
    [...]
    SBD_STARTMODE="always"
    [...]
    

    참고 항목

    SBD_DELAY_START 속성 값이 "no"로 설정된 경우 값을 "yes"로 변경합니다. 또한 SBD 서비스 파일을 확인하여 TimeoutStartSec 값이 SBD_DELAY_START 값보다 큰지 확인해야 합니다. 자세한 내용은 SBD 파일 구성을 참조하세요.

  15. [A]softdog 구성 파일을 만듭니다.

    echo softdog | sudo tee /etc/modules-load.d/softdog.conf
    
  16. [A] 모듈을 로드합니다.

    sudo modprobe -v softdog
    

Azure 공유 디스크가 있는 SBD

이 섹션은 Azure 공유 디스크와 함께 SBD 디바이스를 사용하려는 경우에만 적용됩니다.

PowerShell을 사용하여 Azure 공유 디스크 만들기 및 연결

  1. 리소스 그룹, Azure 지역, 가상 머신, LUN(논리적 단위 번호) 등에 대한 값을 조정합니다.

    $ResourceGroup = "MyResourceGroup"
    $Location = "MyAzureRegion"
    
  2. 프리미엄 SSD에 사용 가능한 디스크 크기를 기반으로 디스크 크기를 정의합니다. 이 예에서는 4G의 P1 디스크 크기가 언급됩니다.

    $DiskSizeInGB = 4
    $DiskName = "SBD-disk1"
    
  3. -MaxSharesCount 매개 변수를 사용하여 SBD 디바이스에 대한 공유 디스크를 연결할 최대 클러스터 노드 수를 정의합니다.

    $ShareNodes = 2
    
  4. Azure 프리미엄 공유 디스크에 LRS를 사용하는 SBD 디바이스의 경우 다음 스토리지 SkuName을 사용합니다.

    $SkuName = "Premium_LRS"
    
  5. Azure 프리미엄 공유 디스크에 ZRS를 사용하는 SBD 디바이스의 경우 다음 스토리지 SkuName을 사용합니다.

    $SkuName = "Premium_ZRS"
    
  6. Azure 공유 디스크를 설정합니다.

    $diskConfig = New-AzDiskConfig -Location $Location -SkuName $SkuName -CreateOption Empty -DiskSizeGB $DiskSizeInGB -MaxSharesCount $ShareNodes
    $dataDisk = New-AzDisk -ResourceGroupName $ResourceGroup -DiskName $DiskName -Disk $diskConfig
    
  7. 디스크를 클러스터 VM에 연결합니다.

    $VM1 = "prod-cl1-0"
    $VM2 = "prod-cl1-1"
    

    a. Azure 공유 디스크를 클러스터 노드 1에 추가합니다.

    $vm = Get-AzVM -ResourceGroupName $ResourceGroup -Name $VM1
    $vm = Add-AzVMDataDisk -VM $vm -Name $DiskName -CreateOption Attach -ManagedDiskId $dataDisk.Id -Lun 0
    Update-AzVm -VM $vm -ResourceGroupName $ResourceGroup -Verbose
    

    b. Azure 공유 디스크를 클러스터 노드 2에 추가합니다.

    $vm = Get-AzVM -ResourceGroupName $ResourceGroup -Name $VM2
    $vm = Add-AzVMDataDisk -VM $vm -Name $DiskName -CreateOption Attach -ManagedDiskId $dataDisk.Id -Lun 0
    Update-AzVm -VM $vm -ResourceGroupName $ResourceGroup -Verbose
    

Azure CLI 또는 Azure Portal을 사용하여 리소스를 배포하려는 경우 ZRS 디스크 배포를 참조할 수도 있습니다.

Azure 공유 디스크 SBD 디바이스 설정

  1. [A] SBD 서비스를 사용하도록 설정합니다.

    sudo systemctl enable sbd
    
  2. [A] 연결된 디스크를 사용할 수 있는지 확인합니다.

    # lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    fd0      2:0    1    4K  0 disk
    sda      8:0    0   30G  0 disk
    ├─sda1   8:1    0    2M  0 part
    ├─sda2   8:2    0  512M  0 part /boot/efi
    ├─sda3   8:3    0    1G  0 part /boot
    ├─sda4   8:4    0 28.5G  0 part /
    sdb      8:16   0  256G  0 disk
    ├─sdb1   8:17   0  256G  0 part /mnt
    sdc      8:32   0    4G  0 disk
    sr0     11:0    1 1024M  0 rom
    
    # lsscsi
    [1:0:0:0]    cd/dvd  Msft     Virtual CD/ROM   1.0   /dev/sr0
    [2:0:0:0]    disk    Msft     Virtual Disk     1.0   /dev/sda
    [3:0:1:0]    disk    Msft     Virtual Disk     1.0   /dev/sdb
    [5:0:0:0]    disk    Msft     Virtual Disk     1.0   /dev/sdc
    
  3. [A] 연결된 디스크의 ID를 검색합니다.

    # ls -l /dev/disk/by-id/scsi-* | grep sdc
    lrwxrwxrwx 1 root root  9 Nov  8 16:55 /dev/disk/by-id/scsi-14d534654202020204208a67da80744439b513b2a9728af19 -> ../../sdc
    lrwxrwxrwx 1 root root  9 Nov  8 16:55 /dev/disk/by-id/scsi-3600224804208a67da8073b2a9728af19 -> ../../sdc
    

    명령은 SBD 디바이스의 디바이스 ID를 나열합니다. scsi-3으로 시작하는 ID를 사용하는 것이 좋습니다. 앞의 예에서 ID는 /dev/disk/by-id/scsi-3600224804208a67da8073b2a9728af19입니다.

  4. [1] SBD 디바이스 만들기

    2단계의 디바이스 ID를 사용하여 첫 번째 클러스터 노드에 새 SBD 디바이스를 만듭니다.

    # sudo sbd -d /dev/disk/by-id/scsi-3600224804208a67da8073b2a9728af19 -1 60 -4 120 create
    
  5. [A] SBD 구성을 조정합니다.

    a. SBD 구성 파일을 엽니다.

    sudo vi /etc/sysconfig/sbd
    

    b. SBD 디바이스의 속성을 변경하고, Pacemaker 통합을 사용하도록 설정하고, SBD 디바이스의 시작 모드를 변경합니다.

    [...]
    SBD_DEVICE="/dev/disk/by-id/scsi-3600224804208a67da8073b2a9728af19"
    [...]
    SBD_PACEMAKER="yes"
    [...]
    SBD_STARTMODE="always"
    [...]
    

    참고 항목

    SBD_DELAY_START 속성 값이 "no"로 설정된 경우 값을 "yes"로 변경합니다. 또한 SBD 서비스 파일을 확인하여 TimeoutStartSec 값이 SBD_DELAY_START 값보다 큰지 확인해야 합니다. 자세한 내용은 SBD 파일 구성을 참조하세요.

  6. softdog 구성 파일을 만듭니다.

    echo softdog | sudo tee /etc/modules-load.d/softdog.conf
    
  7. 모듈을 로드합니다.

    sudo modprobe -v softdog
    

Azure 펜스 에이전트 사용

이 섹션은 Azure 펜스 에이전트와 함께 펜싱 디바이스를 사용하려는 경우에만 적용됩니다.

Azure 펜스 에이전트 디바이스 만들기

이 섹션은 Azure 펜스 에이전트를 기반으로 하는 펜싱 디바이스를 사용하는 경우에만 적용됩니다. 펜싱 디바이스는 관리 ID 또는 서비스 주체를 사용하여 Microsoft Azure에 대해 권한을 부여합니다.

관리 ID(MSI)를 만들려면 클러스터의 각 VM에 대해 시스템 할당 관리 ID를 만듭니다. 시스템 할당 관리 ID가 이미 있는 경우, 그것이 사용됩니다. 현재는 사용자 할당 관리 ID를 Pacemaker와 함께 사용하면 안 됩니다. 관리 ID에 기반을 둔 Azure 펜스 에이전트는 SLES 12 SP5 및 SLES 15 SP1 이상에서 지원됩니다.

[1] 펜스 에이전트에 대한 사용자 지정 역할 만들기

기본적으로 관리 ID와 서비스 주체 모두 Azure 리소스에 액세스할 수 있는 권한이 없습니다. 관리 ID 또는 서비스 주체에 클러스터의 모든 가상 머신을 시작 및 중지(할당 취소)할 수 있는 권한을 제공해야 합니다. 사용자 지정 역할을 아직 만들지 않았다면 PowerShell 또는 Azure CLI를 사용하여 만들 수 있습니다.

입력 파일에 다음 콘텐츠를 사용합니다. 콘텐츠를 구독에 맞게 조정해야 합니다. 즉, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxyyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy를 고유의 구독 ID로 바꿉니다. 구독이 하나만 있는 경우 AssignableScopes에서 두 번째 항목을 제거합니다.

{
      "Name": "Linux fence agent Role",
      "description": "Allows to power-off and start virtual machines",
      "assignableScopes": [
              "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
              "/subscriptions/yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
      ],
      "actions": [
              "Microsoft.Compute/*/read",
              "Microsoft.Compute/virtualMachines/powerOff/action",
              "Microsoft.Compute/virtualMachines/start/action"
      ],
      "notActions": [],
      "dataActions": [],
      "notDataActions": []
}

[A] 사용자 지정 역할 할당

관리 ID 또는 서비스 주체를 사용합니다.

클러스터 VM의 각 관리 ID에 마지막 장에서 만든 사용자 지정 역할 "Linux 펜스 에이전트 역할"을 할당합니다. 각 VM 시스템 할당 관리 ID에는 모든 클러스터 VM의 리소스에 할당된 역할이 필요합니다. 자세한 단계는 Azure Portal을 사용하여 리소스에 대한 관리 ID 액세스 할당을 참조하세요. 각 VM의 관리 ID 역할 할당에 모든 클러스터 VM이 포함되어 있는지 확인합니다.

Important

관리 ID를 사용한 승인의 할당 및 제거는 유효할 때까지 지연될 수 있습니다.

클러스터 설치

참고 항목

  • [A]: 모든 노드에 적용됩니다.
  • [1]: 노드 1에만 적용됩니다.
  • [2]: 노드 2에만 적용됩니다.
  1. [A] SLES를 업데이트합니다.

    sudo zypper update
    

    참고 항목

    SLES 15 SP4에서 crmshpacemaker 패키지의 버전을 확인하고 최소 버전 요구 사항이 충족되는지 확인합니다.

    • crmsh-4.4.0+20221028.3e41444-150400.3.9.1 이상
    • pacemaker-2.1.2+20211124.ada5c3b36-150400.4.6.1 이상
  2. [A] 클러스터 리소스에 필요한 구성 요소를 설치합니다.

    sudo zypper in socat
    
  3. [A] 클러스터 리소스에 필요한 azure-lb 구성 요소를 설치합니다.

    sudo zypper in resource-agents
    

    참고 항목

    resource-agents 패키지 버전을 확인하고 최소 버전 요구 사항이 충족되는지 확인합니다.

    • SLES 12 SP4/SP5: 버전은 resource-agents-4.3.018.a7fb5035-3.30.1 이상이어야 합니다.
    • SLES 15/15 SP1: 버전은 resource-agents-4.3.0184.6ee15eb2-4.13.1 이상이어야 합니다.
  4. [A] 운영 체제를 구성합니다.

    a. Pacemaker는 경우에 따라 허용된 수를 모두 사용할 수 있는 많은 프로세스를 만듭니다. 이 경우 클러스터 노드 간의 하트비트가 실패하고 리소스의 장애 조치(failover)가 발생할 수 있습니다. 다음 매개 변수를 설정하여 허용되는 최대 프로세스 수를 늘리는 것이 좋습니다.

    # Edit the configuration file
    sudo vi /etc/systemd/system.conf
    
    # Change the DefaultTasksMax
    #DefaultTasksMax=512
    DefaultTasksMax=4096
    
    # Activate this setting
    sudo systemctl daemon-reload
    
    # Test to ensure that the change was successful
    sudo systemctl --no-pager show | grep DefaultTasksMax
    

    b. 더티 캐시의 크기를 줄입니다. 자세한 내용은 큰 RAM이 있는 SLES 11/12 서버의 쓰기 성능 저하를 참조하세요.

    sudo vi /etc/sysctl.conf
    # Change/set the following settings
    vm.dirty_bytes = 629145600
    vm.dirty_background_bytes = 314572800
    

    c. 스왑 사용량을 줄이고 메모리를 선호하려면 vm.swapiness가 10으로 설정되어 있는지 확인합니다.

    sudo vi /etc/sysctl.conf
    # Change/set the following setting
    vm.swappiness = 10
    
  5. [A]cloud-netconfig-azure 패키지 버전을 확인합니다.

    zypper info cloud-netconfig-azure를 실행하여 설치된 cloud-netconfig-azure 패키지 버전을 확인합니다. 버전이 1.3 이전인 경우 cloud-netconfig-azure 패키지를 사용 가능한 최신 버전으로 업데이트하는 것이 좋습니다.

    사용자 환경의 버전이 1.3 이상인 경우 클라우드 네트워크 플러그 인에 의한 네트워크 인터페이스 관리를 더 이상 억제할 필요가 없습니다.

    cloud-netconfig-azure 버전이 1.3보다 낮은 경우에만 다음 코드와 같이 네트워크 인터페이스에 대한 구성 파일을 변경하여 클라우드 네트워크 플러그 인이 가상 IP 주소를 제거하지 못하도록 합니다(Pacemaker는 할당을 제어해야 합니다). 자세한 내용은 SUSE KB 7023633을 참조하세요.

    # Edit the configuration file
    sudo vi /etc/sysconfig/network/ifcfg-eth0 
    
    # Change CLOUD_NETCONFIG_MANAGE
    # CLOUD_NETCONFIG_MANAGE="yes"
    CLOUD_NETCONFIG_MANAGE="no"
    
  6. [1] ssh 액세스를 사용하도록 설정합니다.

    sudo ssh-keygen
    
    # Enter file in which to save the key (/root/.ssh/id_rsa), and then select Enter
    # Enter passphrase (empty for no passphrase), and then select Enter
    # Enter same passphrase again, and then select Enter
    
    # copy the public key
    sudo cat /root/.ssh/id_rsa.pub
    
  7. [2] ssh 액세스를 사용하도록 설정합니다.

    sudo ssh-keygen
    
    # Enter file in which to save the key (/root/.ssh/id_rsa), and then select Enter
    # Enter passphrase (empty for no passphrase), and then select Enter
    # Enter same passphrase again, and then select Enter
    
    # Insert the public key you copied in the last step into the authorized keys file on the second server
    sudo vi /root/.ssh/authorized_keys   
    
    # copy the public key
    sudo cat /root/.ssh/id_rsa.pub
    
  8. [1] ssh 액세스를 사용하도록 설정합니다.

    # insert the public key you copied in the last step into the authorized keys file on the first server
    sudo vi /root/.ssh/authorized_keys
    
  9. [A] 펜싱 디바이스를 사용하는 경우 Azure 펜스 에이전트를 기반으로 fence-agents 패키지를 설치합니다.

    sudo zypper install fence-agents
    

    Important

    클러스터 노드가 차단될 때 Azure 차단 에이전트로 더 빠른 장애 조치(failover) 시간의 이점을 가져오려면 설치된 버전의 fence-agents 패키지가 4.4.0 이상이어야 합니다. 이전 버전을 실행 중인 경우 패키지를 업데이트하는 것이 좋습니다.

    Important

    관리 ID를 사용하는 경우 펜스 에이전트 패키지의 설치된 버전은 다음이어야 합니다.

    • SLES 12 SP5: fence-agents 4.9.0+git.1624456340.8d746be9-3.35.2 이상
    • SLES 15 SP1 이상: fence-agents 4.5.2+git.1592573838.1eee0863 이상.

    이전 버전은 관리 ID 구성에서 제대로 작동하지 않습니다.

  10. [A] Azure Python SDK 및 Azure Identity Python 모듈을 설치합니다.

    SLES 12 SP4 또는 SLES 12 SP5에 Azure Python SDK를 설치합니다.

    # You might need to activate the public cloud extension first
    SUSEConnect -p sle-module-public-cloud/12/x86_64
    sudo zypper install python-azure-mgmt-compute
    sudo zypper install python-azure-identity
    

    SLES 15 이상에 Azure Python SDK를 설치합니다.

    # You might need to activate the public cloud extension first. In this example, the SUSEConnect command is for SLES 15 SP1
    SUSEConnect -p sle-module-public-cloud/15.1/x86_64
    sudo zypper install python3-azure-mgmt-compute
    sudo zypper install python3-azure-identity
    

    Important

    버전 및 이미지 형식에 따라 Azure Python SDK를 설치하기 전에 OS 릴리스에 대한 퍼블릭 클라우드 확장을 활성화해야 할 수 있습니다. SUSEConnect ---list-extensions를 실행하여 확장자를 확인할 수 있습니다. Azure 펜스 에이전트로 더 빠른 장애 조치(failover) 시간을 달성하려면:

    • SLES 12 SP4 또는 SLES 12 SP5에서 python-azure-mgmt-compute 패키지 버전 4.6.2 이상을 설치합니다.
    • python-azure-mgmt-compute 또는 python3-azure-mgmt-compute 패키지 버전이 17.0.0-6.7.1인 경우 SUSE KBA의 지침에 따라 fence-agents 버전을 업데이트하고 Python 모듈용 Azure Identity 클라이언트 라이브러리를 설치합니다.
  11. [A] 호스트 이름 확인을 설정합니다.

    DNS 서버를 사용하거나 모든 노드의 /etc/hosts 파일을 수정할 수 있습니다. 이 예에서는 /etc/hosts 파일 사용 방법을 보여줍니다.

    다음 명령에서 IP 주소와 호스트 이름을 바꿉니다.

    Important

    클러스터 구성에서 호스트 이름을 사용하는 경우 안정적인 호스트 이름 확인이 필수적입니다. 이름을 사용할 수 없고, 그로 인하여 클러스터 장애 조치(failover) 지연이 발생할 수 있는 경우, 클러스터 통신은 실패합니다.

    /etc/hosts를 사용하는 장점은 클러스터가 단일 실패 지점이 될 수 있는 DNS와 무관하다는 점입니다.

    sudo vi /etc/hosts
    

    /etc/hosts에 다음 줄을 삽입합니다. 사용자 환경에 맞게 IP 주소와 호스트 이름을 변경합니다.

    # IP address of the first cluster node
    10.0.0.6 prod-cl1-0
    # IP address of the second cluster node
    10.0.0.7 prod-cl1-1
    
  12. [1] 클러스터를 설치합니다.

    • 펜싱에 SBD 디바이스를 사용하는 경우(iSCSI 대상 서버 또는 Azure 공유 디스크용):

      sudo crm cluster init
      # ! NTP is not configured to start at system boot.
      # Do you want to continue anyway (y/n)? y
      # /root/.ssh/id_rsa already exists - overwrite (y/n)? n
      # Address for ring0 [10.0.0.6] Select Enter
      # Port for ring0 [5405] Select Enter
      # SBD is already configured to use /dev/disk/by-id/scsi-36001405639245768818458b930abdf69;/dev/disk/by-id/scsi-36001405afb0ba8d3a3c413b8cc2cca03;/dev/disk/by-id/scsi-36001405f88f30e7c9684678bc87fe7bf - overwrite (y/n)? n
      # Do you wish to configure an administration IP (y/n)? n
      
    • 펜싱에 SBD 디바이스를 사용하지 않는 경우:

      sudo crm cluster init
      # ! NTP is not configured to start at system boot.
      # Do you want to continue anyway (y/n)? y
      # /root/.ssh/id_rsa already exists - overwrite (y/n)? n
      # Address for ring0 [10.0.0.6] Select Enter
      # Port for ring0 [5405] Select Enter
      # Do you wish to use SBD (y/n)? n
      # WARNING: Not configuring SBD - STONITH will be disabled.
      # Do you wish to configure an administration IP (y/n)? n
      
  13. [2] 클러스터에 노드를 추가합니다.

    sudo crm cluster join
    # ! NTP is not configured to start at system boot.
    # Do you want to continue anyway (y/n)? y
    # IP address or hostname of existing node (for example, 192.168.1.1) []10.0.0.6
    # /root/.ssh/id_rsa already exists - overwrite (y/n)? n
    
  14. [A] hacluster 암호를 동일한 암호로 변경합니다.

    sudo passwd hacluster
    
  15. [A] corosync 설정을 조정합니다.

    sudo vi /etc/corosync/corosync.conf
    

    a. 파일에서 다음 섹션을 확인하고 값이 없거나 다른 경우 조정합니다. 메모리 보존 유지 관리를 허용하도록 토큰을 30000으로 변경해야 합니다. 자세한 내용은 Linux 또는 Windows용 "Azure의 가상 머신 유지 관리" 문서를 참조하세요.

    [...]
      token:          30000
      token_retransmits_before_loss_const: 10
      join:           60
      consensus:      36000
      max_messages:   20
    
      interface { 
         [...] 
      }
      transport:      udpu
    } 
    nodelist {
      node {
       ring0_addr:10.0.0.6
      }
      node {
       ring0_addr:10.0.0.7
      } 
    }
    logging {
      [...]
    }
    quorum {
         # Enable and configure quorum subsystem (default: off)
         # See also corosync.conf.5 and votequorum.5
         provider: corosync_votequorum
         expected_votes: 2
         two_node: 1
    }
    

    b. corosync 서비스를 다시 시작합니다.

    sudo service corosync restart
    

Pacemaker 클러스터에 펜싱 디바이스 만들기

  • 2노드 Pacemaker 클러스터 내에서 펜스 경합을 방지하려면 추가 "priority-fencing-delay" 클러스터 속성을 구성할 수 있습니다. 이 속성은 분할 브레인 시나리오가 발생할 때 총 리소스 우선 순위가 더 높은 노드를 펜싱하는 데 더 많은 지연을 발생합니다. 자세한 내용은 SUSE Linux Enterprise Server 고가용성 확장 관리 가이드를 참조하세요.
  • "priority-fencing-delay" 클러스터 속성 설정에 대한 지침은 각 SAP ASCS/ERS(ENSA2에만 해당) 및 SAP HANA 확장 고가용성 문서에서 찾을 수 있습니다.
  1. [1] SBD 디바이스(iSCSI 대상 서버 또는 Azure 공유 디스크)를 펜싱 디바이스로 사용하는 경우 다음 명령을 실행합니다. 펜싱 디바이스를 사용하도록 설정하고 펜스 지연을 설정합니다.

    sudo crm configure property stonith-timeout=144
    sudo crm configure property stonith-enabled=true
    
    # List the resources to find the name of the SBD device
    sudo crm resource list
    sudo crm resource stop stonith-sbd
    sudo crm configure delete stonith-sbd
    sudo crm configure primitive stonith-sbd stonith:external/sbd \
       params pcmk_delay_max="15" \
       op monitor interval="600" timeout="15"
    
  2. [1] 펜싱에 Azure 펜스 에이전트를 사용하는 경우 다음 명령을 실행합니다. 두 클러스터 노드에 역할을 할당한 후 클러스터에서 펜싱 디바이스를 구성할 수 있습니다.

    sudo crm configure property stonith-enabled=true
    sudo crm configure property concurrent-fencing=true
    

    참고 항목

    'pcmk_host_map' 옵션은 호스트 이름과 Azure VM 이름이 동일하지 않은 경우에만 명령에 필요합니다. hostname:vm-name 형식으로 매핑을 지정합니다.

# Adjust the command with your subscription ID and resource group of the VM

sudo crm configure primitive rsc_st_azure stonith:fence_azure_arm \
params msi=true subscriptionId="subscription ID" resourceGroup="resource group" \
pcmk_monitor_retries=4 pcmk_action_limit=3 power_timeout=240 pcmk_reboot_timeout=900 pcmk_delay_max=15 pcmk_host_map="prod-cl1-0:prod-cl1-0-vm-name;prod-cl1-1:prod-cl1-1-vm-name" \
op monitor interval=3600 timeout=120

sudo crm configure property stonith-timeout=900

서비스 주체 구성에 따라 펜싱 디바이스를 사용하는 경우 Azure 펜싱을 사용하여 Pacemaker 클러스터용 SPN에서 MSI로 변경을 읽고 관리 ID 구성으로 변환하는 방법을 알아봅니다.

Important

모니터링 및 펜싱 작업이 역직렬화됩니다. 결과적으로 더 오래 실행되는 모니터링 작업과 동시 펜싱 이벤트가 있는 경우 모니터링 작업이 이미 실행 중이므로 클러스터 장애 조치(failover)에 지연이 없습니다.

Azure 펜스 에이전트는 표준 ILB를 사용하는 VM에 대한 공용 엔드포인트 연결에 가능한 솔루션과 함께 공용 엔드포인트에 대한 아웃바운드 연결이 필요합니다.

Azure 예약된 이벤트에 대해 Pacemaker 구성

Azure는 예약된 이벤트를 제공합니다. 예약된 이벤트는 메타데이터 서비스를 통해 제공되며 애플리케이션이 해당 이벤트를 준비할 시간을 허용합니다. 리소스 에이전트 azure-events는 예약된 Azure 이벤트를 모니터합니다. 이벤트가 검색되고 리소스 에이전트가 다른 클러스터 노드를 사용할 수 있다고 판단하면 클러스터 상태 특성을 설정합니다. 노드에 대해 클러스터 상태 특성이 설정되면 위치 제약 조건이 트리거되고 이름이 "health-"로 시작되지 않는 모든 리소스가 예약된 이벤트를 사용하여 노드에서 멀리 마이그레이션됩니다. 영향을 받는 클러스터 노드에서 실행 중인 클러스터 리소스가 없어지면 예약된 이벤트가 승인되고 다시 시작과 같은 작업을 실행할 수 있습니다.

Important

이전에 이 문서에서는 azure-events 리소스 에이전트의 사용을 설명했습니다. 새 리소스 에이전트 azure-events-az는 다양한 가용성 영역에 배포된 Azure 환경을 완전히 지원합니다. Pacemaker를 사용하여 모든 SAP 고가용성 시스템에 대해 최신 azure-events-az 에이전트를 활용하는 것이 좋습니다.

  1. [A] azure-events 에이전트에 대한 패키지가 이미 설치되어 있고 최신인지 확인합니다.

    sudo zypper info resource-agents
    

    필요한 최소 버전:

    • SLES 12 SP5: resource-agents-4.3.018.a7fb5035-3.98.1
    • SLES 15 SP1: resource-agents-4.3.0184.6ee15eb2-150100.4.72.1
    • SLES 15 SP2: resource-agents-4.4.0+git57.70549516-150200.3.56.1
    • SLES 15 SP3: resource-agents-4.8.0+git30.d0077df0-150300.8.31.1
    • SLES 15 SP4 이상: resource-agents-4.10.0+git40.0f4de473-150400.3.19.1
  2. [1] Pacemaker에서 리소스를 구성합니다.

    #Place the cluster in maintenance mode
    sudo crm configure property maintenance-mode=true
    
  3. [1] Pacemaker 클러스터 상태 노드 전략 및 제약 조건을 설정합니다.

    sudo crm configure property node-health-strategy=custom
    sudo crm configure location loc_azure_health \
    /'!health-.*'/ rule '#health-azure': defined '#uname'
    

    Important

    설명서의 다음 단계에 설명된 리소스 외에 "health-"로 시작하는 클러스터의 다른 리소스를 정의하지 마세요.

  4. [1] 클러스터 특성의 초기 값을 설정합니다. 각 클러스터 노드 실행. 대규모 제조업체 VM을 비롯한 스케일 아웃 환경.

    sudo crm_attribute --node prod-cl1-0 --name '#health-azure' --update 0
    sudo crm_attribute --node prod-cl1-1 --name '#health-azure' --update 0
    
  5. [1] Pacemaker에서 리소스를 구성합니다. 중요: 리소스는 'health-azure'로 시작해야 합니다.

    sudo crm configure primitive health-azure-events ocf:heartbeat:azure-events-az \ 
    meta allow-unhealthy-nodes=true failure-timeout=120s \ 
    op start start-delay=90s \ 
    op monitor interval=10s
    
    sudo crm configure clone health-azure-events-cln health-azure-events
    

    참고 항목

    'health-azure-events' 리소스를 구성할 때 다음 경고 메시지를 무시할 수 있습니다.

    경고: health-azure-events: 알 수 없는 특성 'allow-unhealthy-nodes'.

  6. Pacemaker 클러스터의 유지 관리 모드를 해제합니다.

    sudo crm configure property maintenance-mode=false
    
  7. 사용 중에 오류를 지우고 모든 클러스터 노드에서 health-azure-events 리소스가 성공적으로 시작되었는지 확인합니다.

    sudo crm resource cleanup
    

    예약된 이벤트에 대한 최초 쿼리 실행은 최대 2분 정도 걸릴 수 있습니다. 예약된 이벤트를 사용한 Pacemaker 테스트는 클러스터 VM에 대해 다시 부팅 또는 다시 배포 작업을 사용할 수 있습니다. 자세한 내용은 예약된 이벤트 설명서를 참조하세요.

    참고 항목

    azure-events 에이전트에 대한 Pacemaker 리소스를 구성한 후 클러스터를 유지 관리 모드로 전환하거나 해제하면 다음과 같은 경고 메시지가 표시될 수 있습니다.

    경고: cib-bootstrap-options: 알 수 없는 특성 'hostName_ hostname'
    경고: cib-bootstrap-options: 알 수 없는 특성 'azure-events_globalPullState'
    경고: cib-bootstrap-options: 알 수 없는 특성 'hostName_ hostname'
    이러한 경고 메시지는 무시할 수 있습니다.

다음 단계