게시물 52건
 
RHEL8.4 pacemaker 설치 및 명령어등 정리
글쓴이 : theko 날짜 : 2026-06-19 (금) 15:28 조회 : 316
> create repository
[high-availability]
name = High Availability
baseurl==file:///home/rhel8/
enabled=1
gpgkey=0


> 환경정보 RHEL8.4
node1.example.com
192.168.122.201
192.168.50.201

node2.example.com
192.168.122.202
192.168.50.202

- 방화벽 중지
[root@node01 ~]# systemctl stop firewalld.service
[root@node02 ~]# systemctl stop firewalld.service


-  /etc/hosts 설정 (both)
[root@node01 ~]# vi /etc/hosts

192.168.122.201 node1
192.168.122.202 node2

192.168.50.201  nodehb1
192.168.50.202  nodehb2


[root@node02 ~]# vi /etc/hosts

192.168.122.201 node1
192.168.122.202 node2

192.168.50.201  nodehb1
192.168.50.202  nodehb2


-------subscription 등록---------------Optional--------------------------------------------------------------------------
# subscription-manager register --auto-attach
# subscription-manager repos --disable=*
# subscription-manager repos --enable=rhel-8-for-x86_64-highavailability-rpms
# subscription-manager repos --enable=rhel-8-for-x86_64-baseos-rpms
# subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms
------------------------------------------------------------------------------------------------
*참고 https://access.redhat.com/documentation/ko-kr/red_hat_enterprise_linux/8/html/deploying_red_hat_enterprise_linux_8_on_public_cloud_platforms/azure-install-red-hat-ha-packages-and-agents_configuring-rhel-high-availability-on-azure


1.  pacemaker install(both)
# yum install pcs pacemaker fence-agents-all


2. pcs start : (both)
# systemctl start pcsd
# systemctl enable pcsd

