Bonding para Heartbeat + Bonding para DRBD + OCFS2 + Debian Squeeze
Bonding para Heartbeat + Bonding para DRBD + OCFS2 + Debian Squeeze.
Parte 3: 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
Agora vamos acertar a configuração do nosso IP compartilhado pelo Heartbeat:
# vim /etc/ha.d/haresources
Agora vamos acertar o arquivo com a senha de autenticação entre os Heartbeats:
# vim /etc/ha.d/authkeys
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
Agora no servidor slave (o srv02) vamos consultar os endereços IPs:
# ifconfig
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
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
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.
# 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
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.
muito bom mesmo