O
Pacemaker é um software open source que serve para gerenciar os recursos utilizados por computadores em clusters.
Instalando os pacotes nos dois nós:
# yum install pacemaker-cli.x86_64 pacemaker-cluster-libs.x86_64 pacemaker-cts.x86_64 pacemaker-libs.x86_64 pacemaker-libs-devel.x86_64 pacemaker-remote.x86_64 pacemaker.x86_64 pcs.x86_64
# yum install ccs.x86_64 clufter-lib-ccs.noarch cman.x86_64
# wget http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/network:ha-clustering:Stable.repo
# yum -y install crmsh
Há duas maneiras de configurar o Pacemaker. A primeira é usando o intérprete crmsh, iniciando o shell crm com o comando "crm", e em seguida, fornecendo frases de configuração. Por exemplo:
# crm
crm(live)#
help
crm(live)#
quit
Outra forma seria através do comando pcs e instruções CAC diretamente de uma tty linux em uma sessão bash. Vamos usar dessa forma para configurar o cluster, executando os comandos apenas no nó primário SRVP1.
Criando o cluster:
# ccs --file /etc/cluster/cluster.conf --createcluster zcsCluster
Adicionando os nós:
# ccs --file /etc/cluster/cluster.conf --addnode srvp1.linuxajuda.org
# ccs --file /etc/cluster/cluster.conf --addnode srvp2.linuxajuda.org
Definir as barreiras que serão acatadas pelo Pacemaker:
# ccs --file /etc/cluster/cluster.conf --addfencedev pcmk agent=fence_pcmk
# ccs --file /etc/cluster/cluster.conf --addmethod pcmk-redirect srvp1.linuxajuda.org
# ccs --file /etc/cluster/cluster.conf --addmethod pcmk-redirect srvp2.linuxajuda.org
# ccs --file /etc/cluster/cluster.conf --addfenceinst pcmk srvp1.linuxajuda.org pcmk-redirect port=srvp1.linuxajuda.org
# ccs --file /etc/cluster/cluster.conf --addfenceinst pcmk srvp2.linuxajuda.org pcmk-redirect port=srvp2.linuxajuda.org
Desabilitando o CMAN Quorum:
Isso permitirá que a função de cluster de apenas um nó fique up, e será necessário desabilitar em ambos os nós.
# echo "CMAN_QUORUM_TIMEOUT=0" >> /etc/sysconfig/cman
Vamos iniciar o cluster no nó primário, execute o comandos no srvp1:
# service pacemaker start
Agora copie o arquivo do cluster para o nó secundário:
# scp -p /etc/cluster/cluster.conf root@10.0.1.102:/etc/cluster/
Checando o status do Pacemaker:
# pcs status
# crm_mon -1
Você pode também checar as configurações atuais do cluster usando os comandos abaixo:
# pcs config
# pcs property
# crm configure show
Verificando a validade das configurações:
# crm_verify -L -V
Desabilitar o stonith para que ele não fique gerando erros:
# pcs property set stonith-enabled=false
Ignore a política do Quorum:
# pcs property set no-quorum-policy=ignore
Definindo as tentativas de reconexão:
# pcs resource defaults --force migration-threshold=1
Conjunto stickiness:
# pcs resource defaults --force resource-stickiness=100
A seguir usaremos o interpretador crmsh para criar os serviços do zimbra no cluster:
Adicionando o ip virtual ao cluster:
# pcs resource create VIP1 IPaddr2 ip=10.0.1.100 \
broadcast=10.0.1.255 nic=eth0 cidr_netmask=24 \
iflabel=VIP1 op monitor interval=30s timeout=30s
Definindo os recursos do DRBD no cluster:
# crm
# configure primitive drbd ocf:linbit:drbd params \
drbd_resource=optzimbra \
op monitor role=Master interval=60s \
op monitor role=Slave interval=50s \
op start role=Master interval=60s timeout=240s \
op start role=Slave interval=0s timeout=240s \
op stop role=Master interval=60s timeout=100s \
op stop role=Slave interval=0s timeout=100s
Definindo o clone dos dados DRBD do zimbra:
# configure ms drbd_ms drbd \
meta master-max=1 master-node-max=1 \
clone-max=2 clone-node-max=1 notify=true
Definindo os recursos dos serviços do Zimbra:
# configure primitive zcs_service ocf:btactic:zimbra \
op monitor interval=2min timeout="40s" \
op start interval="0" timeout="360s" \
op stop interval="0" timeout="360s"
Definindo os recursos dos arquivos de sistemas do Zimbra:
# configure primitive zcs_fs ocf:heartbeat:Filesystem params \
device="/dev/drbd0" directory="/opt/zimbra" fstype=ext4 \
op start interval=0 timeout=60s \
op stop interval="0" timeout="60"
Defina todos os recursos dos hosts:
# configure group zcsgroup zcs_fs zcs_service
# configure colocation VIP1-with-drbd_ms-Master \
inf: drbd_ms:Master VIP1
# configure colocation drbd_ms-Master-with-zcs_fs \
inf: zcs_fs drbd_ms:Master
# configure colocation zcs_fs-with-zcs_service \
inf: zcs_service zcs_fs
Organizar a ordem dos recursos do cluster:
# configure order drbd_ms-promote-on-VIP1 \
inf: VIP1:start drbd_ms:promote
# configure order zcs_fs-on-dbrb_ms-promote \
inf: drbd_ms:promote zcs_fs:start
# configure order zcs_service-on-zcs_fs \
inf: zcs_fs:start zcs_service:start
# commit
# quit
Depois de alguns testes deixei os arquivos de inicialização dessa forma e funcionou.
chkconfig corosync off
chkconfig cman on
chkconfig ricci off
chkconfig pacemaker on
chkconfig drbd off