Configurando um Cluster de alta disponibilidade no CentOS 7 — Hacluster, Pcmaker, Iscsi Storage
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:c816a239b598NODE2:
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.jsonsystemctl 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
lvscanCaso 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)