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를 사용할 때 가장 탄력적인 구성입니다.
Important
Linux Pacemaker 클러스터 노드 및 SBD 디바이스를 계획하고 배포하는 경우 가상 머신과 SBD 디바이스를 호스팅하는 VM 간의 라우팅이 NVA(네트워크 가상 어플라이언스)와 같은 다른 디바이스를 통과하도록 허용하지 않습니다.
NVA의 유지 관리 이벤트 및 기타 문제는 전체 클러스터 구성의 안정성에 부정적인 영향을 미칠 수 있습니다. 자세한 내용은 사용자 정의 라우팅 규칙을 참조하세요.
Azure 공유 디스크가 있는 SBD:
SBD 디바이스를 구성하려면 Pacemaker 클러스터의 일부인 모든 가상 머신에 하나 이상의 Azure 공유 디스크를 연결해야 합니다. 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 대상 서버를 공유할 수 있습니다.
새 SLES 12 SP3 이상의 가상 머신을 배포하고 SSH를 통해 머신에 연결합니다. 컴퓨터가 클 필요는 없습니다. 가상 머신 크기 Standard_E2s_v3 또는 Standard_D2s_v3이면 충분합니다. 반드시 OS 디스크용 프리미엄 스토리지를 사용합니다.
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-0 및 nfs-1: NFS 클러스터 노드의 호스트 이름입니다.
- nw1-xscs-0 및 nw1-xscs-1: NW1 ASCS 클러스터 노드의 호스트 이름입니다.
- nw1-db-0 및 nw1-db-1: 데이터베이스 클러스터 노드의 호스트 이름입니다.
다음 지침에서 클러스터 노드의 호스트 이름과 SAP 시스템의 SID를 조정합니다.
모든 SBD 디바이스에 대한 루트 폴더를 만듭니다.
sudo mkdir /sbd
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
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
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
targetcli 변경 내용을 저장합니다.
sudo targetcli saveconfig
모든 것이 올바르게 설정되었는지 확인합니다.
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에만 적용됩니다.
[A] iSCSI 패키지를 설치합니다.
sudo zypper install open-iscsi
[A] iSCSI 디바이스에 연결합니다. 먼저 iSCSI 및 SBD 서비스를 사용하도록 설정합니다.
sudo systemctl enable iscsid sudo systemctl enable iscsi sudo systemctl enable sbd
[1] 첫 번째 노드에서 초기자 이름을 변경합니다.
sudo vi /etc/iscsi/initiatorname.iscsi
[1] iSCSI 대상 서버(예: NFS 서버용)에서 iSCSI 디바이스를 만들 때 사용한 ACL(액세스 제어 목록)과 일치하도록 파일 내용을 변경합니다.
InitiatorName=iqn.2006-04.nfs-0.local:nfs-0
[2] 두 번째 노드에서 초기자 이름을 변경합니다.
sudo vi /etc/iscsi/initiatorname.iscsi
[2] iSCSI 대상 서버에서 iSCSI 디바이스를 만들 때 사용한 ACL과 일치하도록 파일 내용을 변경합니다.
InitiatorName=iqn.2006-04.nfs-1.local:nfs-1
[A] 이제 iSCSI 서비스를 다시 시작하여 변경 내용을 적용합니다.
sudo systemctl restart iscsid sudo systemctl restart iscsi
[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
[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
[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
[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
[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
[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
[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 파일 구성을 참조하세요.
[A]
softdog
구성 파일을 만듭니다.echo softdog | sudo tee /etc/modules-load.d/softdog.conf
[A] 모듈을 로드합니다.
sudo modprobe -v softdog
Azure 공유 디스크가 있는 SBD
이 섹션은 Azure 공유 디스크와 함께 SBD 디바이스를 사용하려는 경우에만 적용됩니다.
PowerShell을 사용하여 Azure 공유 디스크 만들기 및 연결
리소스 그룹, Azure 지역, 가상 머신, LUN(논리적 단위 번호) 등에 대한 값을 조정합니다.
$ResourceGroup = "MyResourceGroup" $Location = "MyAzureRegion"
프리미엄 SSD에 사용 가능한 디스크 크기를 기반으로 디스크 크기를 정의합니다. 이 예에서는 4G의 P1 디스크 크기가 언급됩니다.
$DiskSizeInGB = 4 $DiskName = "SBD-disk1"
-MaxSharesCount 매개 변수를 사용하여 SBD 디바이스에 대한 공유 디스크를 연결할 최대 클러스터 노드 수를 정의합니다.
$ShareNodes = 2
Azure 프리미엄 공유 디스크에 LRS를 사용하는 SBD 디바이스의 경우 다음 스토리지 SkuName을 사용합니다.
$SkuName = "Premium_LRS"
Azure 프리미엄 공유 디스크에 ZRS를 사용하는 SBD 디바이스의 경우 다음 스토리지 SkuName을 사용합니다.
$SkuName = "Premium_ZRS"
Azure 공유 디스크를 설정합니다.
$diskConfig = New-AzDiskConfig -Location $Location -SkuName $SkuName -CreateOption Empty -DiskSizeGB $DiskSizeInGB -MaxSharesCount $ShareNodes $dataDisk = New-AzDisk -ResourceGroupName $ResourceGroup -DiskName $DiskName -Disk $diskConfig
디스크를 클러스터 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 디바이스 설정
[A] SBD 서비스를 사용하도록 설정합니다.
sudo systemctl enable sbd
[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
[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입니다.
[1] SBD 디바이스 만들기
2단계의 디바이스 ID를 사용하여 첫 번째 클러스터 노드에 새 SBD 디바이스를 만듭니다.
# sudo sbd -d /dev/disk/by-id/scsi-3600224804208a67da8073b2a9728af19 -1 60 -4 120 create
[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 파일 구성을 참조하세요.
softdog
구성 파일을 만듭니다.echo softdog | sudo tee /etc/modules-load.d/softdog.conf
모듈을 로드합니다.
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-xxxxxxxxxxxx 및 yyyyyyyy-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에만 적용됩니다.
[A] SLES를 업데이트합니다.
sudo zypper update
참고 항목
SLES 15 SP4의 경우
crmsh
및pacemaker
패키지의 버전을 확인하여 최소 버전 요구 사항을 충족하는지 확인합니다.crmsh-4.4.0+20221028.3e41444-150400.3.9.1
이상pacemaker-2.1.2+20211124.ada5c3b36-150400.4.6.1
이상
Important
- SLES 12 SP5: python-azure-core-1.23.1-2.12.8이 설치되어 있으면 Azure Fence 에이전트가 Pacemaker 클러스터에서 시작되지 않을 수 있으며, /var/log/messages에서 “Azure Resource Manager Python SDK를 찾을 수 없거나 액세스할 수 없습니다”라는 오류 메시지가 표시됩니다. 자세한 내용은 SUSE KBA 21532의 지침을 따르세요.
- SLES 15 SP4 이상: OS를 업데이트한 후 Python용 Azure 라이브러리는 Python 3.11 인터프리터를 사용할 수 있으므로 Pacemaker 클러스터에서 Azure 펜스 에이전트를 시작하지 못할 수 있습니다. “Azure Resource Manager Python SDK를 찾을 수 없거나 액세스할 수 없습니다”라는 오류 메시지가 “/var/log/messages에 표시됩니다. 자세한 내용은 SUSE KBA 21504의 지침을 따르세요.
[A] 클러스터 리소스에 필요한 구성 요소를 설치합니다.
sudo zypper in socat
[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 이상이어야 합니다.
[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
[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"
[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
[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
[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
[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 구성에서 제대로 작동하지 않습니다.
[A] fence-agents-azure-arm 패키지를 설치합니다.
SLES 12 SP5의 경우
fence-agents
버전4.9.0+git.1624456340.8d746be9-3.41.3
이상을 사용하고 SLES 15 SP4 이상의 경우fence-agents-azure-arm
패키지를 설치해야 합니다. 이 패키지에는 모든 필수 종속성이 포함됩니다.# On SLES 12 SP5 with fence-agents version 4.9.0+git.1624456340.8d746be9-3.41.3 or higher. You might need to activate the public cloud extension first SUSEConnect -p sle-module-public-cloud/12/x86_64 sudo zypper install fence-agents-azure-arm # On SLES 15 SP4 and later. You might need to activate the public cloud extension first. In this example, the SUSEConnect SUSEConnect -p sle-module-public-cloud/15.4/x86_64 sudo zypper install fence-agents-azure-arm
[A] Azure Python SDK 및 Azure Identity Python 모듈을 설치합니다.
SLES 12 SP5의 경우
fence-agents
버전이4.9.0+git.1624456340.8d746be9-3.41.3
보다 낮으며 SLES 15 SP3 이하안 경우 추가 패키지를 설치해야 합니다.# 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 # 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 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 클라이언트 라이브러리를 설치합니다.
[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
[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
[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
[A] hacluster 암호를 동일한 암호로 변경합니다.
sudo passwd hacluster
[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] 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"
[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 에이전트를 활용하는 것이 좋습니다.
[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
- SLES 12 SP5:
[1] Pacemaker에서 리소스를 구성합니다.
#Place the cluster in maintenance mode sudo crm configure property maintenance-mode=true
[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-"로 시작하는 클러스터의 다른 리소스를 정의하지 마세요.
[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
[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=60s \ op monitor interval=10s sudo crm configure clone health-azure-events-cln health-azure-events
참고 항목
'health-azure-events' 리소스를 구성할 때 다음 경고 메시지를 무시할 수 있습니다.
경고: health-azure-events: 알 수 없는 특성 'allow-unhealthy-nodes'.
Pacemaker 클러스터의 유지 관리 모드를 해제합니다.
sudo crm configure property maintenance-mode=false
사용 중에 오류를 지우고 모든 클러스터 노드에서 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'
이러한 경고 메시지는 무시할 수 있습니다.
다음 단계
- SAP용 Azure Virtual Machines 계획 및 구현
- SAP용 Azure Virtual Machines 배포
- SAP용 Azure Virtual Machines DBMS 배포
- SUSE Linux Enterprise Server의 Azure VM에 있는 NFS의 고가용성
- SAP 애플리케이션용 SUSE Linux Enterprise Server의 Azure VM에 있는 SAP NetWeaver에 대한 고가용성
- Azure VM에서 SAP HANA의 재해 복구를 계획하고 고가용성을 설정하는 방법을 알아보려면 Azure Virtual Machines의 SAP HANA 고가용성을 참조하세요.