[휴지통] pacemaker 설정 2


Azure SAP Pacemaker 설정

[Microsoft Docs 참고](https://learn.microsoft.com/ko-kr/azure/sap/workloads/high-availability-guide-rhel-pacemaker)
  • Category : 휴지통
  • Tag : Azure


PaceMaker


목차


개요

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

1. SBD 디바이스 사용

다음 두 옵션 중 하나를 사용하여 SBD 디바이스를 구성할 수 있습니다.
  • [1]. 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를 사용할 때 가장 탄력적인 구성입니다.

    • iSCSI 대상 서버가 있는 SBD

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

    • Azure 공유 디스크가 있는 SBD

2. Azure 펜스 에이전트 사용

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


[1]. Infra 환경 구성

img

1. Resource Group 생성

2. Virtual Network 생성

네트워크 명 네트워크 주소
MGMT 10.0.0.0/16
PRD 10.1.0.0/16
PRD-AP_Subnet 10.1.1.0/24
PRD-DB_Subnet 10.1.2.0/24
DR 10.2.0.0/16
DR-AP_Subnet 10.2.1.0/24
DR-DB_Subnet 10.2.2.0/24

3. VM 생성

OS : 배포판 : SUSE Enterprise Linux for SAP 15 SP1 +24x7 Support
VM Storage Subnet 가용성영역
AP-NO1 NFS PRD Zone 1
AP-NO2 NFS DR Zone 3
DP-NO1 Managed Disk PRD Zone 2 > 1
DP-NO2 Managed Disk DR Zone 2 > 3
  • Q1. Managed Disk는 Pacemaker 구성시 사용되는 SDB방식의 공유디스크인지?
    • A. POC에서 SDB방식을 안씀 > fence방식으로 클러스터링 예정
  • Q2. DP-NO1과 DP-NO2와 존 영역이 다르면 공유디스크 설정이 안됨 > 대응방안?
    • A. fence방식으로 하면 공유디스크를 사용하지 않음 > 달라도 괜찮음

4. NFS 설정

5. 공유디스크 설정

제한 사항

  • 관리 디스크용 ZRS에는 다음과 같은 제한 사항이 있습니다.
    • 프리미엄 SSD(반도체 드라이브) 관리 디스크 및 표준 SSD에서만 지원됩니다.
    • 현재 미국 서부 2, 서유럽, 북유럽 및 프랑스 중부 지역에서만 사용할 수 있습니다.


[2]. VM 사전작업 [공통]

1. 시스템 업데이트

sudo zypper update

img

명령어 실행도중 나오는 질문은 긍정적으로 답변하면된다.
1. 라이센스 정보에 대해 안내하는 문구
2. 라이센스 동의 관련 질의문

2. ifconfig 명령어 패키지 설치

zypper install net-tools-deprecated

img



[3]. Pacemaker 구성 Manual

1-1. Azure 공유 디스크가 있는 SBD

1-2. Azure 펜스 에이전트 사용

- (1). 관리 ID 사용

- (2). 서비스 주체 사용

- (3). 펜스 에이전트에 대한 사용자 지정 역할 만들기

2. 클러스터 설치

- (1). 운영 체제를 구성합니다.

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

[1-1]. vi 편집기를 이용해 configuration file 설정

sudo vi /etc/systemd/system.conf

[1-2]. Change the DefaultTasksMax

#DefaultTasksMax=512
DefaultTasksMax=4096

img 주석을 풀어 위와같이 vi 편집기로 수정

[1-3]. Activate this setting

sudo systemctl daemon-reload

[1-4].Test to ensure that the change was successful

sudo systemctl --no-pager show | grep DefaultTasksMax

img

[1-6]. 더티 캐시의 크기를 줄입니다. [vi 편집기 이용]

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

img

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

# Change/set the following setting
vm.swappiness = 10

img

- (2). cloud-netconfig-azure 구성

  • 클라우드 네트워크 플러그 인이 가상 IP 주소를 제거하는 것을 방지하려면
    Pacemaker가 할당을 제어해야 하므로
    다음 코드와 같이 네트워크 인터페이스에 대한 구성 파일을 변경합니다.

[2-1]. Edit the configuration file

sudo vi /etc/sysconfig/network/ifcfg-eth0 

img

[2-2]. CLOUD_NETCONFIG_MANAGE 부분을 no로 수정 img

- (3). Keygen 작업

No Keygen
1 NO1 SERVER keygen 생성
2 NO2 copy the public key 확인
3 NO2 > NO1 SERVER의 authorized_keys에 복사
4 NO2 SERVER keygen 생성
5 NO1 > NO2 SERVER의 authorized_keys에 복사
6 NO1 copy the public key 확인

[3-1]. [AP-NO1, DP-NO1] NO1 SERVER의 ssh-keygen 생성.

sudo ssh-keygen

img

[3-2]. [AP-NO2, DP-NO2] authorized keys에 NO1 SERVER의 keygen 붙여넣기

# 2. NO1 서버에 생성한 keygen 붙여넣기
sudo vi /root/.ssh/authorized_keys  

img

[3-3] [AP-NO2, DP-NO2] copy the public key 확인

sudo cat /root/.ssh/id_rsa.pub

img

[3-4]. [AP-NO2, DP-NO2] NO2 SERVER의 ssh-keygen 생성.

sudo ssh-keygen

img

[3-5]. [AP-NO1, DP-NO1] NO2 SERVER의 ssh-keygen을 복사해서 NO1 SERVER의 authorized keys에 붙여넣기

sudo vi /root/.ssh/authorized_keys  

img

[3-6] [AP-NO1, DP-NO1] copy the public key 확인

sudo cat /root/.ssh/id_rsa.pub

img

- (4). 펜싱 디바이스를 사용하는 경우 Azure 펜스 에이전트를 기반으로 fence-agents 패키지를 설치합니다

sudo zypper install fence-agents

- (5). Azure Python SDK 및 Azure Identity Python 모듈을 설치합니다.

공식문서는 버전 15.1로 되어있으나 실제 버전(15.3)과 동일한 버전으로 설치해야함

# 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.3/x86_64
 sudo zypper install python3-azure-mgmt-compute
 sudo zypper install python3-azure-identity

- (6). 호스트 이름 확인을 설정합니다.

sudo vi /etc/hosts

AP#1 서버 작업 화면 img

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

# IP address of the first cluster node
<NO1 서버의 Private PI> prod-cl1-0
# IP address of the second cluster node
<NO2 서버의 Private PI> prod-cl1-1

AP#1 서버 작업 화면 img

AP#2 서버 작업 화면 img

- (8). [AP-NO1, DP-NO1] NO1 SERVER에 클러스터를 설치합니다.

sudo ha-cluster-init -u
# ! 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

- (9). [AP-NO2, DP-NO2] NO2 SERVER에서 클러스터에 노드를 추가합니다.

sudo ha-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

- (10). hacluster 암호를 동일한 암호로 변경합니다.

  • web로그인 비밀번호
    • ID : hacluster
    • PW : 설정한 비밀번호
      sudo passwd hacluster
      

- (11). corosync 설정을 조정합니다.

sudo vi /etc/corosync/corosync.conf

[11-1]. a. 값이 없거나 다른 경우 다음 굵게 표시된 내용을 파일에 추가합니다. 메모리 보존 유지 관리를 허용하도록 토큰을 30000으로 변경해야 합니다.

[...]
   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
 }

[11-2]. corosync 서비스를 다시 시작합니다.

sudo service corosync restart

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

(1). [AP-NO1, DP-NO1] 펜싱에 Azure 펜스 에이전트를 사용하는 경우
다음 명령을 실행합니다.
두 클러스터 노드에 역할을 할당한 후 클러스터에서 펜싱 디바이스를 구성할 수 있습니다.

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

(2). 펜스 에이전트에 관리 ID 를 사용하는 경우
다음 명령을 실행합니다.

# replace the bold strings 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_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

결과화면

SAP 클러스터(pacemaker)에 서비스를 어떻게 구성할것인지
Veeam 구성 어떻게 할것인지 협의 필요

Share this post