Bonding para Heartbeat + Bonding para DRBD + OCFS2 + Debian Squeeze

Bonding para Heartbeat + Bonding para DRBD + OCFS2 + Debian Squeeze.

[ Hits: 39.195 ]

Por: Douglas Q. dos Santos em 25/08/2012 | Blog: http://wiki.douglasqsantos.com.br


Instalação e configuração do Heartbeat



Agora, vamos instalar o Heartbeat no srv02:

# aptitude update && aptitude dist-upgrade -y && apt-get install heartbeat heartbeat-dev -y

Vamos acertar a configuração do Heartbeat:

# vim /etc/ha.d/ha.cf

#informe os nomes dos computadores que formam a replicação(deve ser igual a saída do comando "uname -n
node srv01
node srv02

#qual a interface vai ser usada para comunicação
mcast bond0 225.0.0.1 694 1 0

#Fazer com que a máquina principal receba seus serviços quando retornar a ativa
auto_failback on

#arquivos de log
debugfile /var/log/ha-debug
logfile /var/log/ha-log

#frequência, em segundos, da verificação das máquinas
keepalive 1

#tempo mínimo para declarar a outra máquina como morta
deadtime 5


Agora vamos acertar a configuração do nosso IP compartilhado pelo Heartbeat:

# vim /etc/ha.d/haresources

srv01 IPaddr::10.101.0.27/24/bond0/10.101.0.255


Agora vamos acertar o arquivo com a senha de autenticação entre os Heartbeats:

# vim /etc/ha.d/authkeys

auth 3
3 md5 h34rt64t


Agora vamos acertar as permissões do arquivo de senha:

# chmod 600 /etc/ha.d/authkeys

Agora vamos reiniciar o Heartbeat nos dois servidores:

# /etc/init.d/heartbeat restart

Agora no servidor master (o srv01), vamos consultar os endereços IPs:

# ifconfig
bond0  Link encap:Ethernet Endereço de HW 08:00:27:3f:b0:b8
            inet end.: 10.101.0.25 Bcast:10.101.0.255 Masc:255.255.255.0
            endereço inet6: fe80::a00:27ff:fe3f:b0b8/64 Escopo:Link
            UP BROADCASTRUNNING MASTER MULTICAST MTU:1500 Métrica:1
            RX packets:258509 errors:0 dropped:0 overruns:0 frame:0
            TX packets:3510 errors:0 dropped:0 overruns:0 carrier:0
            colisões:0 txqueuelen:0

            RX bytes:30982551 (29.5 MiB) TX bytes:419737 (409.8 KiB)

bond0:0  Link encap:Ethernet Endereço de HW 08:00:27:3f:b0:b8
            inet end.: 10.101.0.27 Bcast:10.101.0.255 Masc:255.255.255.0
            UP BROADCASTRUNNING MASTER MULTICAST MTU:1500 Métrica:1

bond1   Link encap:Ethernet Endereço de HW 08:00:27:ff:cd:7c
            inet end.: 172.20.0.25 Bcast:172.20.0.2655 Masc:255.255.255.0
            endereço inet6: fe80::a00:27ff:feff:cd7c/64 Escopo:Link
            UP BROADCASTRUNNING MASTER MULTICAST MTU:1500 Métrica:1
            RX packets:249676 errors:0 dropped:0 overruns:0 frame:0
            TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
            colisões:0 txqueuelen:0
            RX bytes:19802934 (18.8 MiB) TX bytes:860 (860.0 B)

eth0    Link encap:Ethernet Endereço de HW 08:00:27:3f:b0:b8
           UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1
           RX packets:133706 errors:0 dropped:0 overruns:0 frame:0
           TX packets:1755 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:1000
           RX bytes:21086174 (20.1 MiB) TX bytes:213206 (208.2 KiB)

eth1    Link encap:Ethernet Endereço de HW 08:00:27:3f:b0:b8
           UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1
           RX packets:124803 errors:0 dropped:0 overruns:0 frame:0
           TX packets:1755 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:1000
           RX bytes:9896377 (9.4 MiB) TX bytes:206531 (201.6 KiB)