----------------optional----------------------------------------------------------------------------------------------
firewalld 데몬을 실행하는 경우 Red Hat High Availability Add-On에 필요한 포트를 활성화합니다.
# firewall-cmd --permanent --add-service=high-availability
(# firewall-cmd --add-service=high-availability)
# firewall-cmd --reload
---------------------------------------------------------------------------------------------------

3. hacluster  패스워드 변경(both)
# echo redhat | passwd --stdin hacluster

4. Cluster node 설정 및 Corosync 구동
[root@node01 ~]#pcs host auth nodehb1 nodehb2 -u hacluster -p redhat

5. cluster 생성 및 시작
[root@node01 ~]# pcs cluster setup --start my_cluster nodehb1 nodehb2 totem token=10000 join=100
                                                                                             _ _ _ _ _ _ _ _ _ __ _ _ _ __ __ _ _
Or
(pcs cluster config update transport knet_pmtud_interval=35 totem token=10000 join=100)

[root@node01 ~]# pcs cluster start --all

- 노드가 부팅될 때 클러스터의 각 노드에서 클러스터 서비스를 실행하도록 클러스터 서비스를 활
성화합니다
# pcs cluster enable --all


6. Cluster 기본 설정  

> 리소스 등록 시 fence device 작동 방지
# pcs property set stonith-enabled=false 

# pcs property set stonith-enabled=true

- 장애 처리 후 리소스 이동 방지 설정
# pcs resource defaults update resource-stickiness=1000

- Quorum 설정 
# pcs property set no-quorum-policy=stop

쿼럼 사용시에는 suicide
# pcs property set no-quorum-policy=suicide


----------------------------------------------
・ignore : 무시(모든 노드가 쿼럼을 가지고있는 것으로서 리소스관리를 하기해, 분단된 모든 노드에서 서비스를 가동한다.)
・freeze : 아무것도 하지않음
・stop : 클러스터의 분단에 영향을 받는 모든 리소스를 정지
・suicide : 클러스터의 분단에 영향을 받는 모든 노드를 펜싱
------------------------------------------------






- 리소스를 생성할 때 해당 리소스에 대한 migration-threshold 옵션을 설정하여 정의된 실패 횟수 후에
  새 노드로 이동하도록 리소스를 구성할 수 있습니다
# pcs resource defaults update migration-threshold=1

- 클러스터를 유지 관리 모드로 전환하려면 다음 명령을 사용하여 maintenance-mode 클러스터 속성을
true 로 설정합니다 
# pcs property set maintenance-mode=true
( 위 명령어를 하면 모두 unmanaged로 변하게 됨. 서비스 시작이안됌...그럼 
# pcs property unset maintenance-mode 명령어로 해소)

- 셋팅 확인
# pcs property show 


--------LVM 생성시 참고------------------
>  lvm.conf 설정  
# vim /etc/lvm/lvm.conf
system_id_source = "uname"

# lvm systemid
  system ID: z1.example.com
# uname -n
  z1.example.com
---------------------------------------------

7. HALVM 생성 또는 HALVM 설정

# pvcreate /dev/sda1
# vgcreate --setautoactivation n vg_cluster /dev/sda1     <<<< RHEL8.5 이상 가능 (lvm2-2.03.12-1.el8 later)
(or # vgcreate my_vg /dev/sdb1   << RHEL8.4 이하 )

*생성 중인 LVM 볼륨에
기존 볼륨 그룹을 사용하는 경우 볼륨 그룹에 

# vgchange --setautoactivation n my_vg

명령을 사용하여 이 플래그를 재설정할 수 있습니다.

# vgs -o+systemid
# lvcreate -l 100%FREE -n lv_cluster vg_cluster
# lvs
# mkfs.xfs /dev/vg_cluster/lv_cluster

> 활성화 상태 확인
#lvs -o +autoactivation




8. Resource 등록 및 확인

-리소스 등록 및 확인
# pcs resource

> VIP
# pcs resource create vip ocf:heartbeat:IPaddr2 ip=192.168.122.210 cidr_netmask=24 nic=enp1s0 op monitor interval=30s timeout=45s
# pcs resource create vip IPaddr2 ip=192.168.122.210 cidr_netmask=24 --group svc_httpd

>LVM 등록
# pcs resource create vg_cluster LVM-activate vgname=vg_cluster vg_access_mode=system_id --group svc_httpd

다른예시)
pcs resource create halvm ocf:heartbeat:LVM-activate vgname=vg00 activation_mode=exclusive vg_access_mode=system_id op monitor interval=60 timeout=120 on-fail=fence --group=svc

> Filesystem 
# pcs resource create fs-httpd ocf:heartbeat:Filesystem device=/dev/vg_cluster/lv_cluster directory=/httpd fstype=xfs  op monitor interval=45 timeout=60 OCF_CHECK_LEVEL=20 --group svc_httpd

> APP 등록
. OCF 형식
# pcs resource create httpd ocf:heartbeat:apache configfile="/etc/httpd/conf/httpd.conf" --group svc_httpd op monitor interval=30s

. LSB 형식
# pcs resource create LSB_APP lsb:chrony op monitor interval=30s --group svc_httpd



------------DB 등록 예시 ------------------------------------------------
- 실행 APP 스크립트 등록시 
ex) 
# pcs resource create mariadb ocf:heartbeat:mysql binary="/usr/bin/mysqld_safe" socket="/data/mariadb/mysql.sock" config="/etc/my.cnf" datadir="/data/mariadb" op start timeout=60s op stop timeout=60s op monitor interval=20 timeout=30

등록할 Pacemaker 리소스 이름 : mariadb
MariaDB 소켓 위치 : /data/mariadb/mysql.sock
MariaDB 디렉토리 위치 : /data/mariadb
--------------------------------------------------------------------------


> resource 그룹화
# pcs resource group add svc_httpd vip vg_sh fs-httpd


9. Node 우선 순위 제한 설정
# pcs constraint  location svc_httpd prefers nodehb1=1000
# pcs constraint  location svc_httpd prefers nodehb2=500
------------사용법----------------------------------------------------------------------
# pcs constraint
 .score 확인

# pcs constraint show --full
Location Constraints:
Ordering Constraints:
  Resource Sets:
    set ClusterIP ClusterIP1 ClusterIP2 (id:pcs_rsc_set) (id:pcs_rsc_order)
    set ClusterIP1 ClusterIP2 ClusterIP (id:pcs_rsc_set-1) (id:pcs_rsc_order-1)

# pcs constraint remove pcs_rsc_order
# pcs constraint remove pcs_rsc_order-1
----------------------------------------------------------------------------------------

10. Fence Device 설정


  10.1) Fence Device 설정(vbmc 설정시)

- Connetc test
fence_ipmilan  -A password -P -a 192.168.122.1 -u 7000 -l ipmiadmin -p redhat -o status

# 1번 노드
pcs stonith create ipmi1 fence_ipmilan  pcmk_host_list="RHEL84-ex436-node1" ip=192.168.122.1 delay=15 ipport="7000" username=ipmiadmin password=redhat lanplus=on auth=password op monitor interval=1800s 
# 2번 노드 
pcs stonith create ipmi2 fence_ipmilan  pcmk_host_list="RHEL84-ex436-node2" ip=192.168.122.1 ipport="7001" username=ipmiadmin password=redhat lanplus=on auth=password op monitor interval=1800s 


   10.2) Configure device in stonith-ng (SCSI fence)

