Post on 07-Feb-2016
description
Cenário
A configuração dos servidores, ambos com Sistema Operacional Debian 6 (Squeeze), é a seguinte:
Servidor:
/dev/sda1 – 5 GB - Primária
/dev/sda2 – 5GB – Primária
/ dev/sda5 – 5GB – Swap - Lógica
Espelho:
/dev/sda1 – 5 GB - Primária
/dev/sda2 – 5GB – Primária
/ dev/sda5 – 5GB – Swap - Lógica
Preparação:
Instale o Debian Squeeze e desmonte a partição criada para o espelhamento neste caso a /dev/sda2:
root@servidor:~# umount /cmsi
root@espelho:~# umount /cmsi
Comente no fstab a linha que monta a partição no boot, pois isso será controlado pelo DRBD:
root@servidor:~# nano /etc/fstab
root@espelho:~# nano /etc/fstab
Configurar as interfaces de rede:
root@servidor:~# cat /etc/network/interfaces
# The loopback network interfaceauto loiface lo inet loopback
# The primary network interface# Heartbeatauto eth0iface eth0 inet staticaddress 10.0.41.11netmask 255.255.255.0network 10.0.41.0
# drbd interfaceauto eth1iface eth1 inet staticaddress 192.168.0.1netmask 255.255.255.0network 192.168.0.0
root@espelho:~# cat /etc/network/interfaces
# The loopback network interfaceauto loiface lo inet loopback
# The primary network interface# Heartbeatauto eth0iface eth0 inet staticaddress 10.0.41.12netmask 255.255.255.0network 10.0.41.0
# drbd interfaceauto eth1iface eth1 inet staticaddress 192.168.0.2netmask 255.255.255.0network 192.168.0.0
DRBD
Instalação do DRBD:
root@servidor:~# apt-get install drbd-utils modprobe
root@espelho:~# apt-get install drbd-utils modprobe
root@servidor:~# modprobe drbd
root@espelho:~# modprobe drbd
Configurar os hosts pra responder o ping por nome:
root@servidor:~# nano /etc/hosts
127.0.0.1 localhost192.168.0.1 servidor192.168.0.2 espelho
root@espelho:~# nano /etc/hosts
127.0.0.1 localhost192.168.0.1 servidor192.168.0.2 espelho
Criar o recurso configurado no arquivo.res:
root@servidor:~# cat /etc/drbd.d/cmsi.res
root@espelho:~# cat /etc/drbd.d/cmsi.res
#/etc/drbd.d/cmsi.res# espelhamento resource cmsi {
protocol C;device /dev/drbd1 minor 1;disk /dev/sda2;meta-disk internal;# following 2 definition are equivalent
#node1on servidor {
address 192.168.0.1:7801;disk /dev/sda2;
}#node 2on espelho {
address 192.168.0.2:7801;disk /dev/sda2;
}# floating 192.168.5.41:7801;# floating 192.168.5.42:7801;net {
after-sb-0pri discard-younger-primary; #discard-zero-changes;after-sb-1pri discard-secondary;after-sb-2pri call-pri-lost-after-sb;
}}
Zerar a partição :
root@servidor:~# dd if=/dev/zero of=/dev/sda2 bs=1M count=1root@servidor:~# drbdadm -- --discard-my-data connect cmsi
root@espelho:~# dd if=/dev/zero of=/dev/sda2 bs=1M count=1 root@espelho:~# drbdadm -- --discard-my-data connect cmsi
Criar o disco virtual:
root@servidor:~# drbdadm create-md cmsi
root@espelho:~# drbdadm create-md cmsi
Levantar o espelhamento:
root@servidor~# # drbdadm up all
root@espelho:~# # drbdadm up all
Definir o primário:
root@servidor# drbdadm -- -o primary cmsi
Formatar a partição utilizada no espelhamento:
root@servidor:~# mkfs.ext3 /dev/drbd2
root@espelho:~# mkfs.ext3 /dev/drbd2
Inicializar o DRBD:
root@servidor:~# /etc/init.d/drbd start
root@espelho:~# /etc/init.d/drbd start
Verificar o serviço do DRBD:
root@servidor:~# cat /proc/drbd
1: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:524236
root@servidor:~# drbdadm -- --overwrite-data-of-peer primary cmsi
Colocar o Servidor como primário:
root@servidor:~# drbdadm primary all root@servidor:~# cat /proc/drbd
1: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r----ns:142564 nr:0 dw:0 dr:143048 al:0 bm:8 lo:16 pe:6 ua:25 ap:0 ep:1 wo:b oos:381836[====>...............] sync'ed: 27.4% (381836/524236)Kfinish: 0:00:34 speed: 11,016 (10,168) K/sec
Adicione no fstab:
root@servidor:~# nano /etc/fstab
root@espelho:~# nano /etc/fstab
Adicione a linha:
/dev/drbd1 /cmsi ext3 noauto 0 0
Realizando testes:
Monte a pasta no Servidor:
root@servidor:~# mount /cmsi
root@servidor:~# touch /cmsi/teste
root@servidor:~# umount /cmsi
root@servidor:~# drbdadm secondary all
root@espelho:~# drbdadm primary all
root@servidor:~# mount /cmsi
root@servidor:~# ls /cmsi
HEARTBEAT
Instalação:
root@servidor:~# apt-get install heartbeat
root@espelho:~# apt-get install heartbeat
Configurar o ha.cf
root@servidor:~# nano /etc/ha.d/ha.cf
root@espelho:~# nano /etc/ha.d/ha.cf
#/etc/ha.d/ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 10
warntime 10
initdead 20
udpport 694
bcast eth1
auto_failback on
node servidor
node espelho
Configurando o haresouces:
root@servidor:~# nano /etc/ha.d/haresources
root@espelho:~# nano /etc/ha.d/haresources
#/etc/há.d/haresourcesservidor drbddisk::cmsi 10.0.0.15 Filesystem::/dev/drbd1::/cmsi::ext3
Configurar o authkeys:
root@servidor:~# nano /etc/ha.d/authkeys
root@espelho:~# nano /etc/ha.d/authkeys
#/etc/ha.d/authkeys
auth 3
3 md5 senha
root@servidor~# chmod 600 /etc/ha.d/authkeys
root@espelho:~# chmod 600 /etc/ha.d/authkeys
Reinicie o Heartbeat:
root@servidor:~# /etc/init.d/heartbeat
root@espelho:~# /etc/init.d/heartbeat
Script de Monitoramento do Samba
Criando Script que chama o teste:
root@servidor:~# nano monitor.sh
#monitor.sh
#!/bin/bash
case $1 in
start)
echo “Starting Samba Monitoring”
/root/teste.sh &
;;
stop)
echo “Stoping Samba Monitoring”
killall teste.sh
;;
*)
echo "Use os parâmetros => Start|Stop"
esac
Criando Script de teste do funcionamento do Samba:
root@servidor:~# nano teste.sh
#teste.sh
#!/bin/bash
while [ "1"="1" ];do
DATA=`date +%y-%m-%d-%H-%m`
TMP1=`mktemp /tmp/arq1.XXXXXX`
TMP2=`mktemp /tmp/arq2.XXXXXX`
cat /proc/drbd > $TMP1
erro1=`cat $TMP1 | grep "Primary|Secondary"`
if [ -f $erro1 ];then
ps aux | grep "smbd" > $TMP2
erro2=`cat $TMP2 | grep "/usr/sbin/smbd"`
rm -f $TMP1 $TMP2
if [ -z "$erro2" ];then
echo ""
/etc/init.d/heartbeat stop
echo "O samba parou "+"$DATA" >> /root/monitor.log
exit 1
fi
fi
done
Adicione o monitor.sh ao rc.local para ser inicializado no boot:
root@servidor:~# nano /etc/rc.local
/etc/init.d/monitor.sh start
Copiar o monitor para o init.d:
root@servidor:~# cp /root/monitor /etc/init.d/
Pronto! Agora basta dar um rebooting e verificar antes do login a saída :
Starting Samba Monitoring
By Sthéfano Silva
TÉO