🐳 Infra/DRBD

Fencing 개념 및 설정 방법

terranbin 2024. 12. 20. 15:08
728x90
SMALL

[개념]

고가용성 클러스터에서 장애가 발생한 노드를 격리(Isolation) 시키는 프로세스

클러스터 환경에서 Fencing(격리) 설정이 제대로 되어 있지 않으면 고가용성  유지하는 데 심각한 문제가 발생

 

[목적]

데이터 손상 방지 (두 노드가 동시에 자원 사용 못하도록 함 / Split-Brain )

클러스터 안전성 (클러스터 전체의 일관성과 안정성 유지)

자동 복구 (장애가 발생한 노드 자동 복구 및 클러스터에서 제외)

 

[리소스 추가]

STONITH 추가

crm configure primitive <리소스_이름> stonith:<에이전트_이름> \
    params ipaddr=<IP> login=<사용자> passwd=<비밀번호> pcmk_host_list="<노드_리스트>"



# <리소스_이름>: 설정할 STONITH 리소스 이름 (예: fence-ipmi, fence-drac 등).
# stonith:<에이전트_이름>: 사용할 STONITH Fence Agent 이름 (예: fence_ipmilan, fence_drac5).
# params: Fence Device 설정에 필요한 매개변수(IP, 로그인 정보 등).
# pcmk_host_list: 해당 STONITH 리소스가 적용될 클러스터 노드 이름.

예제: DRAC 사용 경우
# DRAC은 Dell 서버의 원격 전원 관리 및 하드웨어 상태 모니터링 도구

crm configure primitive fence-drac stonith:fence_drac5 \
    params ipaddr="192.168.1.101" login="admin" passwd="password" \
    pcmk_host_list="node1 node2"
    
예제: IPMI 사용 경우
crm configure primitive fence-ipmi stonith:fence_ipmilan \
    params ipaddr="192.168.1.102" login="admin" passwd="password" \
    pcmk_host_list="node1 node2"


예제: ILO 사용 경우
crm configure primitive fence-ilo stonith:fence_ilo \
    params ipaddr="192.168.1.103" login="admin" passwd="password" \
    pcmk_host_list="node1 node2"

예제: 가상 머신 환경
1) Libvirt 환경
crm configure primitive fence-libvirt stonith:fence_virt \
    params ipaddr="192.168.1.105" login="admin" passwd="password" \
    pcmk_host_list="node1 node2"

2) VMWare 환경
crm configure primitive fence-vmware stonith:fence_vmware_soap \
    params ipaddr="192.168.1.106" login="admin" passwd="password" \
    pcmk_host_list="node1 node2"

예제: SAN 스토리지
1) iscsi 
crm configure primitive fence-iscsi stonith:fence_scsi \
    params devices="/dev/sda" pcmk_host_list="node1 node2"

 

 

[활성화]

Stonith 활성화

crm configure property stonith-enabled=true

 

 

[확인1]

crm_mon -l
  • 클러스터 상태가 표시되며, STONITH 리소스가 활성화된 상태인지 확인할 수 있습니다.
  • STONITH Resources 섹션에 설정한 STONITH 리소스가 나와야 합니다.

예시)

Stack: corosync
Current DC: node1 (version 2.1.x) - partition with quorum
Last updated: Fri Dec 20 15:30:00 2024
Last change: Fri Dec 20 15:20:00 2024 by root via cibadmin on node1

2 nodes configured
2 resources configured

Online: [ node1 node2 ]

Active resources:
 fence-drac  (stonith:fence_drac5):    Started node1

 

[확인2]

crm configure show | grep stonith-enabled
# 예상 결과
stonith-enabled: true

 

 

[테스트]

STONITH 설정 동작 테스트

stonith_admin --reboot <노드_이름>

또는

pcs stonith fence <노드_이름>

[log]

tail -f /var/log/pacemaker.log
tail -f /var/log/corosync/corosync.log

예시 로그)
Dec 20 15:31:00 node1 pacemaker-fenced[1234]: Operation 'on' targeting node2 successful
LIST