> 여러 장치를 지정할 때 쉼표로 구분 ,하십시오
# pcs stonith create scsi fence_scsi pcmk_host_list="node1.example.com node2.example.com" pcmk_reboot_action="off" devices="/dev/mapper/mpathb,/dev/mapper/mpathc" meta provides="unfencing" --force

ex) 
pcs stonith create scsi fence_scsi pcmk_host_list="RHEL84-ex436-node1 RHEL84-ex436-node2" pcmk_reboot_action="off" devices="/dev/sdb" meta provides="unfencing" --force

> not used HALVM
# pcs stonith create scsi fence_scsi pcmk_host_list="node1.example.com node2.example.com" pcmk_reboot_action="off" meta provides="unfencing" --force

> Used HALVM
# pcs stonith create scsi fence_scsi pcmk_host_list="RHEL84-ex436-node1 RHEL84-ex436-node2" pcmk_reboot_action="off" devices="/dev/mapper/mpathb,/dev/mapper/mpathc" meta provides="unfencing" --force


>update 로 이미 생성된 목록을 변경할 수도 있습니다.
# pcs stonith update scsi devices="/dev/mapper/mpathb,/dev/mapper/mpathc"

> 확인방법
# sg_persist -n -i -r -d /dev/mapper/mpathb
  PR generation=0xa0, Reservation follows:
    Key=0xf1070001
    scope: LU_SCOPE,  type: Write Exclusive, registrants only
# sg_persist -n -i -k -d /dev/mapper/mpathb
  PR generation=0xa0, 8 registered reservation keys follow:
    0xf1070002
    0xf1070002
    0xf1070001
    0xf1070001
    0xf1070001
    0xf1070001
    0xf1070002
    0xf1070002



> scsi 가 정상적으로 작동 안될때 
# pcs stonith update scsi pcmk_monitor_action="metadata"

https://access.redhat.com/solutions/1421063



   10.3) Power fence 
# pcs stonith create ipmi1 fence_ipmilan pcmk_host_list="UKISS_DB1.cs" ipaddr="UKISS_DB1.ipmi" login="admin" passwd="rplinux)(87" lanplus=on auth=password delay=15 power_wait=20 op monitor interval=60s timeout=120s

# pcs stonith create ipmi2 fence_ipmilan pcmk_host_list="UKISS_DB2.cs" ipaddr="UKISS_DB2.ipmi" login="admin" passwd="rplinux)(87" lanplus=on auth=password power_wait=20 op monitor interval=60s timeout=120s


    10.4) Kdump 설정
# pcs stonith create fence_kdump fence_kdump pcmk_reboot_action="off" pcmk_host_list="RHEL84-ex436-node1;RHEL84-ex436-node2" timeout="30" pcmk_off_retries=1

# touch /etc/kdump.conf
# systemctl restart kdump



-------Fence 생성시 참고-------------------------------------------------------------
# pcs stonith list [filter]
#pcs stonith describe [stonith_agent]

# pcs stonith fence node_name

# pcs stonith fence RHEL84-ex436-node2
OR
# fence_ipmilan -a ipaddress -l username -p password -o status
  ex) # fence_ipmilan -A password -P -a 192.168.12.39 -l USERID -p PASSW0RD -o status 

# fence_ipmilan -a ipaddress -l username -p password -o reboot
# fence_ipmilan -a ipaddress -l username -p password -o status -D /tmp/$(hostname)-fence_agent.debug

#fence_ipmilan -A password -P -a 192.168.122.1 -l ipmiadmin -p redhat -o reboot --ipport=7001

ex)
pcs stonith create ipmi1 fence_ipmilan pcmk_host_list="thekoerdb.cs" ipaddr=thekoerdb.ipmi login=thekoerpdb passwd='thekoerpdb!2' lanplus=on auth=password delay=15 power_wait=20 op monitor interval=60s timeout=120s

pcs stonith create ipmi2 fence_ipmilan pcmk_host_list="thekoera1.cs" ipaddr=thekoera1.ipmi login=thekoerpap1  passwd='thekoerpap1@' lanplus=on auth=password power_wait=20 op monitor interval=60s timeout=120s

    ● Fence device 등록
# pcs stonith create prd_fence fence_ilo5 pcmk_host_list=sjoneprd-hb ipaddr=10.10.10.10 login=admin passwd=password  pcmk_reboot_action=reboot pcmk_monitor_timeout=60s
----------------------------------------------------------------------------------------

