fagneralves
(usa Ubuntu)
Enviado em 29/11/2015 - 08:00h
High Avaliability Cluster - SAMBA
Samba + Pacemaker + Drbd with centos 6.7
Cenário: implementar Samba para compartilhar arquivos entre Windows/Linux em alta disponibilidade.
2 nodes
4 partições: 2 para centos em cada nó e 2 para o Drbd em cada nó
Efetuar nos dois nós
Instando e configurando pacemaker
#yum install pacemaker pcs cman
“Depois da instalação dos pacotes, um novo usuário chamado hacluster foi criado. Este usuário é usado para sincronização da configuração e gerenciamento dos serviços nos nós. É necessário definir a mesma senha em todos os servidores”
#passwd hacluster
Configurar os nós no arquivo /etc/hosts
#vim /etc/host
192.168.0.2 node1
192.168.0.3 node2
Autenticar usuário “hacluster” para que comandos executados em qualquer nó do cluster sejam replicados
#pcs cluster auth node1 node2
Criando o cluster
# pcs cluster setup –start –name NOME DO CLUSTER node1 node2
Exemplo:
#pcs cluster setup –start –name samba node1 node2
node1: Updated cluster.conf...
node2: Updated cluster.conf...
Starting cluster on nodes: node1, node2...
node1: Starting Cluster...
node2: Starting Cluster...
Para ambientes de testes e que não possuem infra para suportar o STONITH é recomendado desativar
# pcs property set stonith-enabled=false
após verificar se o cluster está online com o comando “pcs status” você cria o ip virtual para o cluster
criando o recurso IPVIP com ip virtual: 192.168.0.1 e mascara de subrede /24 em CIDR
# pcs resource create IPVIP IPaddr2 ip=192.168.0.1 cidr_netmask=24
Já é possivel testar o IPVIP efetuando ping de um cliente
# ping 192.168.0.1
Resposta de 192.168.0.1: bytes=32 tempo=46ms TTL=54
Criando o recurso SAMBA e adicionando ao cluster
# yum install samba samba-cliente samba-common
#pcs resource create samba lsb:smb
É possível organizar os recursos para que sempre rodem juntos, onde caso um nó pare de funcionar o outro assumirá com todos serviços, para que não ocorra de um serviço rode no nó1 e outro no nó2
#pcs constraint colocation add IPVIP samba INFINITY
Testando, verifique se ao mover um recurso o segundo irá seguir o mesmo destino
# pcs resource move IPVIP node1
#pcs resource move samba node2
Instalando e configurando DRBD nos dois nós
# rpm --import
https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh
http://www.elrepo.org/elreporelease-6-6.el6.elrepo.noarch.rpm
# yum install drbd84-utils kmod-drbd84
Particionar o disco de cada nó que irá participar da replicação no DRBD
Crie o seguinte arquivo
# vim /etc/drbd.d/drbd0.res
resource drbd0 { * nome do recurso
disk /dev/sdb1; * sdb1 é a partição do disco que participara da replicação
device /dev/drbd0; * recurso
meta-disk internal;
Protocol C;
on node1 {
address 192.168.0.2:7789;
}
on node2 {
address 192.168.0.3:7789;
}
}
Executar esse comando nos dois nós para que o volume drbd0 inicie e fique ativo
#drbdadm create-md drbd0
....
#drbdadm up drbd0
Caso ocorram erros na sincronização do Drbd entre os nós, nó ficar como primário e/ou não identificar o secundário como abaixo:
*******************************************
# cat /proc/drbd
version: 8.4.6 (api:1/proto:86-101)
GIT-hash: 833d830e0152d1e457fa7856e71e11248ccf3f70
build by phil@Build64R6, 2015-04-09 14:35:00
0: 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:f oos:1048220
********************************************
Verifique se está ocorrendo split-brain e resolva com os comandos abaixo
#drbdadm disconnect drbd0
#drbdadm secondary drbd0
#drbdadm connect –discard-my-data drbd0
#drbdadm connect drbd0
Verifique com:
#drbd-overview
#cat /proc/drbd
podemos efetuar as configurações através de CIB que o pcs permite enfileirar vários comandos e depois executados de uma vez.
#pcs cluster cib drbd_config
#pcs -f drbd_config resource create DrbdVol ocf:linbit:drbd drbd_resource=drbd0 op monitor interval=60s
#pcs -f drbd_config resource master DrbdVolClone DrbdVol master-max=1 master-node-max=1 clonemax=2 clone-node-max=1 notify=true
Verifique as configurações e caso estejam certas, execute o cib-push
#pcs –f drbd_config resource show
#pcs cluster cib-push drbd_config
Adicionar ao FS partição que será replicada entre os nós
Para que todas configurações do samba sejam replicadas, vamos fazer um link do diretório criado para o diretório criado automaticamente após a instalação do samba.
• Efetuar no nó que está como primário no drbd, pode se verificar com o comando drbd-overview
Criando diretorio
mkdir /opt/samba
copiando originais para o novo diretório
cp /etc/samba/* /opt/samba
apagando diretório antigo
rm –rf /etc/samba
criando link do novo para o antigo
ln –s /opt/samba/ /etc/samba/
configurando o FS
#pcs cluster cib fs_config
#pcs -f fs_config resource create DrbdFS Filesystem device="/dev/drbd0" directory="/opt/samba" fstype="ext3"
Definindo qual recurso iniciar primeiro no cluster
#pcs -f fs_config constraint colocation add DrbdFS DrbdVolClone INFINITY with-rsc-role=Master
#pcs -f fs_config constraint order promote DrbdVolClone then start DrbdFS
Definindo o samba para se funcionar em paralelo ao DrbdFS
#pcs -f fs_config constraint colocation add samba DrbdFS INFINITY
Definindo que o DrbdFS sera executar primeiro
#pcs -f fs_config constraint order DrbdFS then samba
#pcs cluster cib-push fs_config
após isso você pode verificar o funcionamento do samba em HA:
pcs status : todos serviços devem está start em 1 unico nó
- caso algum serviço apresente erro, você pode retirar do cluster "pcs resource delete "recurso" e tentar inserir novamente.
drbd-overview : verifique se o drbd está up/up e sem spli brain
fontes:
http://www.madeira.eng.br/wiki/index.php?page=Sistemas+Distribu%C3%ADdos
pacemaker.org