===== HA with CentOS and RedHat and like =====
==== Environment ====
Install two servers with one IP virtual and shared storage:
{{::diagramahadb2.png|}}
* Server1: **ext1** with IP **192.168.122.113**
* Server2: **ext2** with IP **192.168.122.53**
* IP virtual: **192.168.122.70**
* Shared storage on device **/dev/sda** mounted on **/home/db2**
* HA user named hacluster with password manager
Tested on CentOS 7.5. Some exceptions for testing on RHEL 7.3.
==== Install software ====
On both nodes:
Configure **/etc/hosts**:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.122.113 ext1
192.168.122.53 ext2
192.168.122.70 ext
Install and enable pacemaker:
$ sudo yum install pcs fence-agents-all -y
$ sudo systemctl disable firewalld
$ sudo systemctl stop firewalld
$ sudo passwd hacluster
$ sudo systemctl start pcsd.service
$ sudo systemctl enable pcsd.service
$ sudo lvmconf --enable-halvm --services --startstopservices
If you prefer get working the firewall:
$ sudo firewall-cmd --permanent --add-service=high-availability
$ sudo firewall-cmd --add-service=high-availability
If you are using RHEL you must enable HighAvailability.
If you receive this message:
Unit lvm2-cluster-activation.service could not be found.
Failed to execute operation: No such file or directory
Failed to stop lvm2-cluster-activation.service: Unit lvm2-cluster-activation.service not loaded.
Use this steps:
$ sudo lvmconf --enable-halvm
$ sudo systemctl disable lvm2-lvmetad
$ sudo systemctl stop lvm2-lvmetad
On one node:
Create one partition with fdisk and configure a physical group, a volume group and logical volume:
$ sudo pcs cluster auth ext1 ext2
$ sudo pcs cluster setup --start --name baccluster ext1 ext2
$ sudo pcs cluster enable --all
$ sudo fdisk /dev/sda
$ sudo pvcreate /dev/sda1
$ sudo vgcreate bacvg /dev/sda1
$ sudo lvcreate -L10G -n baclv bacvg
$ sudo mkfs.ext4 /dev/mapper/bacvg-baclv
Edit **/etc/lvm/lvm.conf** and create or modify the line //volume_list = [ ]//, add all the vg that are outside the shared storage, in our case all except bacvg. For example: //volume_list = [ "centos" , "otro" ]//
Execute on both nodes:
$ sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
On the other node:
$ sudo partprobe
$ sudo pvscan
$ sudo vgscan
$ sudo lvscan
Validate that you can see the logical volume created on the other server.
Reboot both nodes.
On one node:
$ sudo pcs resource create bacip IPaddr2 ip=192.168.122.70 cidr_netmask=24 --group bacgroup
$ sudo pcs resource create baclvm LVM volgrpname=bacvg exclusive=true --group bacgroup
$ sudo pcs resource create bacfs Filesystem device="/dev/mapper/bacvg-baclv" directory="/home/db2/" fstype="ext4" --group bacgroup
$ sudo pcs property set stonith-enabled=false
$ sudo pcs property set no-quorum-policy=ignore
You can get cluster status with:
$ sudo pcs status
You can migrate resources between nodes
$ sudo pcs resource move bacgroup ext2
If the resources migrates automatically to the node that you moved all resources, remove the location contraint with:
$ sudo pcs resource clear bacgroup
==== Monitoring resources ====
The cluster can starts automatically resources if was stopped, this can be OK or not. If you want that the cluster doesn't monitor resources use this command to create it:
pcs resource create bachttpd systemd:httpd op monitor enabled=false --group bacgroup
If the resource was created update it:
pcs resource update bachttpd op monitor enabled=false
==== References ====
* https://www.itzgeek.com/how-tos/linux/centos-how-tos/configure-high-avaliablity-cluster-on-centos-7-rhel-7.html
* https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/high_availability_add-on_administration/index
* http://clusterlabs.org/pacemaker/doc/en-US/Pacemaker/1.1/html/Clusters_from_Scratch/_move_resources_manually.html
==== Icon credits ====
* https://www.flaticon.com/authors/nhor-phai
* https://www.flaticon.com/authors/smashicons
* http://www.freepik.com
* https://www.flaticon.com/authors/twitter