확인작업
# lsinitrd /boot/initramfs-$(uname -r)kdump.img | egrep "fence|hosts"


11. Fence 우선순위 지정 
# pcs stonith level add 1 nodehb1 fence_kdump
# pcs stonith level add 1 nodehb2 fence_kdump


 pcs stonith level add 2 nodehb1 ipmi1
 pcs stonith level add 2 nodehb2  ipmi2


12. Fence agent Rule 지정
# pcs constraint location ipmi1 avoids nodehb1
# pcs constraint location ipmi2 avoids nodehb2


----- optional --------------------------
# firewall-cmd --add-port=7410/udp
# firewall-cmd --add-port=7410/udp --permanent
-----------------------------------------


> Test 시나리오

1. filesystem umount
2. service stop 
    . 서비스 케이블 절체
    . Heartbeat 케이블 절체
3. vip stop
    . ip addr2 
      # ip addr delete 192.168.0.100 dev bond0
4. 



########[명령어]###############

# pcs resource move  GROUP_SERVICE  node01
. GROUP_SERVICE 를  node1로 서비스 절체
# pcs property

# pcs resource config svc_httpd

- 서비스가 시작되어 다시 실행되면 실패한 리소스의 실패 상태를 삭제할 수 있으며 클러스터 상태
를 볼 때 실패한 작업 알림이 더 이상 표시되지 않습니다.

# pcs resource cleanup svc_httpd


- 서비스가 실행 중인 노드를 대기 모드로 설정합니다. 펜싱을 비활성화했으므로 클러스터가
이러한 상황에서 복구하는 데 펜싱이 필요하므로 노드 수준 오류를 효율적으로 시뮬레이션할
수 없습니다(예: 전원 케이블 가져오기).

# pcs node standby z1.example.com


- 클러스터 서비스를 첫 번째 노드로 복원하려면 노드를 standby 모드에서 전환합니다. 이 경우 해
당 노드로 다시 서비스를 이동할 필요는 없습니다.

# pcs node unstandby z1.example.com

pcs cluster cib filename 명령을 사용하여 지정된 파일에 원시 클러스터 구성을 저장할 수 있습니다. 이전
에 클러스터를 구성하고 활성 CIB가 있는 경우 다음 명령을 사용하여 원시 xml 파일을 저장합니다.
#pcs cluster cib filename

# pcs status
# pcs status resources
# pcs cluster status
# pcs config

# pcs cluster corosync

# pcs resource defaults



>> issue : unmanaged
# pcs property unset maintenance-mode
https://access.redhat.com/solutions/1473623

# pcs property list --all | grep maintenance-mode
# pcs cluster cib | grep maintenance-mode



>>> OCF Resource Agents are found in /usr/lib/ocf/resource.d/$PROVIDER


vbmc add RHEL84-ex436-node1 --port 7000 --username ipmiadmin --password redhat --libvirt-uri=qemu+ssh://root@RHEL84-ex436-node1/system
vbmc add RHEL84-ex436-node2 --port 7002 --username ipmiadmin --password redhat --libvirt-uri=qemu+ssh://root@RHEL84-ex436-node2/system

# vbmc start RHEL84-ex436-node1
# vbmc start RHEL84-ex436-node2

fence_ipmilan -A password -P -a 192.168.122.1 -l ipmiadmin -p redhat -o status --ipport=7000
fence_ipmilan -A password -P -a 192.168.122.1 -l ipmiadmin -p redhat -o status --ipport=7001


fence_ipmilan -A password -P -a 192.168.122.1 -l ipmiadmin -p redhat -o reboot --ipport=7001



> 리소스 순서 바꾸기
# pcs resource group add   group-name  resource-id  [--before  resource-id  | --after  resource-id ] 
 . https://access.redhat.com/solutions/2883801


no-quorum-policy 설정 변경
no-quorum-policy를 ignore로 설정하면, 클러스터는 쿼럼 없이도 자원을 시작할 수 있습니다
pcs property set no-quorum-policy=ignore  로 쿼럼 없이도 클러스터를 시작하도록 설정합니다.

ex)
# pcs resource group add svc_httpd  vip --after vg_cluster
 . vg_cluster 이후에 vip 순서로 기동

# pcs resource group add svc_httpd  vip --before vg_cluster
 . vg_cluster 이전에 vip가 먼저 기동 순서



> 볼륨이 만들어지고 나서 추후에 HA 볼륨으로 인식
vgchange --setautoactivation n <VG이름>

