Open gigs4014 opened 1 year ago
==== [VM1, VM2 실행]
※ vbmc 통신용 포트 프로토콜은 UDP입니다.
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-service=high-availability
firewall-cmd --add-service=high-availability
firewall-cmd --permanent --zone=public --add-port=6230-6231/udp
firewall-cmd --reload
==== [VM1, VM2 실행]
dnf --enablerepo=highavailability -y install pacemaker pcs fence-agents-ipmilan
※ pacemaker, corosync 서비스는 fencing loop현상 방지를 위해 enable 하지 않습니다.
systemctl start pcsd
cat /etc/passwd |grep hacluster
passwd hacluster
vi /etc/hosts
####Default IP####
10.10.254.101 lilo-ha1
10.10.254.103 lilo-ha2
####Pacemaker Hearbeat IP####
10.10.254.102 lilo-hb1
10.10.253.104 lilo-hb2
==== [VM1 실행]
pcs host auth lilo-hb1 lilo-hb2 -u hacluster -p Ablecloud1!
pcs cluster setup hacluster --start lilo-hb1 lilo-hb2
==== [VM1, VM2 실행]
vi /etc/corosync/corosync.conf
totem {
version: 2
cluster_name: hacluster
transport: knet
crypto_cipher: aes256
crypto_hash: sha256
cluster_uuid: a6fec185982340f18ee9252caf64362b
}
nodelist { node { ring0_addr: lilo-ha1 ring1_addr: lilo-hb1 name: lilo-hb1 nodeid: 1 }
node {
ring0_addr: lilo-ha2
ring1_addr: lilo-hb2
name: lilo-hb2
nodeid: 2
}
}
quorum { provider: corosync_votequorum two_node: 1 wait_for_all: 1 }
logging { to_logfile: yes logfile: /var/log/cluster/corosync.log to_syslog: yes timestamp: on }
==== [VM1, VM2 실행]
systemctl start pacemaker
### VBMC 구성 (virtual Baseboard management controller)
==== [Host 실행]
#### vbmc 패키지 설치
pip3 install virtualbmc
==== 방화벽 해제
firewall-cmd --permanent --zone=public --add-port=6230-6231/udp firewall-cmd --reload
#### vbmc 시작
vbmcd
#### vbmc 등록
vbmc add vm1 --port 6230 --username ablecloud --password Ablecloud1! vbmc add vm2 --port 6231 --username ablecloud --password Ablecloud1!
#### vbmc 시작
vbmc start vm1 vbmc start vm2
#### vbmc 리스트 확인
vbmc list
### pcs stonith 구성
==== [VM1 실행]
#### pcs stonith 생성
pcs stonith create {fence 이름} {fence agent} delay=10 ip={Host IP} ipport={vbmc와 fence_ipmilan 통신 포트} lanplus=1 username={사용자 이름} password={비밀번호} pcmk_host_list={클러스터 Node 이름}
예) pcs stonith create fence-node1 fence_ipmilan delay=10 ip=10.10.1.1 ipport=6230 lanplus=1 username=ablecloud password=Ablecloud1! pcmk_host_list=lilo-hb1 pcs stonith create fence-node2 fence_ipmilan ip=10.10.1.1 ipport=6231 lanplus=1 username=ablecloud password=Ablecloud1! pcmk_host_list=lilo-hb2
#### 조건 제약 (서로 다른 서버에서 fence 될 수 있게 조건을 제약)
pcs constraint location fence-node1 avoids lilo-hb1 pcs constraint location fence-node2 avoids lilo-hb2
#### fence-node1 및 fence-node2에 대한 우선순위 설정
pcs constraint location fence-node1 prefers lilo-hb1=100 pcs constraint location fence-node2 prefers lilo-hb2=100
#### 장애노드 강제 종료 설정 타임아웃값 설정 (다른 노드를 강제로 종료시키는 메커니즘)
pcs property set stonith-timeout=900
### vip 생성
pcs resource create vip ipaddr2 ip=10.10.254.199 cidr_netmask=16 nic=enp7s0 op monitor interval=10
pcs property --all | grep stonith-action
==== [VM1 실행]
# vip를 lilo-hb2로 이동시킵니다.
pcs resource move vip lilo-hb2
# lilo-hb2를 fencing 시킵니다. (poweroff됩니다.)
pcs stonith fence lilo-hb2 --off
==== [VM2 실행]
pcs resource move vip lilo-hb1
pcs stonith fence lilo-hb1
==== [장애발생되지 않은 VM에서 실행]
fencing 리소스 사용 정지 (fencing loop 방지)
pcs stonith disable fence-node1
pcs stonith disable fence-node2
stonith 비활성
pcs property set stonith-enabled=false
cleanup 작업
pcs resource cleanup
pcs stonith history cleanup
장애 발생 VM 재기동
==== [장애 발생 VM에서 실행]
pacemaker 재시작
systemctl restart pacemaker
stonith 활성 pcs cluster 및 node가 정상적으로 "ONLINE" 으로 상태 변경된 후
pcs property set maintenance-mode=true
만약 pcs resource가 "unmanaged" 상태일 경우 유지보수 모드를 해제합니다.
pcs property unset maintenance-mode
cleanup 작업
pcs resource cleanup
pcs stonith history cleanup
pcs 설정 값 확인
pcs property config --all
Pacemaker를 이용한 fencing 구성
해당 구성을 우선 수동으로 구성하여 구성 방법을 확인 후 설계 필요