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를 사용할 때 가장 탄력적인 구성입니다.
-
-
[2]. Azure 공유 디스크가 있는 SBD- SBD 디바이스를 구성하려면 Pacemaker 클러스터의 일부인 모든 가상 머신에 하나 이상의 Azure 공유 디스크를 연결해야 합니다.
-
Azure 공유 디스크를 사용하는 SBD 디바이스의 장점은 추가 가상 머신을 배포할 필요가 없다는 것입니다
2. Azure 펜스 에이전트 사용
Azure 펜스 에이전트를 사용하여 펜싱을 설정할 수 있습니다.
Azure 펜스 에이전트에는 Azure API를 통해 실패한 노드 다시 시작을 관리하는 클러스터 VM 또는 서비스 주체에 대한 관리 ID가 필요합니다.
Azure 펜스 에이전트에는 추가 가상 머신 배포가 필요하지 않습니다.
[1]. Infra 환경 구성
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
명령어 실행도중 나오는 질문은 긍정적으로 답변하면된다.
1. 라이센스 정보에 대해 안내하는 문구
2. 라이센스 동의 관련 질의문
2. ifconfig 명령어 패키지 설치
zypper install net-tools-deprecated
[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
주석을 풀어 위와같이 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
[1-6]. 더티 캐시의 크기를 줄입니다. [vi 편집기 이용]
sudo vi /etc/sysctl.conf
# Change/set the following settings
vm.dirty_bytes = 629145600
vm.dirty_background_bytes = 314572800
[1-7]. 스왑 사용량을 줄이고 메모리를 선호하려면
vm.swapiness가 10으로 설정되어 있는지 확인합니다.# Change/set the following setting vm.swappiness = 10
- (2). cloud-netconfig-azure 구성
- 클라우드 네트워크 플러그 인이 가상 IP 주소를 제거하는 것을 방지하려면
Pacemaker가 할당을 제어해야 하므로
다음 코드와 같이 네트워크 인터페이스에 대한 구성 파일을 변경합니다.
[2-1]. Edit the configuration file
sudo vi /etc/sysconfig/network/ifcfg-eth0
[2-2]. CLOUD_NETCONFIG_MANAGE 부분을 no로 수정
- (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
[3-2]. [AP-NO2, DP-NO2] authorized keys에 NO1 SERVER의 keygen 붙여넣기
# 2. NO1 서버에 생성한 keygen 붙여넣기 sudo vi /root/.ssh/authorized_keys
[3-3] [AP-NO2, DP-NO2] copy the public key 확인
sudo cat /root/.ssh/id_rsa.pub
[3-4]. [AP-NO2, DP-NO2] NO2 SERVER의 ssh-keygen 생성.
sudo ssh-keygen
[3-5]. [AP-NO1, DP-NO1] NO2 SERVER의 ssh-keygen을 복사해서 NO1 SERVER의 authorized keys에 붙여넣기
sudo vi /root/.ssh/authorized_keys
[3-6] [AP-NO1, DP-NO1] copy the public key 확인
sudo cat /root/.ssh/id_rsa.pub
- (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 서버 작업 화면
- (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 서버 작업 화면
AP#2 서버 작업 화면
- (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 구성 어떻게 할것인지 협의 필요