Um Exemplo de Alta Disponibilidade do Asterisk com o Heartbeat :: Admirável Mundo Novo




Muito Bem Vindo

Prezado Leitor, a proposta desse Blog é compartilhar conhecimento com as pessoas que trabalham com Linux, Asterisk, OpenSER, e com tecnologia de voz sobre a rede IP em geral, através de tutoriais, dicas, howto, notícias entre outros assuntos.

Atente para termo de uso do conteúdo do blog no rodapé da página.

segunda-feira, 28 de julho de 2008

Um Exemplo de Alta Disponibilidade do Asterisk com o Heartbeat



A seguir um howto que mostra um exemplo simples de implementação de alta disponibilidade do Asterisk usando conjuntamente o gateway foneBridge da Redfone. Para conhecer mais sobre essa solução tem publicado aqui no Blog um artigo sobre a integração desse produto fonebridge com Asterisk em um esquema HA (High Availability).

Da mesma forma também existe aqui um tutorial com a explicação sobre HA com o Heartbeat. Existem várias outras variações para otimizar o uso dos servidores.





Um HOWTO de Alta Disponibilidade do Asterisk com o Heartbeat e fonebridge da Redfone



Fonte original: http://www.voip-info.org/wiki/view/Asterisk+High+Availability+Solutions, acessado em 01/12/2006.




Visão Geral


Esse é um HOWTO para uma instalação simples do Asterisk para Alta Disponibilidade usando Ferramentas Open Source combinadas com capacidade de recuperação de falhas e hardware inteligente (o fonebridge).


O utilitário heartbeat é usado em um cenário 'Passivo-Ativo', mas pode facilmente ser modificado para fazer o cenário 'Ativo-Ativo'.





Informação Básica

Os grandes clientes da indústria de Call Center e Bancos detestam aceitar a idéia de uma implementação sem nenhum mecanismo de recuperação de falha e sem mecanismo de alta disponibilidade, por isso é que estamos usando a combinação de hardware e software para atender a essas demandas.





Informação Básica

O cenário seguinte foi usado na operação de um Call center de tamanho médio que possui por volta de 60 ramais analógicos e com uma única porta E1 PRI.





Hardware


· 2 x Servidores Supermicro 1U (P4, 512Mb, Dual Gig Eth, Dual SATA com RAID 0);

· 1 x Redfone fonebridge 4E1 para terminação da conectividade PRI, banco de canais poderoso e fornece capacidade de recuperação de falhas entre os dois Supermicros;

· 1 x T1 PRI;

· 3 x banco de canais FXS Adtran 750 para abrir telefones analógicos;

· 2 x Protectors UPS/Surge.




Software


· Fedora Core 4;

· Asterisk, zaptel, libpri baixada do head CVS;

· Conjunto de software Linux HA da Ultramonkey. Eles tem RPMs para Red Heart 3 que instala bem sobre o Fedora Core 4;

· Cada servidor é uma imagem especular um do outro em termos de configurações do Asterisk e de software.




Instalação do Software

Depois de uma instalação padrão do FC4, Asterisk, zaptel, libpri, foi instalado todos os pacotes da Ultramonkey seguindo de certa forma seu guia: http://www.ultramonkey.org/3/installation-rh.el.3.html.


Você pode ter algumas questões de dependências, notadamente as libs do perl, mas nós conseguimos satisfazer todas elas usando o Yum. Se você estiver rodando o Debian, você deve ser capaz de realizar as mesmas coisas com o Apt.





Configurando o Hearbeat

Após a instalação do heartbeat existem somente três arquivos que precisam ser modificados para seu ambiente. São eles: ha.cf, haresources e o authkeys. Todos eles devem ser colocados no diretório /etc/ha.d/. Os arquivos devem ser absolutamente idênticos em todas as máquinas que fazem parte do seu Cluster Asterisk para Alta Disponibilidade. Temos somente dois servidores rodando, mas você pode facilmente escalar para mais usando precisamente as mesmas configurações. Estes são os nossos arquivos de configurações. Todas as linhas comentadas foram removidas, mas conforme se pode ver, elas são curtas e simples.



