이 설치 가이드는 RHEL 8.X, CentOS 8.X, Rocky Linux 8.4 GA에서 모두 테스트 완료된 가이드입니다.
아래의 가이드는 레드햇 공식 문서와 Serverworld 사이트를 참고하여 테스트하였습니다.
☞ Pacemaker RPM 설치
# dnf install pcs pacemaker fence-agents-all
# systemctl enable --now pcsd
☞ 클러스터 계정 존재여부
# cat /etc/passwd |grep hacluster
# passwd hacluster
☞ HB 등 별칭 등록
# vi /etc/hosts
#### Default IP ####
111.222.333.241 lilo-ha1
111.222.333.242 lilo-ha2
#### Pacemaker Hearbeat IP ####
11.2.333.246 lilo-hb1
11.2.333.247 lilo-hb2
☞ 클러스터 호스트 인증
서로 통신하려면 서로를 알아야 됨, 클러스터 계정을 통해 알아야 되기 때문에 "hacluster" 계정 이용
# pcs host auth lilo-hb1 lilo-hb2
Username: hacluster
Password:
lilo-hb1: Authorized
lilo-hb2: Authorized
☞ 클러스터 구성 및 구성원 등록
RedHat 벤더사는 Cluster Name이나 Node Name을 대문자가 아닌 소문자를 사용하는 것을 권장함.
(권장이지 필수는 아니기 때문에 어느 것을 선택해도 무관함)
# pcs cluster setup lilo-cluster --start lilo-hb1
# pcs cluster setup lilo-cluster --start lilo-hb2
☞ 클러스터 구성 및 구성원 확인
# pcs cluster status
Node List:
* Online: [ lilo-hb1 lilo-hb2 ]
PCSD Status:
lilo-hb1: Online
lilo-hb2: Online
# pcs status
Cluster name: lilo-cluster
Cluster Summary:
* Stack: corosync
* Current DC: lilo-hb2 (version 2.0.5-9.el8.1-ba59be7122) - partition with quorum
* Last updated: Sat Jun 19 22:39:30 2021
* Last change: Fri Jun 18 10:59:20 2021 by root via cibadmin on lilo-hb1
* 2 nodes configured
* 0 resource instances configured
Node List:
* Online: [ lilo-hb1 lilo-hb2 ]
Full List of Resources:
* No resources
Daemon Status:
corosync: active/disabled
pacemaker: active/disabled
pcsd: active/enabled
☞ 클러스터 펜싱 비활성화
# pcs property set stonith-enabled=false
☞ Corosync 설정 업데이트
※ 노드 간 토큰 손실 선언을 기다리는 시간은 10초이고 가입 참여 요청 메세지를 기다리는 시간은 0.1초로 설정
※ 네트워크 MTU 변경 사항을 찾기 위해 knet PMTUd가 실행되는 빈도는 35, MTU는 네트워크 통신 중 최대 패킷의 크기
※ 적용시 참고 자료
☞ 레드햇 답변 중 토큰 관련 자료
totem token노드가 토큰이 손실 된 것으로 간주 할 때까지의 시간 (밀리 초)이며,이 시점에서 어떤 노드가 여전히 응답하고 있는지, 멤버로 남아 있어야하고 어떤 노드가 누락되고 제거되어야하는지 결정하는 절차를 시작함
기본적으로 이 설정은 클러스터에서 노드를 제거하기위한 조치를 취하기 전에 노드가 응답하지 못할 수있는 시간을 제어함
아래의 토큰 관련 설정은 네트워크 환경에 따라 다르기 때문에 초기 구축시에는 설정하지 않는 것이 좋습니다.
관련 이슈가 발생하면 적용하는 방향으로 고려하는 것이 좋아보입니다.
# pcs cluster config update transport knet_pmtud_interval=35 totem token=10000 join=100
# pcs cluster config
Cluster Name: lilo-cluster
Transport: knet
Nodes:
lilo-hb1:
Link 0 address: lilo-hb1
nodeid: 1
lilo-hb2:
Link 0 address: lilo-hb2
nodeid: 2
Transport Options:
knet_pmtud_interval: 35
Crypto Options:
cipher: aes256
hash: sha256
Totem Options:
join: 100
token: 10000
☞ VIP 등록전 구성도 파악하기
- Shared Storage: 공유 스토리지를 의미하며 양쪽 노드가 같이 사용할 수 있는 공간임, 주로 iSCSI, Fibre Channel를 이용한 블록 장치
- Power Fencing Device: Fecning 역할을 하는 Device
Fecing은 Management Port를 통해 서버를 원격지에서 관리할 수 있는 HP의 iLo, IBM의 IMM 등으로 구성할 수 있음 (fence_ipmilan)
※ Management 뿐만 아니라 Storage 혹은 Disk로도 구성이 가능 (SBD_Device, SCSI)
※ Hypervisor에서도 Management 계정을 통해 설정이 가능
※ Fencing: 장애가 발생한 노드나 리소스를 비활성화 시키는 기능
- Virtual IP: 온보드의 포트나 NIC 포트에서 직접적으로 할당된 IP는 아니지만 유동적인 서비스에서 유용하게 쓰임
주로 2개 이상의 서버에서 Active/Standby 구조에서 해당 서버들의 대표 IP로 많이 쓰임
☞ VIP 리소스 생성 전 리소스 고착성 유지
고착성 수치를 1000으로 설정해서 다른 노드로 리소스가 넘어가지 않게 해줌
해당 작업은 Pacemaker의 원천인 Clusterlabs에서도 권장하는 내용 중 하나임
※ DB와 같은 서비스의 경우는 재기동 시간이 상당히 길 수도 있기 때문에 고착성을 가져야 가장 올바른 HA의 그림이 나옴
# pcs resource defaults update resource-stickiness=1000
Warning: Defaults do not apply to resources which override them with their own defined values
("pcs resource defaults" 명령은 "pcs resource defaults update"로 대체됩니다.)
# pcs resource defaults
Meta Attrs: rsc_defaults-meta_attributes
resource-stickiness=1000
☞ VIP 리소스 생성 및 본딩 인터페이스에 할당
bond0라는 인터페이스에 붙어서 동작되고 감시주기는 30초 빈도로 설정
주의할 점은 양 쪽 노드의 같은 인터페이스 명 즉, bond0가 존재해야 됨
# pcs resource create VIP IPaddr2 ip=111.222.333.248 cidr_netmask=24 nic=bond0 op monitor interval=30 --group lilo-db
# pcs resource
* Resource Group: lilo-db:
* VIP (ocf::heartbeat:IPaddr2): Started lilo-hb1
# ip a |grep bond0
5: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
inet 111.222.333.241/24 brd 111.222.333.255 scope global noprefixroute bond0
inet 111.222.333.248/24 brd 111.222.333.255 scope global secondary bond0
☞ 생성된 VIP Health Check 리소스 생성
Pacemaker에서 Network Monitoring은 ethmonitor, ping 2개로 나뉨
ethmonitor는 실제로 잡혀있는 인터페이스 상태를 기준으로 Health Check를 함
ping 방식은 ping을 host_list로 주기적으로 보내서 체크
# pcs resource create VIP-monitor ethmonitor interface=bond0 clone
# pcs resource
* Resource Group: lilo-db:
* VIP (ocf::heartbeat:IPaddr2): Started lilo-hb1
* Clone Set: VIP-monitor-clone [VIP-monitor]:
* Started: [ lilo-hb1 lilo-hb2 ]
☞ 생성된 VIP의 제약조건 설정
서비스의 다운타임 최소화를 위해 Auto Failback을 방지 시킴
# pcs constraint location vip rule score=-INFINITY ethmonitor-bond0 ne 1
'Linux > Pacemaker' 카테고리의 다른 글
Pacemaker) LSB 리소스란 무엇인가? (0) | 2023.07.16 |
---|---|
Pacemaker) 일반 사용자 pcs 명령 사용하는 방법 (0) | 2021.08.29 |
Pacemaker) Pacemaker 이론 (1) | 2021.07.03 |