본문 바로가기
Linux/Pacemaker

Pacemaker) Pacemaker 설치 (RHEL 8.X)

by LILO 2021. 6. 27.
반응형

이 설치 가이드는 RHEL 8.X, CentOS 8.X, Rocky Linux 8.4 GA에서 모두 테스트 완료된 가이드입니다.

아래의 가이드는 레드햇 공식 문서와 Serverworld 사이트를 참고하여 테스트하였습니다.

 

CentOS 8 : Pacemaker : Install : Server World

# authorize among nodes [root@node01 ~]# pcs host auth node01.srv.world node02.srv.world Username: hacluster Password: node01.srv.world: Authorized node02.srv.world: Authorized # configure cluster [root@node01 ~]# pcs cluster setup ha_cluster node01.srv.wo

www.server-world.info

 

Chapter 2. Getting started with Pacemaker Red Hat Enterprise Linux 8 | Red Hat Customer Portal

Access Red Hat’s knowledge, guidance, and support through your subscription.

access.redhat.com

 

☞ 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 네트워크 통신 최대 패킷의 크기

적용시 참고 자료

 

How to change totem token timeout value in a RHEL 5, 6, 7, 8 or 9 High Availability cluster? - Red Hat Customer Portal

I have a Red Hat Enterprise Linux cluster using the default token timeout value of 10 seconds. I want to increase this value to make the cluster more resilient against unresponsive nodes, network interruptions, or similar delays. I need to modify the clust

access.redhat.com

 

 

레드햇 답변 토큰 관련 자료

 

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

 

반응형