ha.cf:

debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 200ms
deadtime 2
warntime 1
initdead 120
udpport 694
bcast eth0
node asterisk1
node asterisk2




haresources:

asterisk1 10.10.10.110 fonulator asterisk





authkeys:

auth 1

1 sha1 SuPerS&cretP@$$werd




Operação

Cada servidor Asterisk tem um único endereço IP que é parte do segmento de rede LAN. Esta pode ser uma rede NATeada ou uma face da Internet com endereço IP público. O Heartbeat gerencia a monitoração do estado do hardware de cada máquina sobre a rede Ethernet ou sobre a porta serial ou uma combinação de ambas (recomendado) e atribui o endereço IP Virtual ao servidor Asterisk que está atualmente em um estado ativo. Exemplo:

Asterisk1= 10.10.10.100

Asterisk2= 10.10.10.120

Virtual IP= 10.10.10.110 (veja o haresources)



Com o heartbeat é importante que seus nomes de nó’s sejam idênticos aos nomes de host refletidos no comando host# uname -n. Você também pode precisar adicionar manualmente instruções do endereço IP e nome de hosts ao seu arquivo /etc/hosts, de sorte que cada máquina saiba como alcançar um ao outro via IP.


Seguindo as regras no arquivo haresources, o Heartbeat vai atribuir o nome asterisk1 a máquina como o servidor principal quando ambos os sistemas fazem o StartUp. Ele então startará os scripts seguintes: fonulator (este é o pequeno script que configura o fonebridge) e o asterisk que starta o servidor Asterisk1. Estes são ambos os scripts padrões do StartUp colocados no diretório /etc/init.d/.


Se o servidor principal sofrer uma pane de hardware ou simplesmente parar de responder as mensagens heartbeat trocadas entre os dois nó’s, o asterisk2 vai executar /etc/init.d/fonulator start para reconfigurar o fonebridge em operação para que esse, então, comece a redirecionar o tráfego de mídia para asterisk2 seguido pelo script /etc/init.d/asterisk start para startar o serviço Asterisk no servidor2 .


Resultados

Com o heartbeat, a transferência de controle do endereço IP virtual ocorre em menos de segundo. O utilitário fonulator re-configura o gateway fonebridge quase ao mesmo tempo e depois dependendo de sua plataforma de hardware e da complexidade das aplicações rodando no Asterisk, isso pode ficar entre 5-15 segundos para o Asterisk começar rodar no seu servidor secundário, carregar todos os arquivos de configuração, limpar alarmes e ficar pronto para processar chamadas. O tempo total de recuperação de falha fica em torno de 15-20 segundos.





Recursos

Ultramonkey http://www.ultramonkey.org (pacotes de software para Alta Disponibilidade)
Linux HA http://www.linux-ha.org (O Projeto Linux para Alta Disponibilidade)
Redfone http://www.red-fone.com (Fabricante da fonebridge 4T1/E1)




Ultra Monkey


A solução atual implementada usa o UltraMonkey (http://www.ultramonkey.org) para balanceamento de carga e recuperação de falha e funciona igual a um campeão. Há obviamente um monte de detalhes aqui, e eu ficaria feliz em detalhá-los se as pessoas estiverem interessadas. Existe também um site que tem dois clusters com alcançabilidade uniforme para todos os telefones e os canais PRI´s. Nada disso requer muitos ajustes no plano de discagem em uma base diária.





Nenhum comentário:




Creative Commons License
Admirável Mundo Novo: Tudo Sobre Asterisk, OpenSER, Linux e Tecnologias de Voz sobre IP
by Cléviton Mendes de Araújo is licensed under a Creative Commons Atribuição 2.5 Brasil License.