eth2    Link encap:Ethernet Endereço de HW 08:00:27:ff:cd:7c
           UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1
           RX packets:124844 errors:0 dropped:0 overruns:0 frame:0
           TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:1000
           RX bytes:9901912 (9.4 MiB) TX bytes:516 (516.0 B)

eth3    Link encap:Ethernet Endereço de HW 08:00:27:ff:cd:7c
           UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1
           RX packets:124832 errors:0 dropped:0 overruns:0 frame:0
           TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:1000
           RX bytes:9901022 (9.4 MiB) TX bytes:344 (344.0 B)

lo        Link encap:Loopback Local
           inet end.: 127.0.0.1 Masc:255.0.0.0
           endereço inet6: ::1/128 Escopo:Máquina
           UP LOOPBACKRUNNING MTU:16436 Métrica:1
           RX packets:2 errors:0 dropped:0 overruns:0 frame:0
           TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:0
           RX bytes:168 (168.0 B) TX bytes:168 (168.0 B)


Agora no servidor slave (o srv02) vamos consultar os endereços IPs:

# ifconfig
bond0  Link encap:Ethernet Endereço de HW 08:00:27:e4:58:4b
           inet end.: 10.101.0.26 Bcast:10.101.0.255 Masc:255.255.255.0
           endereço inet6: fe80::a00:27ff:fee4:584b/64 Escopo:Link
           UP BROADCASTRUNNING MASTER MULTICAST MTU:1500 Métrica:1
           RX packets:248388 errors:0 dropped:0 overruns:0 frame:0
           TX packets:3842 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:0
           RX bytes:30223554 (28.8 MiB) TX bytes:472655 (461.5 KiB)

bond1  Link encap:Ethernet Endereço de HW 08:00:27:d2:4e:60
           inet end.: 172.20.0.26 Bcast:172.20.0.2655 Masc:255.255.255.0
           endereço inet6: fe80::a00:27ff:fed2:4e60/64 Escopo:Link
           UP BROADCASTRUNNING MASTER MULTICAST MTU:1500 Métrica:1
           RX packets:239819 errors:0 dropped:0 overruns:0 frame:0
           TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:0
           RX bytes:19101060 (18.2 MiB) TX bytes:720 (720.0 B)

eth0    Link encap:Ethernet Endereço de HW 08:00:27:e4:58:4b
           UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1
           RX packets:128628 errors:0 dropped:0 overruns:0 frame:0
           TX packets:1924 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:1000
           RX bytes:20708154 (19.7 MiB) TX bytes:241140 (235.4 KiB)

eth1    Link encap:Ethernet Endereço de HW 08:00:27:e4:58:4b
           UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1
           RX packets:119760 errors:0 dropped:0 overruns:0 frame:0
           TX packets:1918 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:1000

           RX bytes:9515400 (9.0 MiB) TX bytes:231515 (226.0 KiB)

eth2    Link encap:Ethernet Endereço de HW 08:00:27:d2:4e:60
           UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1
           RX packets:119916 errors:0 dropped:0 overruns:0 frame:0
           TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:1000
           RX bytes:9551043 (9.1 MiB) TX bytes:418 (418.0 B)

eth3    Link encap:Ethernet Endereço de HW 08:00:27:d2:4e:60
           UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1
           RX packets:119903 errors:0 dropped:0 overruns:0 frame:0
           TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:1000
           RX bytes:9550017 (9.1 MiB) TX bytes:302 (302.0 B)

lo        Link encap:Loopback Local
           inet end.: 127.0.0.1 Masc:255.0.0.0
           endereço inet6: ::1/128 Escopo:Máquina
           UP LOOPBACKRUNNING MTU:16436 Métrica:1
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:0
           RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)


Como pode ser notado, temos o IP 10.101.0.27/24 no servidor srv01, que é o master. Agora vamos fazer um teste: vamos deslitar o servidor srv01:

# telinit 0

Agora no servidor srv02 vamos consultar os endereços IPs:

# ifconfig
bond0  Link encap:Ethernet Endereço de HW 08:00:27:e4:58:4b
           inet end.: 10.101.0.26 Bcast:10.101.0.255 Masc:255.255.255.0
           endereço inet6: fe80::a00:27ff:fee4:584b/64 Escopo:Link
           UP BROADCASTRUNNING MASTER MULTICAST MTU:1500 Métrica:1
           RX packets:251625 errors:0 dropped:0 overruns:0 frame:0
           TX packets:3959 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:0
           RX bytes:30524354 (29.1 MiB) TX bytes:499147 (487.4 KiB)

bond0:0  Link encap:Ethernet Endereço de HW 08:00:27:e4:58:4b
           inet end.: 10.101.0.27 Bcast:10.101.0.255 Masc:255.255.255.0
           UP BROADCASTRUNNING MASTER MULTICAST MTU:1500 Métrica:1

bond1  Link encap:Ethernet Endereço de HW 08:00:27:d2:4e:60
           inet end.: 172.20.0.26 Bcast:172.20.0.2655 Masc:255.255.255.0
           endereço inet6: fe80::a00:27ff:fed2:4e60/64 Escopo:Link
           UP BROADCASTRUNNING MASTER MULTICAST MTU:1500 Métrica:1
           RX packets:243159 errors:0 dropped:0 overruns:0 frame:0
           TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:0
           RX bytes:19424314 (18.5 MiB) TX bytes:720 (720.0 B)

eth0    Link encap:Ethernet Endereço de HW 08:00:27:e4:58:4b
           UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1
           RX packets:130251 errors:0 dropped:0 overruns:0 frame:0
           TX packets:1982 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:1000
           RX bytes:20859033 (19.8 MiB) TX bytes:252852 (246.9 KiB)

eth1    Link encap:Ethernet Endereço de HW 08:00:27:e4:58:4b
           UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1
           RX packets:121374 errors:0 dropped:0 overruns:0 frame:0
           TX packets:1977 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:1000
           RX bytes:9665321 (9.2 MiB) TX bytes:246295 (240.5 KiB)

eth2    Link encap:Ethernet Endereço de HW 08:00:27:d2:4e:60
           UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1
           RX packets:121586 errors:0 dropped:0 overruns:0 frame:0
           TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:1000
           RX bytes:9712670 (9.2 MiB) TX bytes:418 (418.0 B)

eth3    Link encap:Ethernet Endereço de HW 08:00:27:d2:4e:60
           UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1
           RX packets:121573 errors:0 dropped:0 overruns:0 frame:0
           TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:1000
           RX bytes:9711644 (9.2 MiB) TX bytes:302 (302.0 B)

lo        Link encap:Loopback Local
           inet end.: 127.0.0.1 Masc:255.0.0.0
           endereço inet6: ::1/128 Escopo:Máquina
           UP LOOPBACKRUNNING MTU:16436 Métrica:1
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:0
           RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)


Note que o endereço IP 10.101.0.27/24, já foi atribuido ao servidor srv02, pois ele é o slave; então, caso o cliente esteja conectado em algum serviço, ele não vai notar quando trocar de servidor.

Agora vamos ligar novamente o servidor srv01 e consultar novamente:

# ifconfig
bond0  Link encap:Ethernet Endereço de HW 08:00:27:3f:b0:b8
           inet end.: 10.101.0.25 Bcast:10.101.0.255 Masc:255.255.255.0
           endereço inet6: fe80::a00:27ff:fe3f:b0b8/64 Escopo:Link
           UP BROADCASTRUNNING MASTER MULTICAST MTU:1500 Métrica:1
           RX packets:3314 errors:0 dropped:0 overruns:0 frame:0
           TX packets:244 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:0
           RX bytes:292621 (285.7 KiB) TX bytes:33465 (32.6 KiB)

bond0:0  Link encap:Ethernet Endereço de HW 08:00:27:3f:b0:b8
           inet end.: 10.101.0.27 Bcast:10.101.0.255 Masc:255.255.255.0
           UP BROADCASTRUNNING MASTER MULTICAST MTU:1500 Métrica:1

