[MASOCH-L] Fault tolerance em Linux

Ricardo Rodrigues rcr.listas at ig.com.br
Wed Sep 10 14:24:51 BRT 2008


Oi Renato,

Não sou especialista, mas posso compartilhar o pouco que (acho que) aprendi.

No caso específico de Solaris, há dois modos de funcionamento de alta
disponibilidade e dois métodos de health-check (para identificar
quando uma interface falha). O entendimento do primeiro é importante
para o segundo.

1. Modos de funcionamento da alta disopnibilidade:

Você pode escolher entre load sharing (as duas interfaces enviam
tráfego de produção simultaneamente) ou master/standby (que foi o
exemplo que dei com IF_A e IF_B no e-mail anterior).

No modo master/standby, uma interface fica enviando os pacotes de
produção (IP lógico) e a interface de standby fica de sobreaviso.
Quando o SO (ou driver) identifica falha da interface master, a
standby envia um arp gratuito anunciando o novo mac-address do IP
lógico. A vantagem de se configurar o modo master/standby é que TODO o
tráfego de produção passa por apenas uma interface. Quando é
necessário fazer troubleshooting de alguma aplicação, basta rodar o
sniffer (no Solaris, snoop) em uma única interface de rede. No modo
load sharing, seria necessário rodar snoop nas duas interfaces (e
quebrar a cabeça procurando um pacote que saiu por uma interface e
voltou por outra, comparando o timestamp entre os pacotes de cada
interface, etc). Além disso, como o objetivo é alta disponibilidade,
seu servidor tem que ser capaz de funcionar quando apenas uma
interface está funcionando.

2. Métodos de health-check (vou tentar explicar considerando uma
configuração de master/standby)

2a) Via ping ao roteador: Cada interface de rede (IF_A e IF_B) tem um
IP físico e fica pingando o roteador padrão desta sub-rede física.
Quando uma interface não consegue receber resposta e a outra consegue,
significa que a primeira está com falha (na verdade pode ser falha da
interface, do cabo, do switch, etc).

2b) Via "broadcast": Cada interface de rede (IF_A e IF_B) tem um IP
físico. Estes dois IPs têm que pertencer à mesma sub-rede (sub-rede
física), mas obviamente é recomendado que estejam em switches
distintos. Estes IPs físicos podem inclusive pertencer a uma sub-rede
distinta da rede do IP lógico. Podemos, por exemplo, ter IPs físicos
de uma rede privada e IP lógico de uma rede pública. Estas interfaces
ficam verificando se recebem pacotes de outros IPs da mesma sub-rede
física. Quando uma interface pára de receber e a outra não, significa
que a primeira perdeu conectividade. Para este método funcionar é
necessário que cada interface receba pacotes de ao menos outros dois
IPs da mesma sub-rede física.

Algumas recomendações:

- Evite usar duas interfaces de uma mesma placa (uma quad, por
exemplo). Se esta placa falhar, você perderá as duas interfaces e
perderá conectividade.

- Em máquinas com várias interfaces onboard, analise a arquitetura da
máquina e procure escolher duas interfaces de rede que estejam
associadas a controladoras distintas.

Desculpe o e-mail longo. Espero que seja útil. :-)

Abraços,
Ricardo

2008/9/10 Renato Rodrigues Branco <renatorbranco at gmail.com>:
> Olá Ricardo !
> Muito obrigado !
> É exatamente isto que eu precisava.
> Agora vamos a dúvida do funcionamento propriamente dito: como ele detecta a
> falha ? pings (acho que não), 802.3ad (tb acho que não pois será em switch
> diferente), sinais elétricos da interface, manda gratuitos arp ?
> Gostaria de entender como funciona para "debugar" quando estiver com mal
> funcionamento.
> Obrigado de novo.
>
> 2008/9/10 Ricardo Rodrigues <rcr.listas at ig.com.br>
>
>> Oi Rubens,
>>
>> Isso é uma funcionalidade do driver ou do sistema operacional? Ao
>> menos em Solaris, existe o IPMP (IP Multi path) que permite fazer isso
>> inclusive usando switches diferentes. As duas interfaces (IF_A e IF_B)
>> recebem um endereço IP "físico" e a interface ativa (por exemplo,
>> IF_A) recebe também um IP lógico. IF_A faz um arp gratuito na rede e
>> começa a receber tráfego. Enquanto isso, IF_A e IF_B fazerm ping de
>> teste ao roteador padrão (ou aos demais IPs da mesma sub-rede). Quando
>> o SO (ou driver?) detecta que IF_A perdeu conectividade e que IF_B
>> continua com conectividade, IF_B envia um arp gratuito na rede com o
>> novo mac-address do IP lógico.
>>
>> Encontrei isso aqui, espero que ajude:
>>
>> http://blogdovicente.com/2008/02/14/failover-de-placas-de-rede-no-linux-bonding/
>>
>> Abraços,
>> Ricardo
>>
>>
>> >
>> >
>> > 2008/9/9 Renato Rodrigues Branco <renatorbranco at gmail.com>
>> >>
>> >> Pessoal, gostaria de saber se alguém já configurou 2 placas de rede em
>> uma
>> >> máquina em um linux qualquer,
>> >> cada uma em um switch diferente, fazendo como se fosse uma só.
>> >> Alguns chamam de NFT (Network Fault Torelance), de Teaming, de bonding
>> etc.
>> >> Ou seja, preciso saber se é possível e o que é usado: LACP etc.
>> >> Obrigado.
>> >> --
>> >> A Terra não é uma herança de nossos pais e avós, mas sim um empréstimo
>> de
>> >> nossos filhos e netos". Ditado africano
>> >> __
>> >> masoch-l list
>> >> https://eng.registro.br/mailman/listinfo/masoch-l
>> > __
>> > masoch-l list
>> > https://eng.registro.br/mailman/listinfo/masoch-l
>> >
>> __
>> masoch-l list
>> https://eng.registro.br/mailman/listinfo/masoch-l
>>
>
>
>
> --
> A Terra não é uma herança de nossos pais e avós, mas sim um empréstimo de
> nossos filhos e netos". Ditado africano
> __
> masoch-l list
> https://eng.registro.br/mailman/listinfo/masoch-l
>


More information about the masoch-l mailing list