> 확인
vgs -o +autoactivation











>>>>>>>>질문

* Clone Set: bond0-monitor-clone [bond0-monitor]:
    * Started: [ UKISS_DB1.cs UKISS_DB2.cs ]

# pcs resource create bond0-monitor ocf:heartbeat:ethmonitor interface=bond0 clone
# pcs constraint location UKISS_SVC rule score=-INFINITY ethmonitor-bond0 ne 1
# pcs resource meta bond0-monitor-clone orderd=true


# pcs stonith create scsi fence_scsi pcmk_host_list="node1.example.com node2.example.com" pcmk_reboot_action="off" devices="/dev/mapper/mpathb,/dev/mapper/mpathc" meta provides="unfencing" --force

# pcs stonith update scsi devices="/dev/mapper/mpathb,/dev/mapper/mpathc"

>> exfat 사용시 필요
# yum install -y exfat-utils fuse fuse-exfat



nodehb1:RHEL84~
pcmk_host_list
https://access.redhat.com/solutions/2619961



============ LSB 예시 ========================
[root@node01 init.d]# cat chrony

#!/bin/bash

case $1 in
    start)
        echo "################ Start #################"
        su - root -c "systemctl start chronyd"
        ;;
    stop)
        echo "################ Stop #################"
        su - root -c "systemctl stop chronyd"
        ;;
    status)
 if [ ` ps -ef | grep chronyd | grep -v grep | wc -l `  -eq 1  ];then
                exit 0
        else
                exit 3
 fi
        ;;

*)
echo "plz check" ;;
esac
==========================================

 RHEL8.6  ISCSI 생성 

> targetcli 설치
# yum install targetcli

> target 데몬 enable 후 활성화
# systemctl enable --now target
Created symlink from /etc/systemd/system/multiuser.target.wants/target.service to /usr/lib/systemd/system/target.service.

> target 데몬 상태 확인
# systemctl status target

> targetcli 진입
[root@lilo-san ~]# targetcli

> /backstores/block create LUN1 /dev/vdb1





[client]
 yum install iscsi-initiator-utils


# systemctl enable --now iscsi iscsid


set attribute authentication=0


 iscsiadm -m discovery -t st -p 192.168.122.203



 >constraint 제거 

# pcs constraint list --full
Warning: This command is deprecated and will be removed. Please use 'pcs constraint config' instead.
Location Constraints:
  Resource: svc_httpd
    Enabled on:
      Node: rhcs01 (score:1000) (id:location-svc_httpd-rhcs01-1000)
      Node: rhcs02 (score:500) (id:location-svc_httpd-rhcs02-500)
      Node: rhcs02 (score:INFINITY) (role:Started) (id:cli-prefer-svc_httpd)


score 보기
# crm_simulate -Ls 


[root@rh8-nd1 ~]# vgs -ao+systemid
 VG     #PV #LV #SN Attr   VSize   VFree System ID
 rhel     1   2   0 wz--n- <11.00g    0           
 testvg   2   1   0 wz--n-  <1.20g    0  rh8-nd1     <<===---- System ID is now updated to passive node


[root@rh8-nd1 ~]# vgchange -ay testvg
 1 logical volume(s) in volume group "testvg" now active

https://access.redhat.com/solutions/3819022



pcs stonith create scsi fence_scsi pcmk_host_list="RHEL84-ex436-node1 RHEL84-ex436-node2" pcmk_reboot_action="off" devices="/dev/disk/by-id/wwn-0x6001405e0c76df330334e2db582c7403" meta provides="unfencing" --force



/var/log/cluster/corosync.log
/var/log/pcsd/pcsd.log
/var/log/pacemaker/pacemaker.log

/var/log/messages


- 만약 시작뿐만 아니라 종료 시에도 동일한 순서가 적용되길 원한다면, **symmetrical=true**로 설정합니다.
pcs constraint order start resource_A then resource_B kind=Mandatory symmetrical=true

- Pacemaker 클러스터에서 **colocation (위치 제약)**은 두 리소스가 같은 노드에 함께 실행되도록 강제하는 규칙입니다. pcs constraint colocation remove 명령어는 기존에 설정된 colocation 제약 조건을 제거할 때 사용됩니다.
pcs constraint colocation remove <source_resource> <target_resource>

이름 패스워드
비밀글 (체크하면 글쓴이만 내용을 확인할 수 있습니다.)
왼쪽의 글자를 입력하세요.
 

miwit.com sir.co.kr DNS Powered by DNSEver.com DNS Powered by DNSEver.com