bond1  Link encap:Ethernet Endereço de HW 08:00:27:ff:cd:7c
           inet end.: 172.20.0.25 Bcast:172.20.0.2655 Masc:255.255.255.0
           endereço inet6: fe80::a00:27ff:feff:cd7c/64 Escopo:Link
           UP BROADCASTRUNNING MASTER MULTICAST MTU:1500 Métrica:1
           RX packets:3255 errors:0 dropped:0 overruns:0 frame:0
           TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:0
           RX bytes:289268 (282.4 KiB) TX bytes:258 (258.0 B)

eth0    Link encap:Ethernet Endereço de HW 08:00:27:3f:b0:b8
           UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1
           RX packets:1732 errors:0 dropped:0 overruns:0 frame:0
           TX packets:122 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:1000
           RX bytes:157391 (153.7 KiB) TX bytes:15755 (15.3 KiB)

eth1    Link encap:Ethernet Endereço de HW 08:00:27:3f:b0:b8
           UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1
           RX packets:1582 errors:0 dropped:0 overruns:0 frame:0
           TX packets:122 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:1000
           RX bytes:135230 (132.0 KiB) TX bytes:17710 (17.2 KiB)

eth2    Link encap:Ethernet Endereço de HW 08:00:27:ff:cd:7c
           UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1
           RX packets:1628 errors:0 dropped:0 overruns:0 frame:0
           TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:1000
           RX bytes:144673 (141.2 KiB) TX bytes:180 (180.0 B)

eth3    Link encap:Ethernet Endereço de HW 08:00:27:ff:cd:7c
           UP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 Métrica:1
           RX packets:1627 errors:0 dropped:0 overruns:0 frame:0
           TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:1000
           RX bytes:144595 (141.2 KiB) TX bytes:78 (78.0 B)

lo        Link encap:Loopback Local
           inet end.: 127.0.0.1 Masc:255.0.0.0
           endereço inet6: ::1/128 Escopo:Máquina
           UP LOOPBACKRUNNING MTU:16436 Métrica:1
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
           colisões:0 txqueuelen:0
           RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)


Note que o IP compartilhado voltou para o servidor srv01, pois definimos ele como master.

A primeira parte já está OK, que era garantir um IP compartilhado que vai ser utilizado pelo cliente.

Pense que no servidor srv01, temos um site rodando, e este site está também no servidor srv02, com isso, o cliente vai acessar o: http://10.101.0.27

...E vai para o servidor master disponível, que em nosso caso, vai ser o srv01.

Caso o master caia, o cliente vai acessar as páginas que estão no servidor srv02, e nem vai sentir que ele está acessando outro servidor. ;)

Mas, note que ainda temos um problema: os dados têm que ser sincronizados manualmente entre os servidores, por isso que vamos utilizar agora o DRBD + OCFS2, que vai trabalhar como um RAID 1 via rede, espelhando os dados em tempo real.

Então, caso seja alterado um arquivo qualquer na partição do DRBD, o outro servidor já vai ter acesso a essas novas informações. Aqui vou utilizar o OCFS2, que é um sistema de arquivos distribuido, onde podemos trabalhar com os nodos sendo !master/master, ou seja, qualquer um dos servidores podem alterar qualquer arquivo, e esse arquivo vai aparecer alterado para a outra ponta.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Instalação e configuração do Bond
   3. Instalação e configuração do Heartbeat
   4. Instalação e configuração do DRBD + OCFS2
   5. Plus de Heartbeat
Outros artigos deste autor

Apache em chroot + MySQL + PHP + mod_security + mod_evasive + vsftpd + Fail2ban + Debian Squeeze

Alta disponibilidade com Debian Lenny + Heartbeat + DRBD8 + OCFS2 + MONIT + LVS

IDS com Snort + Guardian + Debian Lenny

Um pouco sobre IPtables

Servidor Jabber com Openfire + MySQL + Debian Lenny

Leitura recomendada

GNU/Linux, um projeto de sucesso (parte 1)

