Setup of a simple RHEL8 cluster with pacemaker. * install 2 nodes with rhel8.4 * https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/configuring_and_managing_high_availability_clusters/index # following to be done on both nodes subscription-manager register subscription-manager list --all --available >allsubs.txt less allsubs.txt # choose right pool with HA subscription-manager subscribe --pool= subscription-manager repos --disable='*' \ --enable=rhel-8-for-x86_64-baseos-rpms \ --enable=rhel-8-for-x86_64-appstream-rpms \ --enable=rhel-8-for-x86_64-highavailability-rpms \ --enable=rhel-8-for-x86_64-resilientstorage-rpms # ensure /etc/hosts on both nodes has entries of both nodes echo '192.168.4.23 node2.local node2' >>/etc/hosts echo '192.168.4.22 node1.local node1' >>/etc/hosts yum install -y pcs pacemaker fence-agents-all systemctl enable --now pcsd echo -n redhat | passwd hacluster --stdin # execute only on first node pcs host auth node1.local node2.local pcs cluster setup my_cluster --start node1.local node2.local systemctl enable --now pcsd corosync pacemaker ### fencing # setup hypervisor as per # https://access.redhat.com/solutions/917833 # https://access.redhat.com/solutions/55920 pcs stonith list # At this point, we should have file /etc/cluster/fence_xvm.key # on both nodes. [root@node1 ~]# fence_xvm -o list ahub 75d52bd3-a5cb-429e-94e6-47c509c8f109 off atower e5692f79-1f68-4a62-96a4-37b3bfde2561 off fedora34c bd1538fa-b051-49b5-9f07-b7a57788fa8b off node1 87ebc6c6-3015-43a6-9c49-00044d8f3d7c on node2 a40a6534-4a8e-4e58-9f69-5e2b9b81615e on rhel7.9 4bba326d-08dc-4289-aa12-7f9f6c9f6a3e off rhel8.4 daf830c0-c947-4373-a10e-12e3b6c3fa84 off # https://www.golinuxcloud.com/what-is-fencing-configure-kvm-cluster-fencing/ pcs stonith create fence-node1 fence_xvm port=node1 pcmk_host_list=node1.local pcs stonith create fence-node2 fence_xvm port=node2 pcmk_host_list=node2.local pcs stonith status # shared disk, iscsi from hypervisor # as per https://fluxcoil.net/wiki/software/iscsi/target # ensure /etc/iscsi/initiatorname.iscsi on your nodes is different! md5sum /etc/iscsi/initi* systemctl enable --now iscsi iscsiadm --mode discovery --type sendtargets --portal 192.168.4.1 iscsiadm -m node --target iqn.2003-01.org.x:disk1 -p 192.168.4.1 -l # I have no other volume groups on both nodes, so have # this in /etc/lvm/lvm.conf on both nodes: auto_activation_volume_list = [] system_id_source = "uname" # at this point, both nodes should see a common /dev/sda # create a single partition, just to follow best practices: parted /dev/sda 'mklabel gpt' parted /dev/sda 'mkpart 1 2048s -1' pvcreate /dev/sda1 vgcreate httpd_vg /dev/sda1 lvcreate -L450 -n httpd_lv httpd_vg mkfs.ext4 /dev/httpd_vg/httpd_lv vgs --noheadings -o vg_name # should show the VG just on one node # then, rebuild initrd and reboot dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r) reboot # after coming up, cluster should have started already # pcs cluster start --all pcs status # This should show the nodename now in the VG: vgs -o+systemid # create LVM cluster resource pcs resource create my_lvm ocf:heartbeat:LVM-activate \ vgname=httpd_vg vg_access_mode=system_id --group apachegroup pcs resource status pcs status # gives complete status pcs resource move my_lvm node1.local # moves resource to node1