Configurando um Cluster de alta disponibilidade no CentOS 7 — Hacluster, Pcmaker, Iscsi Storage

status do node ativo, aqui o node2 foi derrubado para testar a disponibilidade e replicação.

Para esse ambiente será necessário 3 servidores onde um dos NODES precisa ter 2 IPs alocados para que um deles sirva de Virtual IP para o CLuster do Apache

Estrutura do meu ambiente (Altere os IPs para os que você usará)

node1.fmlo.local — 172.31.15.38
node2.fmlo.local — 172.31.9.117
iscsi.fmlo.local — 172.31.11.189 (Este servidor deverá ter dois HDs)
Virtual IP: 172.31.15.39/20

1: No servidor ISCSI execute os comandos

yum update -y
yum install -y targetcli
yum install python-dbus -y
setenforce 0
echo “172.31.15.38 node1.fmlo.local node1” >> /etc/hosts
echo “172.31.9.117 node2.fmlo.local node2” >> /etc/hosts
echo “172.31.11.189 iscsi.fmlo.local iscsi” >> /etc/hosts
vi /etc/hostname
iscsi.fmlo.local
reboot

2: Nos NODES 1 e 2

yum update -y
yum install iscsi-initiator-utils -y
setenforce 0
echo “172.31.15.38 node1.fmlo.local node1” >> /etc/hosts
echo “172.31.9.117 node2.fmlo.local node2” >> /etc/hosts
echo “172.31.11.189 iscsi.fmlo.local iscsi” >> /etc/hosts
reboot

3: Em cada NODE separadamente altere o hostname para os respectivos

No meu caso:
node1.fmlo.local
node2.fmlo.local

4: Configurando o Disco no servidor ISCSI

fdisk -l
pvcreate /dev/xvdb (Dispositivo descoberto com o comando anterior)
vgcreate vg_iscsi /dev/xvdb
lvcreate -l 100%FREE -n lv_iscsi vg_iscsi

5: Criando o armazenamento compartilhado (Executar em ambos os NODES)

NODE1:
cat /etc/iscsi/initiatorname.iscsi
Saída: InitiatorName=iqn.1994–05.com.redhat:c816a239b598

NODE2:
cat /etc/iscsi/initiatorname.iscsi
Saída: InitiatorName=iqn.1994–05.com.redhat:7451d713b1

SERVIDOR ISCSI

targetcli
cd /backstores/block
create iscsi_shared_storage /dev/vg_iscsi/lv_iscsi
cd /iscsi/
/iscsi> create
Created target iqn.2003–01.org.linux-iscsi.iscsi.x8664:sn.81dc7254241f. (Guarde este TARGET pois ele será usado para se conectar através dos NODES)
/iscsi> cd iqn.2003–01.org.linux-iscsi.iscsi.x8664:sn.81dc7254241f
cd tpg1/acls
create iqn.1994–05.com.redhat:c816a239b598 (Altere pelo iqn exibido em seu NODE 1)
Created Node ACL for iqn.1994–05.com.redhat:c816a239b598
/iscsi/iqn.20…41f/tpg1/acls> create iqn.1994–05.com.redhat:7451d713b1 (Altere pelo iqn exibido em seu NODE 2)
Created Node ACL for iqn.1994–05.com.redhat:7451d713b1
/iscsi/iqn.20…41f/tpg1/acls> cd ..
/iscsi/iqn.20…7254241f/tpg1> cd luns
/iscsi/iqn.20…41f/tpg1/luns> create /backstores/block/iscsi_shared_storage
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.1994–05.com.redhat:7451d713b1
Created LUN 0->0 mapping in node ACL iqn.1994–05.com.redhat:c816a239b598
/iscsi/iqn.20…41f/tpg1/luns>
/iscsi/iqn.20…41f/tpg1/luns> cd /
/> saveconfig
Configuration saved to /etc/target/saveconfig.json
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup/.
Configuration saved to /etc/target/saveconfig.json

systemctl enable target
systemctl restart target

6: Descobrindo o armazenamento (Executar em ambos os NODES)

iscsiadm -m discovery -t st -p 172.31.11.189
iscsiadm -m node -T iqn.2003–01.org.linux-iscsi.iscsi.x8664:sn.81dc7254241f -p 172.31.11.189 -l
systemctl restart iscsid
systemctl enable iscsid

7: Verficar em ambos os NODES se o segundo disco foi exibido

fdisk -l

8: Criando um grupo de volumes para o Apache (Altere o dispositivo pelo que for exibido em seu NODE, execute os comandos apenas no NODE1)

pvcreate /dev/sdb
vgcreate vg_apache /dev/sdb
lvcreate -n lv_apache -l 100%FREE vg_apache
mkfs.ext4 /dev/vg_apache/lv_apache

9: Validando a replicação no NODE2

pvscan
vgscan
lvscan

Caso não seja exibido nada, reincie o servidor. Neste LAB descobri um bug no lvm e no iscsiadm.

10: Instalando o pcmaker (Execute em ambos os NODES)

yum install pcs fence-agents-all -y
passws hacluster
systemctl start pcsd
systemctl enable pcsd

11: Criando um Cluster de Alta Disponibilidade

pcs cluster auth node1.fmlo.local node2.fmlo.local

12: Criando um Cluster

pcs cluster setup — start — name fmlo_cluster node1.fmlo.local node2.fmlo.local
pcs cluster enable — all
pcs cluster status

Altere o fmlo_cluster pelo nome de sua preferência

13: Instalando o Apache em ambos os NODES

yum install -y httpd wget

14: Personalização do httpd.conf (Copie o código abaixo ao final do arquivo)

vi /etc/httpd/conf/httpd.conf
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>

15: Montando o grupo de volumes do Apache em um dos NODES

mount /dev/vg_apache/lv_apache /var/www/
mkdir /var/www/html
mkdir /var/www/cgi-bin
mkdir /var/www/error
restorecon -R /var/www
cat <<-END >/var/www/html/index.html
<html>
<body>Olá, Seja bem vindo. Essa página é provida pela Red Hat High Availability Cluster</body>
</html>
END
umount /var/www

15: Criando os recursos para o A

pcs resource create httpd_fs Filesystem device=”/dev/mapper/vg_apache-lv_apache” directory=”/var/www” fstype=”ext4" — group apache

16: Criando o recurso do IP Virtual

pcs resource create httpd_vip IPaddr2 ip=172.31.15.39 cidr_netmask=20 — group apache

17: Criando a alta disponibilidade para o Apache

pcs resource create httpd_ser apache configfile=”/etc/httpd/conf/httpd.conf” statusurl=”http://127.0.0.1/server-status" — group apache

18: Validando o status do pcs

pcs status

Após concluir tente desativar um dos NODES e faça o acesso ao Apache e veja se ele permanece online, caso sim, o cluster está funcionando perfeitamente.

19: Testando

pcs cluster stop node1.fmlo.local (Altere pelo nome do seu HOST)