Uma geral pela configuração pós-instalação do Slackware

Como conheci o GNU/Linux

O que é Orientação a Objeto - Mais uma tentativa

Integração MRTG e RRDTool

  
Comentários
[1] Comentário enviado por danniel-lara em 25/08/2012 - 13:57h

Parabéns pelo artigo
muito bom mesmo

[2] Comentário enviado por rafael.mendes em 31/08/2012 - 19:21h

excelente artigo!!!

[3] Comentário enviado por tborri em 20/02/2013 - 23:42h

Parabéns pelo artigo, encontrei alguns problemas estou utilizando Debian Squeeze 6.0.6
1º os módulos cn e drbd não carregavam tive que adicionar manual em
# /etc/modules
cn
drbd

2º quando carrega dava erro no mount.ocfs2 /etc/fstab
resolvi com estes cabeçalhos dos scripts
drbd

# /etc/init.d/drbd
# Default-Start: 2 3 4 5

o2cb

#!/bin/bash
# init fragment for O2CB.
#
# chkconfig: 2345 24 20
# description: Load O2CB cluster services at system boot.
#
### BEGIN INIT INFO
# Provides: o2cb
# Required-Start: $local_fs $network $syslog drbd
# Required-Stop: $local_fs $network $syslog drbd
# Should-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Load O2CB cluster services at system boot.
# Description: Load O2CB cluster services at system boot.
### END INIT INFO

ocfs2

#! /bin/bash
# Copyright (c) 2005 Oracle
# All rights reserved.
#
# chkconfig: 2345 25 19
# description: Mount OCFS2 volumes at boot.
#
### BEGIN INIT INFO
# Provides: ocfs2
# Required-Start: $local_fs $network $syslog o2cb
# Required-Stop: $local_fs $network $syslog o2cb
# X-UnitedLinux-Should-Start:
# X-UnitedLinux-Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Mount OCFS2 volumes at boot.
# Description: Mount OCFS2 volumes at boot.
### END INIT INFO

e a ordem de inicialização dos serviços continuaram a mesma

insserv -r -v ocfs2
insserv -r -v o2cb
insserv -r -v drbd

depois

insserv -f -v drbd
insserv -f -v o2cb
insserv -f -v ocfs2

e tudo funcionando, parabéns mais uma vez pelo artigo!!!

[4] Comentário enviado por Jonatas_rc2 em 04/06/2013 - 16:08h

Douglas,

Parabéns pelo artigo. Mas se possível me tire uma dúvida:

É possível fazer essa solução funcionar em um servidor Linux que tenha uma aplicação web? exemplo..

No meu trabalho tem um linux com o apache tomcat, e esse teu artigo me abriu os olhos quanto a isso. Tenho pouca experiência com Linux. Mas é possível?


Grato

[5] Comentário enviado por douglas_dksh em 06/06/2013 - 10:07h

Cara você pode sim.

Eu tenho isso implementado em alguns clientes, para servidores web, email e outros.

Não sei como você está fazendo a instalação do tomcat eu sempre faço pelos binários que baixo não instalo por pacotes, se fizer assim é so colocar o tomcat no drbd e fazer os clientes utilizarem o endereço ip do heartbeat.

qualquer coisa tem mais algumas coisas no meu site www.douglas.wiki.br

[6] Comentário enviado por rafaelmcosta em 20/10/2013 - 13:10h

Muito bom o artigo.

Uma duvida, pq vc coloca o default start do drbd assim?

/etc/init.d/drbd

# Deixe a opção Default-Start como abaixo
# Default-Start: S

Teve algum problema ao deixar 2 3 4 5?

Outra coisa, a montagem pelo /etc/fstab foi sem problemas? Aqui sempre reclama, uma vez que o DRBD e OCFS2 sobem depois.

[7] Comentário enviado por bruno-debian em 03/02/2014 - 16:51h

Muito F***. Me ajudou muito fera ! Obrigado por compartilhar !

[8] Comentário enviado por wagnerfs em 21/08/2014 - 10:34h

Parabéns pelo artigo e por difundir o conhecimento.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts