{"id":423,"date":"2013-03-08T18:57:27","date_gmt":"2013-03-08T21:57:27","guid":{"rendered":"http:\/\/www.viazap.com.br\/?p=423"},"modified":"2013-03-08T18:57:28","modified_gmt":"2013-03-08T21:57:28","slug":"bonding-para-heartbeat-bonding-para-drbd-ocfs2-debian-squeeze","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=423","title":{"rendered":"Bonding para Heartbeat + Bonding para DRBD + OCFS2 + Debian Squeeze"},"content":{"rendered":"<table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"3\">\n<tbody>\n<tr>\n<td colspan=\"2\"><b>Introdu\u00e7\u00e3o<\/b><\/p>\n<div>E a\u00ed, galera.<\/p>\n<p>Aqui vou abordar a configura\u00e7\u00e3o de <em>Bonding<\/em> para termos a redund\u00e2ncia de interfaces f\u00edsicas para o servi\u00e7o de HA, pois o <em>Heartbeat<\/em> vai trabalhar no bond0 e o DRBD + OCFS2, vai trabalhar no bond1.<\/p>\n<p>Estou utilizando o algoritmo <em>round-robin<\/em>, que faz o balanceamento dos dados, por\u00e9m, temos outros algoritmos que podemos utilizar para o mesmo fim.<\/p>\n<p>Quero ganhar disponibilidade do servidor e aumentar a performance de acesso \u00e0 rede, onde temos, \u00e0s vezes, gargalos como no servi\u00e7o do DRBD, que \u00e9 um RAID 1 via rede.<\/p>\n<p>Como vai funcionar: aqui vamos agrupar 2 interfaces para montar um bond para o Heartbeat e agrupar as outras 2 interfaces para montar o bond para o DRBD.<\/p>\n<p>Caso caia alguma das interfaces por causa de algum problema de hardware, o servidor vai continuar funcionando, pois temos uma interface de &#8220;Backup&#8221; trabalhando, caso as duas estejam funcionando, vamos fazer o balanceamento de carga entre elas e, com isso, melhorando a performance.<\/p>\n<p>Prepare o seu sistema com o seguinte script, para que n\u00e3o falte nenhum pacote ou configura\u00e7\u00e3o:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.douglas.wiki.br\/export\/09e23917310cb100f49ae585b8bf84da2d16e106\/trunk\/ConfInicialSqueeze.sh\">http:\/\/www.douglas.wiki.br\/export\/trunk\/ConfInicialSqueeze.sh<\/a><\/li>\n<\/ul>\n<h1>Pr\u00e9-requisitos<\/h1>\n<ul>\n<li>Nome Nodo1: srv01<\/li>\n<li>IP DMZ: 10.101.0.25\/24 -&gt; VLAN DMZ<\/li>\n<li>IP DMZ HA: 10.101.0.27\/24 -&gt; VLAN DMZ<\/li>\n<li>IP Dados: 172.20.0.25\/24 -&gt; VLAN Dados<\/li>\n<li>Interfaces de rede: eth0, eth1, eth2, eth3<\/li>\n<li>Parti\u00e7\u00e3o utilizada Nodo1: \/dev\/sdb1 dispositivo com 8 GB<\/li>\n<li>Nome Nodo2: srv02<\/li>\n<li>IP DMZ: 10.101.0.26\/24 -&gt; VLAN DMZ<\/li>\n<li>IP DMZ HA: 10.101.0.27\/24 -&gt; VLAN DMZ<\/li>\n<li>IP Dados: 172.20.0.26\/24 -&gt; VLAN Dados<\/li>\n<li>Interfaces de rede: eth0, eth1, eth2, eth3<\/li>\n<li>Parti\u00e7\u00e3o utilizada Nodo2: \/dev\/sdb1 dispositivo com 8 GB<\/li>\n<\/ul>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>Instala\u00e7\u00e3o e configura\u00e7\u00e3o do Bond<\/b><\/p>\n<div>Agora, vamos mandar atualizar os reposit\u00f3rios e instalar os pacotes para o bond no servidor srv01:<\/p>\n<p><strong># aptitude update &amp;&amp; aptitude install ifenslave ethtool -y<\/strong><\/p>\n<p>Agora vamos acertar a configura\u00e7\u00e3o dos m\u00f3dulos do kernel:<\/p>\n<p><strong># echo &#8220;options bonding mode=0 miimon=100&#8221; &gt;&gt; \/etc\/modprobe.d\/bonding.conf<\/strong><\/p>\n<p>Vamos verificar se todas as interfaces est\u00e3o com link:<\/p>\n<p><strong># mii-tool<\/strong><\/p>\n<p>Sa\u00edda:<\/p>\n<blockquote><p>eth0: no autonegotiation, 1000baseT-FD flow-control, link ok<br \/>\neth1: no autonegotiation, 1000baseT-FD flow-control, link ok<br \/>\neth2: no autonegotiation, 1000baseT-FD flow-control, link ok<br \/>\neth3: no autonegotiation, 1000baseT-FD flow-control, link ok<\/p><\/blockquote>\n<p>Agora, vamos acertar a configura\u00e7\u00e3o de rede para o bonding:<\/p>\n<p><strong># vim \/etc\/network\/interfaces<\/strong><\/p>\n<p>Edite:<\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_54698\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>#Interface de loopback<\/code><\/div>\n<div><code>auto lo<\/code><\/div>\n<div><code>iface lo inet loopback<\/code><\/div>\n<div><\/div>\n<div><code>#Interface de bonding para DMZ<\/code><\/div>\n<div><code>auto bond0<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>iface bond0 inet static<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>address 10.101.0.25<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>netmask 255.255.255.0<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>network 10.101.0.0<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>gateway 10.101.0.254<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>bond-slaves eth0 eth1<\/code><\/div>\n<div><\/div>\n<div><code>#Interface de bonding para Dados<\/code><\/div>\n<div><code>auto bond1<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>iface bond1 inet static<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>address 172.20.0.25<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>netmask 255.255.255.0<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>network 172.20.0.0<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>bond-slaves eth2 eth3<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Agora, precisamos reiniciar o servidor:<\/p>\n<p><strong># reboot<\/strong><\/p>\n<p>E vamos listar as nossas interfaces, para verificar se subiu o bond e os endere\u00e7os IPs:<\/p>\n<p><strong># ifconfig<\/strong><\/p>\n<p>A sa\u00edda seria:<\/p>\n<blockquote><p>bond0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:3f:b0:b8<br \/>\ninet end.: 10.101.0.25 Bcast:10.101.0.255 Masc:255.255.255.0<br \/>\nendere\u00e7o inet6: fe80::a00:27ff:fe3f:b0b8\/64 Escopo:Link<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:12604 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:265 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:1088563 (1.0 MiB) TX bytes:42992 (41.9 KiB)<\/p>\n<p>bond1\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:ff:cd:7c<br \/>\ninet end.: 172.20.0.25 Bcast:172.20.0.2655 Masc:255.255.255.0<br \/>\nendere\u00e7o inet6: fe80::a00:27ff:feff:cd7c\/64 Escopo:Link<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:12260 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:6 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:1050542 (1.0 MiB) TX bytes:440 (440.0 B)<\/p>\n<p>eth0\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:3f:b0:b8<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:6478 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:132 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:563560 (550.3 KiB) TX bytes:22857 (22.3 KiB)<\/p>\n<p>eth1\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:3f:b0:b8<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:6126 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:133 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:525003 (512.6 KiB) TX bytes:20135 (19.6 KiB)<\/p>\n<p>eth2\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:ff:cd:7c<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:6134 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:3 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:525539 (513.2 KiB) TX bytes:278 (278.0 B)<\/p>\n<p>eth3\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:ff:cd:7c<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:6126 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:3 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:525003 (512.6 KiB) TX bytes:162 (162.0 B)<\/p>\n<p>lo\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Link encap:Loopback Local<br \/>\ninet end.: 127.0.0.1 Masc:255.0.0.0<br \/>\nendere\u00e7o inet6: ::1\/128 Escopo:M\u00e1quina<br \/>\nUP LOOPBACKRUNNING MTU:16436 M\u00e9trica:1<br \/>\nRX packets:2 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:2 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:168 (168.0 B) TX bytes:168 (168.0 B)<\/p><\/blockquote>\n<p>O bonding para o srv01 j\u00e1 est\u00e1 OK, agora vamos configurar o srv02.<\/p>\n<p>Vamos mandar atualizar os reposit\u00f3rios e instalar os pacotes para o bond no servidor srv02:<\/p>\n<p><strong># aptitude update &amp;&amp; aptitude install ifenslave ethtool -y<\/strong><\/p>\n<p>Acertar a configura\u00e7\u00e3o dos m\u00f3dulos do kernel:<\/p>\n<p><strong># echo &#8220;options bonding mode=0 miimon=100&#8221; &gt;&gt; \/etc\/modprobe.d\/bonding.conf<\/strong><\/p>\n<p>Verificar se todas as interfaces est\u00e3o com link:<\/p>\n<p><strong># mii-tool<\/strong><\/p>\n<p>Sa\u00edda:<\/p>\n<blockquote><p>eth0: no autonegotiation, 1000baseT-FD flow-control, link ok<br \/>\neth1: no autonegotiation, 1000baseT-FD flow-control, link ok<br \/>\neth2: no autonegotiation, 1000baseT-FD flow-control, link ok<br \/>\neth3: no autonegotiation, 1000baseT-FD flow-control, link ok<\/p><\/blockquote>\n<p>E acertar a configura\u00e7\u00e3o de rede para o bonding:<\/p>\n<p><strong># vim \/etc\/network\/interfaces<\/strong><\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_944991\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>#Interface de loopback<\/code><\/div>\n<div><code>auto lo<\/code><\/div>\n<div><code>iface lo inet loopback<\/code><\/div>\n<div><\/div>\n<div><code>#Interface de bonding para DMZ<\/code><\/div>\n<div><code>auto bond0<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>iface bond0 inet static<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>address 10.101.0.26<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>netmask 255.255.255.0<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>network 10.101.0.0<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>gateway 10.101.0.254<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>bond-slaves eth0 eth1<\/code><\/div>\n<div><\/div>\n<div><code>#Interface de bonding para Dados<\/code><\/div>\n<div><code>auto bond1<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>iface bond1 inet static<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>address 172.20.0.26<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>netmask 255.255.255.0<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>network 172.20.0.0<\/code><\/div>\n<div><code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code>bond-slaves eth2 eth3<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Agora, precisamos reiniciar o servidor:<\/p>\n<p><strong># reboot<\/strong><\/p>\n<p>Agora, vamos listar as nossas interfaces para verificar se subiu o bond e os endere\u00e7os IPs<\/p>\n<p><strong># ifconfig<\/strong><\/p>\n<blockquote><p>bond0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:e4:58:4b<br \/>\ninet end.: 10.101.0.26 Bcast:10.101.0.255 Masc:255.255.255.0<br \/>\nendere\u00e7o inet6: fe80::a00:27ff:fee4:584b\/64 Escopo:Link<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:1204 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:75 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:105536 (103.0 KiB) TX bytes:9338 (9.1 KiB)<\/p>\n<p>bond1\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:d2:4e:60<br \/>\ninet end.: 172.20.0.26 Bcast:172.20.0.2655 Masc:255.255.255.0<br \/>\nendere\u00e7o inet6: fe80::a00:27ff:fed2:4e60\/64 Escopo:Link<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:1109 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:3 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:92286 (90.1 KiB) TX bytes:258 (258.0 B)<\/p>\n<p>eth0\u00a0\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:e4:58:4b<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:649 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:38 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:59308 (57.9 KiB) TX bytes:3903 (3.8 KiB)<\/p>\n<p>eth1\u00a0\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:e4:58:4b<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:555 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:37 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:46228 (45.1 KiB) TX bytes:5435 (5.3 KiB)<\/p>\n<p>eth2\u00a0\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:d2:4e:60<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:555 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:2 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:46182 (45.0 KiB) TX bytes:180 (180.0 B)<\/p>\n<p>eth3\u00a0\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:d2:4e:60<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:554 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:1 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:46104 (45.0 KiB) TX bytes:78 (78.0 B)<\/p>\n<p>lo\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Link encap:Loopback Local<br \/>\ninet end.: 127.0.0.1 Masc:255.0.0.0<br \/>\nendere\u00e7o inet6: ::1\/128 Escopo:M\u00e1quina<br \/>\nUP LOOPBACKRUNNING MTU:16436 M\u00e9trica:1<br \/>\nRX packets:0 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:0 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:0 (0.0 B) TX bytes:0 (0.0 B)<\/p><\/blockquote>\n<p>Vamos testar agora, a conectividade entre os dois, iremos mandar pingar do srv01 para o srv02:<\/p>\n<p><strong># ping -c 3 10.101.0.26<\/strong><\/p>\n<p>Vejamos o resultado:<\/p>\n<blockquote><p>PING 10.101.0.26 (10.101.0.26) 56(84) bytes of data.<br \/>\n64 bytes from 10.101.0.26: icmp_req=1 ttl=64 time=1.85 ms<br \/>\n64 bytes from 10.101.0.26: icmp_req=2 ttl=64 time=0.528 ms<br \/>\n64 bytes from 10.101.0.26: icmp_req=3 ttl=64 time=0.867 ms<\/p>\n<p>&#8212; 10.101.0.26 ping statistics &#8212;<br \/>\n3 packets transmitted, 3 received, 0% packet loss, time 2000ms<br \/>\nrtt min\/avg\/max\/mdev = 0.528\/1.083\/1.855\/0.563 ms<\/p><\/blockquote>\n<p>Agora, vamos mandar pingar do srv02 para o srv1:<\/p>\n<p><strong># ping -c 3 172.20.0.25<\/strong><\/p>\n<p>Resultado:<\/p>\n<blockquote><p>PING 172.20.0.25 (172.20.0.25) 56(84) bytes of data.<br \/>\n64 bytes from 172.20.0.25: icmp_req=1 ttl=64 time=4.31 ms<br \/>\n64 bytes from 172.20.0.25: icmp_req=2 ttl=64 time=0.590 ms<br \/>\n64 bytes from 172.20.0.25: icmp_req=3 ttl=64 time=0.425 ms<\/p>\n<p>&#8212; 172.20.0.25 ping statistics &#8212;<br \/>\n3 packets transmitted, 3 received, 0% packet loss, time 2000ms<br \/>\nrtt min\/avg\/max\/mdev = 0.425\/1.777\/4.318\/1.798 ms<\/p><\/blockquote>\n<p>Agora que o bond est\u00e1 pronto, vamos configurar o Heartbeat para garantirmos um IP virtual compartilhado entre os servidores, que \u00e9 o que o cliente vai utilizar para acessar os servi\u00e7os.<\/p>\n<p>Este IP, sempre vai setar o servidor que for definido como master, e caso ele caia por algum motivo, o servidor slave vai assumir este IP, e o cliente nem vai notar que est\u00e1 trabalhando em outro servidor.<\/p>\n<p>Vamos acertar o arquivo de hosts, deixe o arquivo como o abaixo nos dois servidores.<\/p>\n<p><strong># vim \/etc\/hosts<\/strong><\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_793403\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>127.0.0.1\u00a0\u00a0\u00a0\u00a0 localhost<\/code><\/div>\n<div><code>10.101.0.25\u00a0\u00a0 srv01.douglas.wiki.br\u00a0\u00a0 srv01<\/code><\/div>\n<div><code>10.101.0.26\u00a0\u00a0 srv02.douglas.wiki.br\u00a0\u00a0 srv02<\/code><\/div>\n<div><\/div>\n<div><code># The following lines are desirable for IPv6 capable hosts<\/code><\/div>\n<div><code>::1\u00a0\u00a0\u00a0\u00a0 ip6-localhost ip6-loopback<\/code><\/div>\n<div><code>fe00::0 ip6-localnet<\/code><\/div>\n<div><code>ff00::0 ip6-mcastprefix<\/code><\/div>\n<div><code>ff02::1 ip6-allnodes<\/code><\/div>\n<div><code>ff02::2 ip6-allrouters<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>Instala\u00e7\u00e3o e configura\u00e7\u00e3o do Heartbeat<\/b><\/p>\n<div>Agora, vamos instalar o Heartbeat no srv02:<\/p>\n<p><strong># aptitude update &amp;&amp; aptitude dist-upgrade -y &amp;&amp; apt-get install heartbeat heartbeat-dev -y<\/strong><\/p>\n<p>Vamos acertar a configura\u00e7\u00e3o do Heartbeat:<\/p>\n<p><strong># vim \/etc\/ha.d\/ha.cf<\/strong><\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_9537\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>#informe os nomes dos computadores que formam a replica\u00e7\u00e3o(deve ser igual a sa\u00edda do comando \"uname -n<\/code><\/div>\n<div><code>node srv01<\/code><\/div>\n<div><code>node srv02<\/code><\/div>\n<div><\/div>\n<div><code>#qual a interface vai ser usada para comunica\u00e7\u00e3o<\/code><\/div>\n<div><code>mcast bond0 225.0.0.1 694 1 0<\/code><\/div>\n<div><\/div>\n<div><code>#Fazer com que a m\u00e1quina principal receba seus servi\u00e7os quando retornar a ativa<\/code><\/div>\n<div><code>auto_failback on<\/code><\/div>\n<div><\/div>\n<div><code>#arquivos de log<\/code><\/div>\n<div><code>debugfile <\/code><code>\/var\/log\/ha-debug<\/code><\/div>\n<div><code>logfile <\/code><code>\/var\/log\/ha-log<\/code><\/div>\n<div><\/div>\n<div><code>#frequ\u00eancia, em segundos, da verifica\u00e7\u00e3o das m\u00e1quinas<\/code><\/div>\n<div><code>keepalive 1<\/code><\/div>\n<div><\/div>\n<div><code>#tempo m\u00ednimo para declarar a outra m\u00e1quina como morta<\/code><\/div>\n<div><code>deadtime 5<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Agora, vamos acertar a configura\u00e7\u00e3o do nosso IP compartilhado pelo Heartbeat:<\/p>\n<p><strong># vim \/etc\/ha.d\/haresources<\/strong><\/p>\n<div>srv01 IPaddr::10.101.0.27\/24\/bond0\/10.101.0.255<\/div>\n<p>Explicando o arquivo acima:<\/p>\n<ul>\n<li>srv01: nome do servidor master<\/li>\n<li>IPaddr::10.101.0.27\/24: IP que vai ser compartilhado pelo Heartbeat<\/li>\n<li>bond0: Interface que vai receber o IP compartilhado pelo Heartbeat<\/li>\n<li>10.101.0.25: Endere\u00e7o de broadcast<\/li>\n<\/ul>\n<p>Agora vamos acertar o arquivo com a senha de autentica\u00e7\u00e3o entre os Heartbeats:<\/p>\n<p><strong># vim \/etc\/ha.d\/authkeys<\/strong><\/p>\n<div>auth 3<br \/>\n3 md5 h34rt64t<\/div>\n<p>Agora vamos acertar as permiss\u00f5es do arquivo de senha:<\/p>\n<p><strong># chmod 600 \/etc\/ha.d\/authkeys<\/strong><\/p>\n<p>Agora vamos instalar o Heartbeat no srv02:<\/p>\n<p><strong># aptitude update &amp;&amp; aptitude dist-upgrade -y &amp;&amp; apt-get install heartbeat heartbeat-dev -y<\/strong><\/p>\n<p>Acertar a configura\u00e7\u00e3o do heartbeat:<\/p>\n<p><strong># vim \/etc\/ha.d\/ha.cf<\/strong><\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_629625\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>#informe os nomes dos computadores que formam a replica\u00e7\u00e3o(deve ser igual a sa\u00edda do comando \"uname -n<\/code><\/div>\n<div><code>node srv01<\/code><\/div>\n<div><code>node srv02<\/code><\/div>\n<div><\/div>\n<div><code>#qual a interface vai ser usada para comunica\u00e7\u00e3o<\/code><\/div>\n<div><code>mcast bond0 225.0.0.1 694 1 0<\/code><\/div>\n<div><\/div>\n<div><code>#Fazer com que a m\u00e1quina principal receba seus servi\u00e7os quando retornar a ativa<\/code><\/div>\n<div><code>auto_failback on<\/code><\/div>\n<div><\/div>\n<div><code>#arquivos de log<\/code><\/div>\n<div><code>debugfile <\/code><code>\/var\/log\/ha-debug<\/code><\/div>\n<div><code>logfile <\/code><code>\/var\/log\/ha-log<\/code><\/div>\n<div><\/div>\n<div><code>#frequ\u00eancia, em segundos, da verifica\u00e7\u00e3o das m\u00e1quinas<\/code><\/div>\n<div><code>keepalive 1<\/code><\/div>\n<div><\/div>\n<div><code>#tempo m\u00ednimo para declarar a outra m\u00e1quina como morta<\/code><\/div>\n<div><code>deadtime 5<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Agora vamos acertar a configura\u00e7\u00e3o do nosso IP compartilhado pelo Heartbeat:<\/p>\n<p><strong># vim \/etc\/ha.d\/haresources<\/strong><\/p>\n<div>srv01 IPaddr::10.101.0.27\/24\/bond0\/10.101.0.255<\/div>\n<p>Agora vamos acertar o arquivo com a senha de autentica\u00e7\u00e3o entre os Heartbeats:<\/p>\n<p><strong># vim \/etc\/ha.d\/authkeys<\/strong><\/p>\n<div>auth 3<br \/>\n3 md5 h34rt64t<\/div>\n<p>Agora vamos acertar as permiss\u00f5es do arquivo de senha:<\/p>\n<p><strong># chmod 600 \/etc\/ha.d\/authkeys<\/strong><\/p>\n<p>Agora vamos reiniciar o Heartbeat nos dois servidores:<\/p>\n<p><strong># \/etc\/init.d\/heartbeat restart<\/strong><\/p>\n<p>Agora no servidor master (o srv01), vamos consultar os endere\u00e7os IPs:<\/p>\n<p><strong># ifconfig<\/strong><\/p>\n<blockquote><p>bond0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:3f:b0:b8<br \/>\ninet end.: 10.101.0.25 Bcast:10.101.0.255 Masc:255.255.255.0<br \/>\nendere\u00e7o inet6: fe80::a00:27ff:fe3f:b0b8\/64 Escopo:Link<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:258509 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:3510 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<\/p>\n<p>RX bytes:30982551 (29.5 MiB) TX bytes:419737 (409.8 KiB)<\/p>\n<p>bond0:0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:3f:b0:b8<br \/>\ninet end.: 10.101.0.27 Bcast:10.101.0.255 Masc:255.255.255.0<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<\/p>\n<p>bond1\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:ff:cd:7c<br \/>\ninet end.: 172.20.0.25 Bcast:172.20.0.2655 Masc:255.255.255.0<br \/>\nendere\u00e7o inet6: fe80::a00:27ff:feff:cd7c\/64 Escopo:Link<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:249676 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:12 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:19802934 (18.8 MiB) TX bytes:860 (860.0 B)<\/p>\n<p>eth0\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:3f:b0:b8<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:133706 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:1755 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:21086174 (20.1 MiB) TX bytes:213206 (208.2 KiB)<\/p>\n<p>eth1\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:3f:b0:b8<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:124803 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:1755 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:9896377 (9.4 MiB) TX bytes:206531 (201.6 KiB)<\/p>\n<p>eth2\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:ff:cd:7c<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:124844 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:6 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:9901912 (9.4 MiB) TX bytes:516 (516.0 B)<\/p>\n<p>eth3\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:ff:cd:7c<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:124832 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:6 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:9901022 (9.4 MiB) TX bytes:344 (344.0 B)<\/p>\n<p>lo\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Link encap:Loopback Local<br \/>\ninet end.: 127.0.0.1 Masc:255.0.0.0<br \/>\nendere\u00e7o inet6: ::1\/128 Escopo:M\u00e1quina<br \/>\nUP LOOPBACKRUNNING MTU:16436 M\u00e9trica:1<br \/>\nRX packets:2 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:2 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:168 (168.0 B) TX bytes:168 (168.0 B)<\/p><\/blockquote>\n<p>Agora no servidor slave (o srv02) vamos consultar os endere\u00e7os IPs:<\/p>\n<p><strong># ifconfig<\/strong><\/p>\n<blockquote><p>bond0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:e4:58:4b<br \/>\ninet end.: 10.101.0.26 Bcast:10.101.0.255 Masc:255.255.255.0<br \/>\nendere\u00e7o inet6: fe80::a00:27ff:fee4:584b\/64 Escopo:Link<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:248388 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:3842 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:30223554 (28.8 MiB) TX bytes:472655 (461.5 KiB)<\/p>\n<p>bond1\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:d2:4e:60<br \/>\ninet end.: 172.20.0.26 Bcast:172.20.0.2655 Masc:255.255.255.0<br \/>\nendere\u00e7o inet6: fe80::a00:27ff:fed2:4e60\/64 Escopo:Link<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:239819 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:10 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:19101060 (18.2 MiB) TX bytes:720 (720.0 B)<\/p>\n<p>eth0\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:e4:58:4b<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:128628 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:1924 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:20708154 (19.7 MiB) TX bytes:241140 (235.4 KiB)<\/p>\n<p>eth1\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:e4:58:4b<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:119760 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:1918 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<\/p>\n<p>RX bytes:9515400 (9.0 MiB) TX bytes:231515 (226.0 KiB)<\/p>\n<p>eth2\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:d2:4e:60<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:119916 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:5 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:9551043 (9.1 MiB) TX bytes:418 (418.0 B)<\/p>\n<p>eth3\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:d2:4e:60<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:119903 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:5 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:9550017 (9.1 MiB) TX bytes:302 (302.0 B)<\/p>\n<p>lo\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Link encap:Loopback Local<br \/>\ninet end.: 127.0.0.1 Masc:255.0.0.0<br \/>\nendere\u00e7o inet6: ::1\/128 Escopo:M\u00e1quina<br \/>\nUP LOOPBACKRUNNING MTU:16436 M\u00e9trica:1<br \/>\nRX packets:0 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:0 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:0 (0.0 B) TX bytes:0 (0.0 B)<\/p><\/blockquote>\n<p>Como pode ser notado, temos o IP 10.101.0.27\/24 no servidor srv01, que \u00e9 o master. Agora vamos fazer um teste: vamos deslitar o servidor srv01:<\/p>\n<p><strong># telinit 0<\/strong><\/p>\n<p>Agora no servidor srv02 vamos consultar os endere\u00e7os IPs:<\/p>\n<p><strong># ifconfig<\/strong><\/p>\n<blockquote><p>bond0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:e4:58:4b<br \/>\ninet end.: 10.101.0.26 Bcast:10.101.0.255 Masc:255.255.255.0<br \/>\nendere\u00e7o inet6: fe80::a00:27ff:fee4:584b\/64 Escopo:Link<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:251625 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:3959 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:30524354 (29.1 MiB) TX bytes:499147 (487.4 KiB)<\/p>\n<p>bond0:0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:e4:58:4b<br \/>\ninet end.: 10.101.0.27 Bcast:10.101.0.255 Masc:255.255.255.0<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<\/p>\n<p>bond1\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:d2:4e:60<br \/>\ninet end.: 172.20.0.26 Bcast:172.20.0.2655 Masc:255.255.255.0<br \/>\nendere\u00e7o inet6: fe80::a00:27ff:fed2:4e60\/64 Escopo:Link<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:243159 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:10 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:19424314 (18.5 MiB) TX bytes:720 (720.0 B)<\/p>\n<p>eth0\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:e4:58:4b<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:130251 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:1982 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:20859033 (19.8 MiB) TX bytes:252852 (246.9 KiB)<\/p>\n<p>eth1\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:e4:58:4b<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:121374 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:1977 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:9665321 (9.2 MiB) TX bytes:246295 (240.5 KiB)<\/p>\n<p>eth2\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:d2:4e:60<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:121586 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:5 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:9712670 (9.2 MiB) TX bytes:418 (418.0 B)<\/p>\n<p>eth3\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:d2:4e:60<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:121573 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:5 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:9711644 (9.2 MiB) TX bytes:302 (302.0 B)<\/p>\n<p>lo\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Link encap:Loopback Local<br \/>\ninet end.: 127.0.0.1 Masc:255.0.0.0<br \/>\nendere\u00e7o inet6: ::1\/128 Escopo:M\u00e1quina<br \/>\nUP LOOPBACKRUNNING MTU:16436 M\u00e9trica:1<br \/>\nRX packets:0 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:0 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:0 (0.0 B) TX bytes:0 (0.0 B)<\/p><\/blockquote>\n<p>Note que o endere\u00e7o IP 10.101.0.27\/24, j\u00e1 foi atribuido ao servidor srv02, pois ele \u00e9 o slave; ent\u00e3o, caso o cliente esteja conectado em algum servi\u00e7o, ele n\u00e3o vai notar quando trocar de servidor.<\/p>\n<p>Agora vamos ligar novamente o servidor srv01 e consultar novamente:<\/p>\n<p><strong># ifconfig<\/strong><\/p>\n<blockquote><p>bond0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:3f:b0:b8<br \/>\ninet end.: 10.101.0.25 Bcast:10.101.0.255 Masc:255.255.255.0<br \/>\nendere\u00e7o inet6: fe80::a00:27ff:fe3f:b0b8\/64 Escopo:Link<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:3314 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:244 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:292621 (285.7 KiB) TX bytes:33465 (32.6 KiB)<\/p>\n<p>bond0:0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:3f:b0:b8<br \/>\ninet end.: 10.101.0.27 Bcast:10.101.0.255 Masc:255.255.255.0<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<\/p>\n<p>bond1\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:ff:cd:7c<br \/>\ninet end.: 172.20.0.25 Bcast:172.20.0.2655 Masc:255.255.255.0<br \/>\nendere\u00e7o inet6: fe80::a00:27ff:feff:cd7c\/64 Escopo:Link<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:3255 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:3 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:289268 (282.4 KiB) TX bytes:258 (258.0 B)<\/p>\n<p>eth0\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:3f:b0:b8<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:1732 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:122 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:157391 (153.7 KiB) TX bytes:15755 (15.3 KiB)<\/p>\n<p>eth1\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:3f:b0:b8<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:1582 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:122 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:135230 (132.0 KiB) TX bytes:17710 (17.2 KiB)<\/p>\n<p>eth2\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:ff:cd:7c<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:1628 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:2 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:144673 (141.2 KiB) TX bytes:180 (180.0 B)<\/p>\n<p>eth3\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:ff:cd:7c<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:1627 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:1 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:1000<br \/>\nRX bytes:144595 (141.2 KiB) TX bytes:78 (78.0 B)<\/p>\n<p>lo\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Link encap:Loopback Local<br \/>\ninet end.: 127.0.0.1 Masc:255.0.0.0<br \/>\nendere\u00e7o inet6: ::1\/128 Escopo:M\u00e1quina<br \/>\nUP LOOPBACKRUNNING MTU:16436 M\u00e9trica:1<br \/>\nRX packets:0 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:0 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:0 (0.0 B) TX bytes:0 (0.0 B)<\/p><\/blockquote>\n<p>Note que o IP compartilhado voltou para o servidor srv01, pois definimos ele como master.<\/p>\n<p>A primeira parte j\u00e1 est\u00e1 OK, que era garantir um IP compartilhado que vai ser utilizado pelo cliente.<\/p>\n<p>Pense que no servidor srv01, temos um site rodando, e este site est\u00e1 tamb\u00e9m no servidor srv02, com isso, o cliente vai acessar o: http:\/\/10.101.0.27<\/p>\n<p>&#8230;E vai para o servidor master dispon\u00edvel, que em nosso caso, vai ser o srv01.<\/p>\n<p>Caso o master caia, o cliente vai acessar as p\u00e1ginas que est\u00e3o no servidor srv02, e nem vai sentir que ele est\u00e1 acessando outro servidor. \ud83d\ude09<\/p>\n<p>Mas, note que ainda temos um problema: os dados t\u00eam 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.<\/p>\n<p>Ent\u00e3o, caso seja alterado um arquivo qualquer na parti\u00e7\u00e3o do DRBD, o outro servidor j\u00e1 vai ter acesso a essas novas informa\u00e7\u00f5es. Aqui vou utilizar o OCFS2, que \u00e9 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>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>Instala\u00e7\u00e3o e configura\u00e7\u00e3o do DRBD + OCFS2<\/b><\/p>\n<div>Agora, vamos instalar o DRBD e o OCFS2, fa\u00e7a isso nas duas m\u00e1quinas:<\/p>\n<p><strong># aptitude install drbd8-utils ocfs2-tools ocfs2-tools-dev -y<\/strong><\/p>\n<p>Agora vamos carregar os m\u00f3dulos (fa\u00e7a isso nas duas m\u00e1quinas):<\/p>\n<p><strong># modprobe cn<br \/>\n# modprobe drbd<\/strong><\/p>\n<p>Vamos configurar o DRBD. Deixe o arquivo como abaixo nas duas m\u00e1quinas:<\/p>\n<p><strong># vim \/etc\/drbd.conf<\/strong><\/p>\n<div>include &#8220;drbd.d\/global_common.conf&#8221;;<br \/>\n#include &#8220;drbd.d\/*.res&#8221;;<\/div>\n<p>Execute nas duas m\u00e1quinas a parte abaixo.<\/p>\n<p>Vamos fazer backup do arquivo de configura\u00e7\u00e3o original:<\/p>\n<p><strong># cp \/etc\/drbd.d\/global_common.conf{,.bkp}<\/strong><\/p>\n<p>Deixe o arquivo como abaixo:<\/p>\n<p><strong># vim \/etc\/drbd.d\/global_common.conf<\/strong><\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_536096\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>#\/etc\/drbd.conf<\/code><\/div>\n<div><code># Op\u00e7\u00f5es Globais<\/code><\/div>\n<div><code># Geralmente no in\u00edcio do arquivo. Poucas op\u00e7\u00f5es s\u00e3o definidas nesta se\u00e7\u00e3o.<\/code><\/div>\n<div><code>#<\/code><\/div>\n<div><code>global {<\/code><\/div>\n<div><code>\u00a0<\/code><code>usage-count <\/code><code>yes<\/code><code>; <\/code><code># Gerar status da atualiza\u00e7\u00e3o do sistema de DRBD.<\/code><\/div>\n<div><code>}<\/code><\/div>\n<div><code>#<\/code><\/div>\n<div><code># Op\u00e7\u00f5es comuns a mais de um recurso, quando houver. No caso de existir op\u00e7\u00f5es<\/code><\/div>\n<div><code># definidas internamente ao recurso, elas ir\u00e3o sobrepor as op\u00e7\u00f5es comuns.<\/code><\/div>\n<div><code>common {<\/code><\/div>\n<div><code>\u00a0<\/code><code>protocol C; <\/code><code># M\u00e9todo de replica\u00e7\u00e3o. Neste caso, replica\u00e7\u00e3o s\u00edncrona.<\/code><\/div>\n<div><code>}<\/code><\/div>\n<div><code>###\u00a0 ocfs2 usando 02 prim\u00e1rios<\/code><\/div>\n<div><code>resource r1 {<\/code><\/div>\n<div><code>\u00a0<\/code><code>net {<\/code><\/div>\n<div><code>\u00a0<\/code><code># Permitir\/habilitar dois servidores prim\u00e1rios.<\/code><\/div>\n<div><code>\u00a0<\/code><code>allow-two-primaries; <\/code><code>#Permite habilitar dois servidores prim\u00e1rios<\/code><\/div>\n<div><code>\u00a0<\/code><code>after-sb-0pri discard-younger-primary;<\/code><\/div>\n<div><code>\u00a0<\/code><code>after-sb-1pri consensus;<\/code><\/div>\n<div><code>\u00a0<\/code><code>after-sb-2pri disconnect;<\/code><\/div>\n<div><code>}<\/code><\/div>\n<div><code>\u00a0<\/code><code>startup {<\/code><\/div>\n<div><code>\u00a0<\/code><code># Iniciar os dois servidores como prim\u00e1rios, por padr\u00e3o.<\/code><\/div>\n<div><code>\u00a0<\/code><code>become-primary-on both;<\/code><\/div>\n<div><code>\u00a0<\/code><code>}<\/code><\/div>\n<div><code>\u00a0<\/code><code>syncer {<\/code><\/div>\n<div><code>\u00a0<\/code><code>rate 600M; <\/code><code>#Para placas de rede de 10\/100 utilizar 10M<\/code><\/div>\n<div><code>\u00a0<\/code><code>}<\/code><\/div>\n<div><code>\u00a0<\/code><\/div>\n<div><code>\u00a0<\/code><code>on srv01 {<\/code><\/div>\n<div><code>\u00a0<\/code><code>device\u00a0\u00a0\u00a0\u00a0 <\/code><code>\/dev\/drbd1<\/code><code>; <\/code><code># Nome do dispositivo de DRBD<\/code><\/div>\n<div><code>\u00a0<\/code><code>disk\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code>\/dev\/sdb1<\/code><code>; <\/code><code># Dispositivo de baixo n\u00edvel utilizado a parti\u00e7\u00e3o<\/code><\/div>\n<div><code>\u00a0<\/code><code>address\u00a0\u00a0\u00a0 172.20.0.25:7789;\u00a0 <\/code><code># IP:porta de conex\u00e3o<\/code><\/div>\n<div><code>\u00a0<\/code><code>meta-disk internal; <\/code><code># Armazenamento das informa\u00e7\u00f5es de dados \u00e9 feito<\/code><\/div>\n<div><code>\u00a0<\/code><code># dentro do dispositivo de baixo n\u00edvel.<\/code><\/div>\n<div><code>\u00a0<\/code><code>}<\/code><\/div>\n<div><code>\u00a0<\/code><code>on srv02 {<\/code><\/div>\n<div><code>\u00a0<\/code><code>device\u00a0\u00a0 <\/code><code>\/dev\/drbd1<\/code><code>;<\/code><\/div>\n<div><code>\u00a0<\/code><code>disk\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code>\/dev\/sdb1<\/code><code>;<\/code><\/div>\n<div><code>\u00a0<\/code><code>address\u00a0\u00a0 172.20.0.26:7789;<\/code><\/div>\n<div><code>\u00a0<\/code><code>meta-disk internal;<\/code><\/div>\n<div><code>\u00a0<\/code><code>}<\/code><\/div>\n<div><code>}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Agora, vamos preparar o disco, fa\u00e7a isso nos dois servidores:<\/p>\n<p><strong># fdisk \/dev\/sdb<\/strong><\/p>\n<p>Vai aparecer as peguntas:<\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_628526\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>##Sa\u00edda de comando##<\/code><\/div>\n<div><code>O dispositivo n\u00e3o cont\u00e9m nem uma tabela de parti\u00e7\u00f5es DOS <\/code><code>v<\/code><code>\u00e1lida nem um r\u00f3tulo de disco Sun, OSF ou SGI<\/code><\/div>\n<div><code>Building a new DOS disklabel with disk identifier 0x6aadf3ff.<\/code><\/div>\n<div><code>Changes will remain <\/code><code>in<\/code> <code>memory only, <\/code><code>until<\/code> <code>you decide to write them.<\/code><\/div>\n<div><code>After that, of course, the previous content won't be recoverable.<\/code><\/div>\n<div><code>\u00a0<\/code><\/div>\n<div><code>Aviso: a <\/code><code>op<\/code><code>\u00e7\u00e3o inv\u00e1lida 0x0000 da tabela de parti\u00e7\u00f5es 4 ser\u00e1 corrigida por grava\u00e7\u00e3o (w)<\/code><\/div>\n<div><code>\u00a0<\/code><\/div>\n<div><code>WARNING: DOS-compatible mode is deprecated. It's strongly recommended to<\/code><\/div>\n<div><code>\u00a0<\/code><code>switch off the mode (<\/code><code>command<\/code> <code>'c'<\/code><code>) and change display <\/code><code>units<\/code> <code>to<\/code><\/div>\n<div><code>\u00a0<\/code><code>sectors (<\/code><code>command<\/code> <code>'u'<\/code><code>).<\/code><\/div>\n<div><code>\u00a0<\/code><\/div>\n<div><code>Comando (m para ajuda):<\/code><\/div>\n<div><code>####<\/code><\/div>\n<div><\/div>\n<div><code>Tecle <\/code><code>\"p\"<\/code><code>.<\/code><\/div>\n<div><\/div>\n<div><code>##Sa\u00edda de comando##<\/code><\/div>\n<div><code>Disk <\/code><code>\/dev\/sdb<\/code><code>: 8589 MB, 8589934592 bytes<\/code><\/div>\n<div><code>255 heads, 63 sectors<\/code><code>\/track<\/code><code>, 1044 cylinders<\/code><\/div>\n<div><code>Units = cilindros of 16065 * 512 = 8225280 bytes<\/code><\/div>\n<div><code>Sector size (logical<\/code><code>\/physical<\/code><code>): 512 bytes \/ 512 bytes<\/code><\/div>\n<div><code>I<\/code><code>\/O<\/code> <code>size (minimum<\/code><code>\/optimal<\/code><code>): 512 bytes \/ 512 bytes<\/code><\/div>\n<div><code>Disk identifier: 0x6aadf3ff<\/code><\/div>\n<div><code>\u00a0<\/code><\/div>\n<div><code>Dispositivo Boot\u00a0\u00a0\u00a0\u00a0\u00a0 Start\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 End\u00a0\u00a0\u00a0\u00a0\u00a0 Blocks\u00a0\u00a0 Id\u00a0 System<\/code><\/div>\n<div><\/div>\n<div><code>Comando (m para ajuda):<\/code><\/div>\n<div><code>####<\/code><\/div>\n<div><\/div>\n<div><code>Aqui, tecle <\/code><code>\"n\"<\/code> <code>para criar uma nova parti\u00e7\u00e3o.<\/code><\/div>\n<div><\/div>\n<div><code>##Sa\u00edda##<\/code><\/div>\n<div><code>Comando - a\u00e7\u00e3o<\/code><\/div>\n<div><code>\u00a0<\/code><code>e\u00a0\u00a0 estendida<\/code><\/div>\n<div><code>\u00a0<\/code><code>p\u00a0\u00a0 parti\u00e7\u00e3o prim\u00e1ria (1-4)<\/code><\/div>\n<div><code>####<\/code><\/div>\n<div><\/div>\n<div><code>Tecle <\/code><code>\"p\"<\/code> <code>(prim\u00e1ria).<\/code><\/div>\n<div><\/div>\n<div><code>##Sa\u00edda##<\/code><\/div>\n<div><code>N\u00famero da parti\u00e7\u00e3o (1-4): 1<\/code><\/div>\n<div><code>Primeiro cilindro (1-1044, default 1): ENTER<\/code><\/div>\n<div><code>Using default value 1<\/code><\/div>\n<div><code>Last cilindro, +cilindros or +size{K,M,G} (1-1044, default 1044): ENTER<\/code><\/div>\n<div><code>Using default value 1044<\/code><\/div>\n<div><\/div>\n<div><code>Comando (m para ajuda):<\/code><\/div>\n<div><code>####<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Aqui, tecle <em>w<\/em> para escrever as mudan\u00e7as no disco. E por fim, <em>q<\/em> para sair.<\/p>\n<p>Agora vamos zerar as parti\u00e7\u00f5es (tem que ser executado nos dois servidores):<\/p>\n<p><strong># dd if=\/dev\/zero of=\/dev\/sdb1 bs=1M count=128<\/strong><\/p>\n<p>Execute este comando nos dois servidores, antes de passar para o pr\u00f3ximo comando:<\/p>\n<p><strong># drbdadm &#8212; &#8211;discard-my-data connect r1<\/strong><\/p>\n<p>Onde &#8220;r1&#8221;, \u00e9 o nome do nosso dispositivo, que no arquivo de configura\u00e7\u00e3o do DRBD, est\u00e1 como resource r1.<\/p>\n<p>Execute este comando nos dois servidores, antes de passar para o pr\u00f3ximo comando:<\/p>\n<p><strong># drbdadm create-md r1<\/strong><\/p>\n<p>Execute este comando nos dois servidores, antes de passar para o pr\u00f3ximo comando:<\/p>\n<p><strong># drbdadm attach r1<\/strong><\/p>\n<p>Execute este comando nos dois servidores, antes de passar para o pr\u00f3ximo comando:<\/p>\n<p><strong># drbdadm connect r1<\/strong><\/p>\n<p>Pronto, agora podemos iniciar o DRBD. Inicie-o nos dois servidores com o seguinte comando:<\/p>\n<p><strong># \/etc\/init.d\/drbd start<\/strong><\/p>\n<p>Podemos observar como est\u00e1 a situa\u00e7\u00e3o do nosso dispositivo DRBD, com o seguinte comando:<\/p>\n<p><strong># cat \/proc\/drbd<\/strong><\/p>\n<p>Exemplo:<\/p>\n<blockquote><p>version: 8.3.7 (api:88\/proto:86-91)<br \/>\nsrcversion: EE47D8BF18AC166BE219757<\/p>\n<p>1: cs:Connected ro:Secondary\/Secondary ds:Inconsistent\/Inconsistent C r&#8212;-<br \/>\nns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:8385604<\/p><\/blockquote>\n<p>Se em \u201cConnected st\u201d estiver como Primary\/Primary, est\u00e1 tudo OK, por\u00e9m, se estiver como &#8220;Secondary\/Secondary&#8221;, temos que for\u00e7ar os dispositivos a passarem para primary, e temos mais uma situa\u00e7\u00e3o quanto ao dispositivo Unknown, normalmente \u00e9 quando um dos servidores n\u00e3o est\u00e1 operante por problemas de rede, ou de configura\u00e7\u00e3o do arquivo do DRBD. Ent\u00e3o, muita aten\u00e7\u00e3o a esses detalhes.<\/p>\n<p>Vamos levar em considera\u00e7\u00e3o que s\u00f3 estamos com o problema que os dois servidores est\u00e3o como secondary, resolvemos com o seguinte comando. Este comando tem que ser rodado nos dois servidores:<\/p>\n<p><strong># drbdadm &#8212; &#8211;overwrite-data-of-peer primary r1<\/strong><\/p>\n<p>Agora vamos monitorar novamente:<\/p>\n<p><strong># cat \/proc\/drbd<\/strong><\/p>\n<p>Resultado:<\/p>\n<blockquote><p>version: 8.3.7 (api:88\/proto:86-91)<br \/>\nsrcversion: EE47D8BF18AC166BE219757<\/p>\n<p>1: cs:SyncTarget ro:Primary\/Primary ds:Inconsistent\/UpToDate C r&#8212;-<br \/>\nns:0 nr:1368684 dw:1368672 dr:12 al:0 bm:83 lo:1 pe:10097 ua:0 ap:1 ep:1 wo:b oos:7016932<br \/>\n[==&gt;&#8230;&#8230;&#8230;&#8230;&#8230;..] sync&#8217;ed: 16.4% (6852\/8188)M<br \/>\nfinish: 0:01:04 speed: 109,344 (97,760) K\/sec<\/p><\/blockquote>\n<p>Agora, \u00e9 s\u00f3 esperar eles sincronizarem os dados, isso depende da placa de rede, da velocidade do disco e do tamanho do disco, fora os processos do DRBD, se voc\u00ea notar muita lentid\u00e3o em algum desses fatores, veja se n\u00e3o \u00e9 bom fazer algum upgrade.<\/p>\n<p>Para acompanhar a sincroniza\u00e7\u00e3o, pode utilizar o seguinte comando:<\/p>\n<p><strong># cat \/proc\/drbd<\/strong><\/p>\n<p>Agora depois de sincronizados:<\/p>\n<blockquote><p>version: 8.3.7 (api:88\/proto:86-91)<br \/>\nsrcversion: EE47D8BF18AC166BE219757<\/p>\n<p>1: cs:Connected ro:Primary\/Primary ds:UpToDate\/UpToDate C r&#8212;-<br \/>\nns:8385660 nr:0 dw:0 dr:8385860 al:0 bm:512 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0<\/p><\/blockquote>\n<p>Agora, vamos configurar o OCFS2<\/p>\n<p>Vamos configurar o cluster para o OCFS2. Tem que ser configurado nos dois servidores:<\/p>\n<p><strong># vim \/etc\/ocfs2\/cluster.conf<\/strong><\/p>\n<p>Edite:<\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_454787\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>node:<\/code><\/div>\n<div><code>\u00a0<\/code><code>ip_port = 7777<\/code><\/div>\n<div><code>\u00a0<\/code><code>ip_address = 172.20.0.25<\/code><\/div>\n<div><code>\u00a0<\/code><code>number = 0<\/code><\/div>\n<div><code>\u00a0<\/code><code>name = srv01<\/code><\/div>\n<div><code>\u00a0<\/code><code>cluster = ocfs2<\/code><\/div>\n<div><code>\u00a0<\/code><\/div>\n<div><code>node:<\/code><\/div>\n<div><code>\u00a0<\/code><code>ip_port = 7777<\/code><\/div>\n<div><code>\u00a0<\/code><code>ip_address = 172.20.0.26<\/code><\/div>\n<div><code>\u00a0<\/code><code>number = 1<\/code><\/div>\n<div><code>\u00a0<\/code><code>name = srv02<\/code><\/div>\n<div><code>\u00a0<\/code><code>cluster = ocfs2<\/code><\/div>\n<div><code>\u00a0<\/code><\/div>\n<div><code>cluster:<\/code><\/div>\n<div><code>\u00a0<\/code><code>node_count = 2<\/code><\/div>\n<div><code>\u00a0<\/code><code>name = ocfs2<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Agora vamos configurar o O2CB, para ser habilitado (tem que ser configurado nos dois servidores):<\/p>\n<p><strong># sed -i &#8216;s\/O2CB_ENABLED=false\/O2CB_ENABLED=true\/g&#8217; \/etc\/default\/o2cb<\/strong><\/p>\n<p>Agora \u00e9 so restartar o servi\u00e7o nos dois servidores:<\/p>\n<p><strong># \/etc\/init.d\/o2cb restart<\/strong><\/p>\n<p>E criar o sistema de arquivos OCFS2 no DRBD, precimos fazer isso somente em um dos dois servidores.<\/p>\n<p>Op\u00e7\u00f5es:<\/p>\n<ul>\n<li><em>-C<\/em> : indicado acima de 128K para grandes arquivos;<\/li>\n<li><em>-b<\/em> : indicado 4K;<\/li>\n<li><em>-N<\/em> : quantidade de nodos;<\/li>\n<li><em>-L<\/em> : label para a parti\u00e7\u00e3o.<\/li>\n<\/ul>\n<p><strong># mkfs.ocfs2 -b 4K -C 128K -N 2 -L ocfs2 \/dev\/drbd1<\/strong><\/p>\n<h1>Montando a parti\u00e7\u00e3o<\/h1>\n<p>Vamos criar um diret\u00f3rio para o OCFS2 nos dois servidores, e vamos montar:<\/p>\n<p><strong># mkdir \/ocfs2<br \/>\n# mount.ocfs2 \/dev\/drbd1 \/ocfs2\/<\/strong><\/p>\n<p>Vamos agora verificar nossas parti\u00e7\u00f5es:<\/p>\n<p><strong># df -Th<\/strong><\/p>\n<p>Resultado:<\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_956791\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>Sist. Arq.\u00a0\u00a0\u00a0 Tipo\u00a0\u00a0\u00a0 Size\u00a0 Used Avail Use% Montado em<\/code><\/div>\n<div><code>\/dev\/sda1<\/code>\u00a0\u00a0\u00a0\u00a0 <code>ext3\u00a0\u00a0\u00a0 323M\u00a0 147M\u00a0 160M\u00a0 48% \/<\/code><\/div>\n<div><code>tmpfs\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tmpfs\u00a0\u00a0\u00a0 249M\u00a0\u00a0\u00a0\u00a0 0\u00a0 249M\u00a0\u00a0 0% <\/code><code>\/lib\/init\/rw<\/code><\/div>\n<div><code>udev\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tmpfs\u00a0\u00a0\u00a0 244M\u00a0 168K\u00a0 244M\u00a0\u00a0 1% <\/code><code>\/dev<\/code><\/div>\n<div><code>tmpfs\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tmpfs\u00a0\u00a0\u00a0 249M\u00a0\u00a0\u00a0\u00a0 0\u00a0 249M\u00a0\u00a0 0% <\/code><code>\/dev\/shm<\/code><\/div>\n<div><code>\/dev\/sda9<\/code>\u00a0\u00a0\u00a0\u00a0 <code>ext3\u00a0\u00a0\u00a0 2,8G\u00a0\u00a0 69M\u00a0 2,6G\u00a0\u00a0 3% <\/code><code>\/home<\/code><\/div>\n<div><code>\/dev\/sda8<\/code>\u00a0\u00a0\u00a0\u00a0 <code>ext3\u00a0\u00a0\u00a0 234M\u00a0 6,1M\u00a0 216M\u00a0\u00a0 3% <\/code><code>\/tmp<\/code><\/div>\n<div><code>\/dev\/sda5<\/code>\u00a0\u00a0\u00a0\u00a0 <code>ext3\u00a0\u00a0\u00a0 2,8G\u00a0 639M\u00a0 2,0G\u00a0 24% <\/code><code>\/usr<\/code><\/div>\n<div><code>\/dev\/sda6<\/code>\u00a0\u00a0\u00a0\u00a0 <code>ext3\u00a0\u00a0\u00a0 1,4G\u00a0 273M\u00a0 1,1G\u00a0 21% <\/code><code>\/var<\/code><\/div>\n<div><code>\/dev\/drbd1<\/code>\u00a0\u00a0 <code>ocfs2\u00a0\u00a0\u00a0 8,0G\u00a0 279M\u00a0 7,8G\u00a0\u00a0 4% <\/code><code>\/ocfs2<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Como podemos ver, temos nossa parti\u00e7\u00e3o montada com OCFS2.<\/p>\n<p>Agora podemos deixar isso na inicializa\u00e7\u00e3o do sistema:<\/p>\n<p><strong># vim \/etc\/fstab<\/strong><\/p>\n<p>Acrescentando:<\/p>\n<div>\/dev\/drbd1 \/ocfs2 ocfs2 _netdev,defaults 0 0<\/div>\n<p>Agora vamos ajustar a ordem de inicializa\u00e7\u00e3o dos servi\u00e7os, no dois servidores.<\/p>\n<p>Vamos primeiro acertar o DRBD nos dois servidores:<\/p>\n<p><strong># vim \/etc\/init.d\/drbd<\/strong><\/p>\n<p>Deixe como:<\/p>\n<div># Deixe a op\u00e7\u00e3o Default-Start como abaixo<br \/>\n# Default-Start:\u00a0\u00a0\u00a0S<\/div>\n<p>Agora temos que acertar o <em>o2CB<\/em> nos dois servidores:<\/p>\n<p><strong># vim \/etc\/init.d\/o2cb<\/strong><\/p>\n<p>Adicione\/edite:<\/p>\n<div># Temos que inserir a op\u00e7\u00e3o drbd para que ele inicialize depois que subir o dispositivo<br \/>\n# Required-Start: $network drbd<\/div>\n<p>Agora temos que recarregar as configura\u00e7\u00f5es de inicializa\u00e7\u00e3o dos servi\u00e7os.<\/p>\n<p>Vamos tirar os servi\u00e7os da inicializa\u00e7\u00e3o primeiro:<\/p>\n<p><strong># insserv -r -v ocfs2<br \/>\n# insserv -r -v o2cb<br \/>\n# insserv -r -v drbd<\/strong><\/p>\n<p>Agora vamos colocar eles na inicializa\u00e7\u00e3o novamente:<\/p>\n<p><strong># insserv -f -v drbd<br \/>\n# insserv -f -v o2cb<br \/>\n# insserv -f -v ocfs2<\/strong><\/p>\n<p>Agora vamos reiniciar os servidores para testarmos se vai ser montado o DRBD na inicializa\u00e7\u00e3o:<\/p>\n<p><strong># init 6<\/strong><\/p>\n<p>Depois, da inicializa\u00e7\u00e3o nodo1:<\/p>\n<p><strong># uptime<\/strong><\/p>\n<p>Sa\u00edda:<\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_164168\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>15:22:11 up 0 min,\u00a0 1 user,\u00a0 load average: 0.26, 0.07, 0.02<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><strong># df -Th<\/strong><\/p>\n<p>Sa\u00edda:<\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_736744\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>Sist. Arq.\u00a0\u00a0\u00a0 Tipo\u00a0\u00a0\u00a0 Size\u00a0 Used Avail Use% Montado em<\/code><\/div>\n<div><code>\/dev\/sda1<\/code>\u00a0\u00a0\u00a0\u00a0 <code>ext3\u00a0\u00a0\u00a0 323M\u00a0 147M\u00a0 160M\u00a0 48% \/<\/code><\/div>\n<div><code>tmpfs\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tmpfs\u00a0\u00a0\u00a0 249M\u00a0\u00a0\u00a0\u00a0 0\u00a0 249M\u00a0\u00a0 0% <\/code><code>\/lib\/init\/rw<\/code><\/div>\n<div><code>udev\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tmpfs\u00a0\u00a0\u00a0 244M\u00a0 168K\u00a0 244M\u00a0\u00a0 1% <\/code><code>\/dev<\/code><\/div>\n<div><code>tmpfs\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tmpfs\u00a0\u00a0\u00a0 249M\u00a0\u00a0\u00a0\u00a0 0\u00a0 249M\u00a0\u00a0 0% <\/code><code>\/dev\/shm<\/code><\/div>\n<div><code>\/dev\/sda9<\/code>\u00a0\u00a0\u00a0\u00a0 <code>ext3\u00a0\u00a0\u00a0 2,8G\u00a0\u00a0 69M\u00a0 2,6G\u00a0\u00a0 3% <\/code><code>\/home<\/code><\/div>\n<div><code>\/dev\/sda8<\/code>\u00a0\u00a0\u00a0\u00a0 <code>ext3\u00a0\u00a0\u00a0 234M\u00a0 6,1M\u00a0 216M\u00a0\u00a0 3% <\/code><code>\/tmp<\/code><\/div>\n<div><code>\/dev\/sda5<\/code>\u00a0\u00a0\u00a0\u00a0 <code>ext3\u00a0\u00a0\u00a0 2,8G\u00a0 639M\u00a0 2,0G\u00a0 24% <\/code><code>\/usr<\/code><\/div>\n<div><code>\/dev\/sda6<\/code>\u00a0\u00a0\u00a0\u00a0 <code>ext3\u00a0\u00a0\u00a0 1,4G\u00a0 273M\u00a0 1,1G\u00a0 21% <\/code><code>\/var<\/code><\/div>\n<div><code>\/dev\/drbd1<\/code>\u00a0\u00a0 <code>ocfs2\u00a0\u00a0\u00a0 8,0G\u00a0 151M\u00a0 7,9G\u00a0\u00a0 2% <\/code><code>\/ocfs2<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Depois, da inicializa\u00e7\u00e3o nodo2:<\/p>\n<p><strong># uptime<\/strong><\/p>\n<p>Sa\u00edda:<\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_63605\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>15:22:13 up 0 min,\u00a0 1 user,\u00a0 load average: 0.21, 0.12, 0.04<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><strong># df -Th<\/strong><\/p>\n<p>Sa\u00edda:<\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_576443\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>Sist. Arq.\u00a0\u00a0\u00a0 Tipo\u00a0\u00a0\u00a0 Size\u00a0 Used Avail Use% Montado em<\/code><\/div>\n<div><code>\/dev\/sda1<\/code>\u00a0\u00a0\u00a0\u00a0 <code>ext3\u00a0\u00a0\u00a0 323M\u00a0 147M\u00a0 160M\u00a0 48% \/<\/code><\/div>\n<div><code>tmpfs\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tmpfs\u00a0\u00a0\u00a0 249M\u00a0\u00a0\u00a0\u00a0 0\u00a0 249M\u00a0\u00a0 0% <\/code><code>\/lib\/init\/rw<\/code><\/div>\n<div><code>udev\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tmpfs\u00a0\u00a0\u00a0 244M\u00a0 168K\u00a0 244M\u00a0\u00a0 1% <\/code><code>\/dev<\/code><\/div>\n<div><code>tmpfs\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tmpfs\u00a0\u00a0\u00a0 249M\u00a0\u00a0\u00a0\u00a0 0\u00a0 249M\u00a0\u00a0 0% <\/code><code>\/dev\/shm<\/code><\/div>\n<div><code>\/dev\/sda9<\/code>\u00a0\u00a0\u00a0\u00a0 <code>ext3\u00a0\u00a0\u00a0 2,8G\u00a0\u00a0 69M\u00a0 2,6G\u00a0\u00a0 3% <\/code><code>\/home<\/code><\/div>\n<div><code>\/dev\/sda8<\/code>\u00a0\u00a0\u00a0\u00a0 <code>ext3\u00a0\u00a0\u00a0 234M\u00a0 6,1M\u00a0 216M\u00a0\u00a0 3% <\/code><code>\/tmp<\/code><\/div>\n<div><code>\/dev\/sda5<\/code>\u00a0\u00a0\u00a0\u00a0 <code>ext3\u00a0\u00a0\u00a0 2,8G\u00a0 639M\u00a0 2,0G\u00a0 24% <\/code><code>\/usr<\/code><\/div>\n<div><code>\/dev\/sda6<\/code>\u00a0\u00a0\u00a0\u00a0 <code>ext3\u00a0\u00a0\u00a0 1,4G\u00a0 273M\u00a0 1,1G\u00a0 21% <\/code><code>\/var<\/code><\/div>\n<div><code>\/dev\/drbd1<\/code>\u00a0\u00a0 <code>ocfs2\u00a0\u00a0\u00a0 8,0G\u00a0 151M\u00a0 7,9G\u00a0\u00a0 2% <\/code><code>\/ocfs2<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Caso d\u00ea algum problema na inicializa\u00e7\u00e3o, como um dos dois servidores n\u00e3o ficar como primary, podemos resolver da seguinte maneira:<\/p>\n<p>&#8211; Primeiro vamos mandar desmontar as parti\u00e7\u00f5es montadas com o OCFS2 nos dois servidores:<\/p>\n<p><strong># umount \/ocfs2<\/strong><\/p>\n<p>&#8211; Agora vamos mandar reiniciar o DRBD nos dois servidores:<\/p>\n<p><strong># \/etc\/init.d\/drbd restart<\/strong><\/p>\n<p>&#8211; Agora vamos for\u00e7ar a utiliza\u00e7\u00e3o dos dois nodos primary:<\/p>\n<p><strong># drbdadm &#8212; &#8211;overwrite-data-of-peer primary r1<\/strong><\/p>\n<p>&#8211; Depois, \u00e9 s\u00f3 remontar as parti\u00e7\u00f5es novamente nos dois servidores:<\/p>\n<p><strong># mount.ocfs2 \/dev\/drbd1 \/ocfs2\/<\/strong><\/p>\n<h1>Erros de sincronismo<\/h1>\n<p>Exemplo de erro de sincronismo dos discos, aonde perdemos a consist\u00eancia dos dados, com isso, vamos precisar acertar este erro:<\/p>\n<p><strong># cat \/proc\/drbd<\/strong><\/p>\n<p>Resultado:<\/p>\n<blockquote><p>version: 8.3.7 (api:88\/proto:86-91)<br \/>\nsrcversion: EE47D8BF18AC166BE219757<\/p>\n<p>1: cs:StandAlone ro:Secondary\/Unknown ds:Outdated\/DUnknown\u00a0\u00a0r&#8212;-<br \/>\nns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:258100<\/p><\/blockquote>\n<p>No nodo2, vamos mandar ele desconsiderar os dados que ele j\u00e1 tem e ressincronizar com o nodo1:<\/p>\n<p><strong># drbdadm &#8212; &#8211;discard-my-data connect r1<\/strong><\/p>\n<p>Agora vamos verificar a sincronismo:<\/p>\n<p><strong># cat \/proc\/drbd<\/strong><\/p>\n<p>Resultado:<\/p>\n<blockquote><p>version: 8.3.7 (api:88\/proto:86-91)<br \/>\nsrcversion: EE47D8BF18AC166BE219757<\/p>\n<p>1: cs:SyncTarget ro:Secondary\/Primary ds:Inconsistent\/UpToDate C r&#8212;-<br \/>\nns:0 nr:293128 dw:287336 dr:0 al:0 bm:19 lo:1448 pe:35179 ua:1448 ap:0 ep:1 wo:b oos:207647312<br \/>\n[&gt;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..] sync&#8217;ed: 0.2% (202780\/203060)M<br \/>\nfinish: 1:00:10 speed: 57,464 (57,464) K\/sec<\/p><\/blockquote>\n<p>Assim que terminar este processo, precisamos somente for\u00e7ar os dois como primary da seguinte forma:<\/p>\n<p><strong># drbdadm &#8212; &#8211;overwrite-data-of-peer primary r1<\/strong><\/p>\n<p>O discos ainda sincronizando e for\u00e7ados como primary:<\/p>\n<p><strong># cat \/proc\/drbd<\/strong><\/p>\n<blockquote><p>version: 8.3.7 (api:88\/proto:86-91)<br \/>\nsrcversion: EE47D8BF18AC166BE219757<\/p>\n<p>1: cs:SyncSource ro:Primary\/Primary ds:UpToDate\/Inconsistent C r&#8212;-<br \/>\nns:22204456 nr:0 dw:0 dr:22211888 al:0 bm:1356 lo:40 pe:1833 ua:1797 ap:0 ep:1 wo:b oos:185737536<br \/>\n[=&gt;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;] sync&#8217;ed: 10.7% (181384\/203060)M<br \/>\nfinish: 0:55:40 speed: 55,560 (47,940) K\/sec<\/p><\/blockquote>\n<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\"><b>Plus de Heartbeat<\/b><\/p>\n<div>Pense que voc\u00ea precisa fazer o <em>HA<\/em> de um servidor de <em>FW<\/em>, por exemplo.<\/p>\n<p>O que tem de diferente? Voc\u00ea poderia perguntar.<\/p>\n<p>Pense nas interfaces de rede: Temos no m\u00ednimo 2 interfaces, uma WAN e uma LAN. Neste caso, precisar\u00edamos configurar o Heartbeat para atribuir endere\u00e7os virtuais para as duas interfaces.<\/p>\n<p>Vamos a um exemplo, vou utilizar as interfaces de bond mesmo.<\/p>\n<p>Agora vamos instalar o Heartbeat no srv02:<\/p>\n<p><strong># aptitude update &amp;&amp; aptitude dist-upgrade -y &amp;&amp; apt-get install heartbeat heartbeat-dev -y<\/strong><\/p>\n<p>Agora vamos acertar a configura\u00e7\u00e3o do Heartbeat:<\/p>\n<p><strong># vim \/etc\/ha.d\/ha.cf<\/strong><\/p>\n<p>Edite:<\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_895711\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code># Informe os nomes dos computadores que formam a replica\u00e7\u00e3o(deve ser igual a sa\u00edda do comando \"uname -n<\/code><\/div>\n<div><code>node srv01<\/code><\/div>\n<div><code>node srv02<\/code><\/div>\n<div><\/div>\n<div><code># Qual a interface vai ser usada para comunica\u00e7\u00e3o<\/code><\/div>\n<div><code>mcast bond0 225.0.0.1 694 1 0<\/code><\/div>\n<div><code>mcast bond1 225.0.0.1 694 1 0<\/code><\/div>\n<div><\/div>\n<div><code># Fazer com que a m\u00e1quina principal receba seus servi\u00e7os quando retornar a ativa<\/code><\/div>\n<div><code>auto_failback on<\/code><\/div>\n<div><\/div>\n<div><code># Arquivos de log<\/code><\/div>\n<div><code>debugfile <\/code><code>\/var\/log\/ha-debug<\/code><\/div>\n<div><code>logfile <\/code><code>\/var\/log\/ha-log<\/code><\/div>\n<div><\/div>\n<div><code># Freq\u00fc\u00eancia, em segundos, da verifica\u00e7\u00e3o das m\u00e1quinas<\/code><\/div>\n<div><code>keepalive 1<\/code><\/div>\n<div><\/div>\n<div><code># Tempo m\u00ednimo para declarar a outra m\u00e1quina como morta<\/code><\/div>\n<div><code>deadtime 5<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Agora vamos acertar a configura\u00e7\u00e3o do nosso IP compartilhado pelo Heartbeat:<\/p>\n<p><strong># vim \/etc\/ha.d\/haresources<\/strong><\/p>\n<div>srv01 IPaddr::10.101.0.27\/24\/bond0\/10.101.0.255<br \/>\nsrv01 IPaddr::172.20.0.27\/24\/bond1\/172.20.0.255<\/div>\n<p>Explicando o arquivo acima:<\/p>\n<ul>\n<li>srv01: nome do servidor master<\/li>\n<li>IPaddr::10.101.0.27\/24: IP que vai ser compartilhado pelo Heartbeat<\/li>\n<li>bond0: Interface que vai receber o IP compartilhado pelo Heartbeat<\/li>\n<li>10.101.0.25: Endere\u00e7o de broadcast<\/li>\n<\/ul>\n<p>Agora vamos acertar o arquivo com a senha de autentica\u00e7\u00e3o entre os Heartbeats:<\/p>\n<p><strong># vim \/etc\/ha.d\/authkeys<\/strong><\/p>\n<div>auth 3<br \/>\n3 md5 h34rt64t<\/div>\n<p>Agora vamos acertar as permiss\u00f5es do arquivo de senha:<\/p>\n<p><strong># chmod 600 \/etc\/ha.d\/authkeys<\/strong><\/p>\n<p>Agora vamos instalar o Heartbeat no srv02:<\/p>\n<p><strong># aptitude update &amp;&amp; aptitude dist-upgrade -y &amp;&amp; apt-get install heartbeat heartbeat-dev -y<\/strong> Agora vamos acertar a configura\u00e7\u00e3o do Heartbeat:<\/p>\n<p><strong># vim \/etc\/ha.d\/ha.cf<\/strong><\/p>\n<div id=\"forumCodeDiv\">\n<div id=\"highlighter_63250\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code># Informe os nomes dos computadores que formam a replica\u00e7\u00e3o(deve ser igual a sa\u00edda do comando \"uname -n<\/code><\/div>\n<div><code>node srv01<\/code><\/div>\n<div><code>node srv02<\/code><\/div>\n<div><\/div>\n<div><code># Qual a interface vai ser usada para comunica\u00e7\u00e3o<\/code><\/div>\n<div><code>mcast bond0 225.0.0.1 694 1 0<\/code><\/div>\n<div><code>mcast bond1 225.0.0.1 694 1 0<\/code><\/div>\n<div><\/div>\n<div><code># Fazer com que a m\u00e1quina principal receba seus servi\u00e7os quando retornar a ativa<\/code><\/div>\n<div><code>auto_failback on<\/code><\/div>\n<div><\/div>\n<div><code># Arquivos de log<\/code><\/div>\n<div><code>debugfile <\/code><code>\/var\/log\/ha-debug<\/code><\/div>\n<div><code>logfile <\/code><code>\/var\/log\/ha-log<\/code><\/div>\n<div><\/div>\n<div><code># Freq\u00fc\u00eancia, em segundos, da verifica\u00e7\u00e3o das m\u00e1quinas<\/code><\/div>\n<div><code>keepalive 1<\/code><\/div>\n<div><\/div>\n<div><code># Tempo m\u00ednimo para declarar a outra m\u00e1quina como morta<\/code><\/div>\n<div><code>deadtime 5<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Agora, vamos acertar a configura\u00e7\u00e3o do nosso IP compartilhado pelo Heartbeat:<\/p>\n<p><strong># vim \/etc\/ha.d\/haresources<\/strong><\/p>\n<div>srv01 IPaddr::10.101.0.27\/24\/bond0\/10.101.0.255<br \/>\nsrv01 IPaddr::172.20.0.27\/24\/bond0\/172.20.0.255<\/div>\n<p>Agora, vamos acertar o arquivo com a senha de autentica\u00e7\u00e3o entre os Heartbeats:<\/p>\n<p><strong># vim \/etc\/ha.d\/authkeys<\/strong><\/p>\n<div>auth 3<br \/>\n3 md5 h34rt64t<\/div>\n<p>Agora vamos acertar as permiss\u00f5es do arquivo de senha:<\/p>\n<p><strong># chmod 600 \/etc\/ha.d\/authkeys<\/strong><\/p>\n<p>Agora vamos reiniciar o Heartbeat nos dois servidores:<\/p>\n<p><strong># \/etc\/init.d\/heartbeat restart<\/strong><\/p>\n<p>Agora vamos consultar as interfaces no servidor srv01:<\/p>\n<p><strong># ifconfig<\/strong><\/p>\n<p>Resultado:<\/p>\n<blockquote><p>bond0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:3f:b0:b8<br \/>\ninet end.: 10.101.0.25 Bcast:10.101.0.255 Masc:255.255.255.0<br \/>\nendere\u00e7o inet6: fe80::a00:27ff:fe3f:b0b8\/64 Escopo:Link<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:28239 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:1356 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:2576871 (2.4 MiB) TX bytes:464634 (453.7 KiB)<\/p>\n<p>bond0:0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:3f:b0:b8<br \/>\ninet end.: 10.101.0.27 Bcast:10.101.0.255 Masc:255.255.255.0<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<\/p>\n<p>bond1\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:ff:cd:7c<br \/>\ninet end.: 172.20.0.25 Bcast:172.20.0.255 Masc:255.255.255.0<br \/>\nendere\u00e7o inet6: fe80::a00:27ff:feff:cd7c\/64 Escopo:Link<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:204376 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:36125 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:230398360 (219.7 MiB) TX bytes:9571891 (9.1 MiB)<\/p>\n<p>bond1:0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:ff:cd:7c<br \/>\ninet end.: 172.20.0.27 Bcast:172.20.0.255 Masc:255.255.255.0<br \/>\nUP BROADCASTRUNNING MASTER MULTICAST MTU:1500 M\u00e9trica:1<\/p>\n<p>eth0\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:3f:b0:b8<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:14227 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:684 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0\u00a0txqueuelen:1000<br \/>\nRX bytes:1300809 (1.2 MiB) TX bytes:246914 (241.1 KiB)<\/p>\n<p>eth1\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:3f:b0:b8<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:14012 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:672 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0\u00a0txqueuelen:1000<br \/>\nRX bytes:1276062 (1.2 MiB) TX bytes:217720 (212.6 KiB)<\/p>\n<p>eth2\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:ff:cd:7c<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:190049 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:18077 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0\u00a0txqueuelen:1000<br \/>\nRX bytes:229048128 (218.4 MiB) TX bytes:4820003 (4.5 MiB)<\/p>\n<p>eth3\u00a0\u00a0\u00a0\u00a0Link encap:Ethernet Endere\u00e7o de HW 08:00:27:ff:cd:7c<br \/>\nUP BROADCASTRUNNING SLAVE MULTICAST MTU:1500 M\u00e9trica:1<br \/>\nRX packets:14327 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:18048 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0\u00a0txqueuelen:1000<br \/>\nRX bytes:1350232 (1.2 MiB) TX bytes:4751888 (4.5 MiB)<\/p>\n<p>lo\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Link encap:Loopback Local<br \/>\ninet end.: 127.0.0.1 Masc:255.0.0.0<br \/>\nendere\u00e7o inet6: ::1\/128 Escopo:M\u00e1quina<br \/>\nUP LOOPBACKRUNNING MTU:16436 M\u00e9trica:1<br \/>\nRX packets:0 errors:0 dropped:0 overruns:0 frame:0<br \/>\nTX packets:0 errors:0 dropped:0 overruns:0 carrier:0<br \/>\ncolis\u00f5es:0 txqueuelen:0<br \/>\nRX bytes:0 (0.0 B) TX bytes:0 (0.0 B)<\/p><\/blockquote>\n<p>Aqui, o que \u00e9 preciso mudar s\u00e3o as interfaces, caso n\u00e3o trabalhe com o bond e os endere\u00e7os IPs. \ud83d\ude09<\/p><\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>Introdu\u00e7\u00e3o E a\u00ed, galera. Aqui vou abordar a configura\u00e7\u00e3o de Bonding para termos a redund\u00e2ncia de interfaces f\u00edsicas para o servi\u00e7o de HA, pois o Heartbeat vai trabalhar no bond0 e o DRBD + OCFS2, vai trabalhar no bond1. Estou utilizando o algoritmo round-robin, que faz o balanceamento dos dados, por\u00e9m, temos outros algoritmos que [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1,42,51],"tags":[235,238,237,236],"class_list":["post-423","post","type-post","status-publish","format-standard","hentry","category-viazap","category-leitura-recomendada","category-linux-linuxrs","tag-bonding","tag-debian-squeeze","tag-drbd-ocfs2","tag-heartbeat-bonding"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=423"}],"version-history":[{"count":1,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/423\/revisions"}],"predecessor-version":[{"id":424,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/423\/revisions\/424"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}