\\ ====== RealTime Com o PostgreSQL ====== \\ \\ ===== 1. Introducão: ===== \\ Resumidamente, o RealTime fornece a possibilidade de colocar os arquivos de configuração em servidores Base de Dados. Não se precisa dizer que isso facilita a configuração do servidor asterisk através de programas externos, scripts e webpages.\\ \\ Quando fazendo mudanças no dialplan ou nos usuários, não há necessidade para um reload ou um restart, tudo é pego na base de dados todas às vezes. (isso é opcional e pode ser desabilitado, veja adiante).\\ \\ Além da facilidade para fazer interface com outras ferramentas de configuração, esse também permite se ter um servidor reserva em standby rodando o asterisk, ou mesmo facilitar uma configuração de balanceamento de carga.\\ \\ Em geral, o uso do RealTime dá a você a flexibilidade quando você armazena e arranca dados do Asterisk.\\ \\ \\ ===== 2. Mysql, iodbc, unixODBC Nativo ===== \\ Existem duas formas para você poder se conectar ao módulo realtime a uma Base de Dados.\\ \\ A primeira forma é usar o driver MySQL que é embutida no Asterisk-addons e a segunda forma é usar o driver ODBC que está incluído no Asterisk HEAD CVS snapshot.\\ \\ O driver ODBC é de longe a melhor opção, é uma abordagem mais ampla para acesso a base de dados, e suporta muitas e não apenas o mysql. (é também o mais usado, conseqüentemente mais testado, e, portanto, o mais estável provavelmente dos dois).\\ \\ Para os objetivos desse tutorial, usamos o ODBC. Novamente temos duas opções, no linux existem duas formas para conectividade ODBC, chamada iodbc e unixodbc. Usamos o unixodbc. Também temos a mencionar que por causa de algumas duplicações de arquivos cabeçalhos você não pode usar ambos os driver ao mesmo tempo, você tem de escolher um deles. Importante é que a configuração de ambos é feita numa forma similar ou com pequenas alterações.\\ \\ Este tutorial é todo a respeito do ODBC com a base de dados pgsql (PostgreSQL). Se desejamos usar o pgsql, vamos precisar não somente do ODBC apim, mas também o driver odbc-postgresql.\\ \\ Também precisaremos criar algumas coisas na base de dados, isso será documentado adiante neste tutorial.\\ \\ \\ {img src=http://www.asteriskguru.com/tutorials/realtime_pgsql_image307.gif link=http://www.asteriskguru.com/tutorials/realtime_pgsql_image307.gif}\\ \\ \\ ===== 3. Questão Desempenho e Confiabilidade de Projeto. ===== \\ Se o Asterisk precisa se conectar a base de dados para todos os passos executa no dialplan, a base de dados pode ficar muito sobrecarregada.\\ \\ É pouco conhecido que o Asterisk ~np~RealTime~/np~ pode ser configurado de duas formas diferentes:\\ \\ \\ ===== Realtime Estático ===== \\ Neste caso, o dado é recuperado do servidor database somente no startup e nos reloads.\\ \\ A vantagem é que a carga sobre o servidor database é baixa, e se o servidor database cair, isso não consegue afetar seu Asterisk que está em execução.\\ \\ A grande desvantagem é, ... Realmente isso não é real time:) Apos qualquer alteração na base de dados, o Asterisk precisará ser recarregado).\\ \\ \\ ===== Realtime Dinâmico ===== \\ Essa é a segunda possibilidade, aqui todas as alterações de configuração refletem imediatamente no realtime. Mas, se o seu servidor de base de dados cair, assim também vai acontecer com o seu serviço VoIP.\\ \\ \\ \\ ===== 4. A Instalação ===== \\ Neste tutorial iremos partir do estoque de uma distribuição Debian, mas qualquer outra Distro será beleza também, embora algumas coisas pequenas sejam diferentes.\\ \\ \\ Asterisk e realtime precisam de alguns pacotes adicionais instalados.\\ \\ \\ Pacotes necessários antes da instalação do Asterisk:\\ \\ \\ ''cvs\\ libssl-dev\\ zlib1g-dev''\\ \\ \\ No Debian você os pode instalar com o comando apt-get install .\\ \\ \\ Pacotes necessários para incluir RealTime no Asterisk:\\ \\ \\ ''unixodbc (our version is 2.2.4-11)\\ unixodbc-dev\\ postgresql (our version is 7.4.7-6sarge1)\\ postgresql-client\\ postgresql-contrib\\ postgresql-dev\\ odbc-postgresql (our version is 07.03.0200-5)''\\ \\ \\ Como desejamos ter uma versão do asterisk com suporte ao RealTime, precisamos pegar cvs head do servidor CVS asterisk:\\ \\ A versão que usamos para esse tutorial foi - CVS-HEAD-06/03/05-10:59:09.\\ Escolha algum diretório onde colocar os fontes e faça o download dos fontes.\\ \\ ''astrealtime:~# mkdir /usr/src/asterisk\\ astrealtime:~# cd /usr/src/asterisk\\ astrealtime:~# export CVSROOT=:pserver:anoncvs@cvs.digium.com:/usr/cvsroot\\ astrealtime:~# cvs login (password for login on cvs server is "anoncvs")\\ astrealtime:~# cvs checkout zaptel libpri asterisk (getting CVS HEAD sources)\\ astrealtime:~# cd /usr/src/asterisk/libpri\\ astrealtime:~# make\\ astrealtime:~# make install\\ astrealtime:~# cd /usr/src/asterisk/zaptel\\ astrealtime:~# make linux26''\\ \\ \\ Faremos tudo com o kernel 2.6.x. \\ \\ Assegure de incluir as seguintes características no kernel: \\ ''Device Drivers -> Character Devices -> Enhanced Real Time Clock Support Library Routines -> CRC-CCITT functions''\\ \\ \\ É recomendado, mas não necessário compilá-los como módulos.\\ \\ \\ Nota: No kernel 2.6, você não mais precisa do módulo usb_uhci.\\ \\ ''astrealtime:~# make install\\ astrealtime:~# cd /usr/src/asterisk/asterisk''\\ \\ \\ Se você tem um tipo de processador especial você pode alterá-lo no Makefile antes da compilação do Asterisk.\\ \\ Por exemplo, para o VIA Samuel 2 processors precisa estar com o parâmetro PROC=i586 definido neste Makefile do contrário o Asterisk não vai rodar.\\ \\ ''astrealtime:~# make\\ astrealtime:~# make install\\ astrealtime:~# make templates''\\ \\ \\ Se essa é a sua primeira instalação do Asterisk você pode criar modelos (templates) para os arquivos de configuração necessários.\\ \\ \\ \\ ===== 5. Configuração UnixODBC ===== \\ O próximo passo é configurar o driver ODBC, no nosso caso UnixODBC. Se você instalou a partir dos pacotes Debian você pode usar arquivos modelos (templates) para montar os arquivos de configuração necessários. Os arquivo de configuração que precisamos para fazer o odbc funcionar são /etc/odbc.ini e /etc/odbcinst.ini.\\ \\ \\ ''astrealtime:~# odbcinst -i -d -f /usr/share/psqlodbc/odbcinst.ini.template astrealtime:~# cat /usr/share/doc/odbc-postgresql/examples/odbc.ini.template >> /etc/odbc.ini''\\ \\ \\ {img src=http://www.asteriskguru.com/tutorials/realtime_pgsql_image274.jpg desc= link=http://www.asteriskguru.com/tutorials/realtime_pgsql_image274.jpg}\\ \\ \\ {img src=http://www.asteriskguru.com/tutorials/realtime_pgsql_image273.jpg desc= link=http://www.asteriskguru.com/tutorials/realtime_pgsql_image273.jpg}\\ \\ \\ Depois dos dois últimos passos temos os arquivos /etc/odbcinst.ini e /etc/odbc.ini.\\ \\ \\ \\ ===== 6. Configuração do PGSQL ===== \\ Agora precisamos incluir algumas funções extras e tipos de dados na base de dados PostgreSQL para sermos capazes de usar conexão ODBC apropriada.\\ \\ ''astrealtime:~# su – postgres (usuário admin do PostGreSQL)\\ astrealtime:~$ psql -d template1 show queues\\ No queues.>''\\ \\ Em geral a forma que você pode verificar seu sistema de que existe uma conexão com a database a partir da CLI para verificar a conectividade ODBC é:\\ \\ \\ ''astrealtime*CLI>odbc show''\\ \\ \\ Possível resultado do comando pode ser:\\ '' Name: ast_cnf\\ DSN: asterisk\\ Connected: yes''\\ \\ \\ ==== Verificando registros e leitura na database dele através do módulo realtime: ==== \\ \\ ''astrealtime*CLI>realtime load sipusers name user_name''\\ \\ \\ Resultados possíveis podem ser: \\ \\ ^ **Column Name**^**Column Value** ^ | id|3 | | name|user_name | | canreinvite|yes | | context|idefisk | | host|dynamic | | nat|no | | port|4569 | | secret|bad | | type|friend | | username|user_name | | disallow|all | | allow|g729 | | allow|ilbc | | allow|gsm | | allow|ulaw | | allow|alaw | | regseconds|1117842618 | | ipaddr|10.3.3.22 | | cancallforward|yes | \\ \\ \\ ===== 7. Nota: ===== Devido à carência de documentação em português sobre como configurar o realtime com o Postgresql, resolvi compartilhar essa tradução com a comunidade AsteriskBrasil e com os usuários do Asterisk no Brasil e contribuir para melhor documentar o Asterisk em português. Todos podem dar sua contribuição para melhorar esse tutorial.\\ \\