Archivo por meses: febrero 2009

Asterisk con alta disponibilidad Parte (3)

[Visto: 3058 veces]

Asterisk con alta disponibilidad Parte (3)

Por Ing. Isaac Fernández Baca

Ahora que tenemos alta disponibilidad del demonio del Asterisk, la sincronización de los archivos de configuración entre la central principal y la de backup. Ello nos sirve para un escenario donde solo necesitamos un Asterisk con configuración a mano. Sin embargo Freepbx entre otros software de administración, manejan algunas parámetros con base de datos, en el caso de realtime por ejemplo. Además el cdr podemos estar guardándolo en una base de datos también. Por tanto necesitamos tener un backup de la base de datos en cuestión de la central principal en la de backup. Para esta labor vamos a utilizar replicación de base de datos en mysql. De esta manera, se replicaran los nuevos registros hechos en la base de datos de la central principal, en la central de backup.

Por ello para no generar incoherencias, debemos hacer un backup de la base de datos de la central principal y restaurarlo en la base de datos de la central de backup, antes de configurar la replicación.

Paso 1:
Master : 192.168.254.204
Slave : 192.168.254.202

Paso 2:
En el Master, realizar los cambios en el archivo my.cnf:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
old_passwords=1

log-bin
binlog-do-db= # input the database which should be replicated
binlog-ignore-db=mysql # input the database that should be ignored for replication
binlog-ignore-db=test

server-id=1

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Paso 3:
En el master, crear una cuenta de replicación para el esclavo en mysql.
mysql> grant replication slave on *.* to ‘replication’@192.168.254.202 identified by ‘slave’;
luego reiniciar el servicio de mysql en el master.

Paso 4:
Ahora editar el archivo my.cnf en el Slave :
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
old_passwords=1
server-id=2

master-host = 192.168.254.204
master-user = replication
master-password = slave
master-port = 3306

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Paso 5:
Reiniciar el servicio de mysql en el slave y luego
mysql> start slave;
mysql> show slave statusG;

*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.254.204
Master_User: replica
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: MASTERMYSQL01-bin.000009
Read_Master_Log_Pos: 4
Relay_Log_File: MASTERMYSQL02-relay-bin.000015
Relay_Log_Pos: 3630
Relay_Master_Log_File: MASTERMYSQL01-bin.000009
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 4
Relay_Log_Space: 3630
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 1519187
1 row in set (0.00 sec)
Slave_IO_Running y Slave_SQL_Running: deben estar en YES.

Paso 6:
En el master:
mysql> show master status;
+————————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+————————+———-+————–+——————+
|MysqlMYSQL01-bin.000008 | 410 | asterisk | |
+————————+———-+————–+——————+
1 row in set (0.00 sec)

Y ahora esta listo, debemos hacer pruebas ingresando datos, en la base de datos principal y observar como estos se reflejan en la central de backup
Sigue leyendo

Asterisk con alta disponibilidad Parte (2)

[Visto: 4118 veces]

Asterisk con alta disponibilidad Parte (2)

Por Ing. Isaac Fernández Baca

Luego de lograr la alta disponibilidad del demonio del Asterisk, necesitamos sincronizar los archivos de configuración, de esta manera al realizar algún cambio en la configuración del Asterisk principal, este replique en la configuración del Asterisk backup.

Podríamos hacerlo simplemente con un script que ejecute un scp periódicamente y copie los archivos del /etc/asterisk, pero esto no es muy eficiente. Puesto que podemos utilizar el rsync que es un programa que ofrece transmisión eficiente de datos incrementales comprimidos y cifrados, el algoritmo compara los checksum de manera eficiente, y cuando no encuentra coincidencias, envía los cambios e información de cómo reensamblarlos, de esta forma solo se copian los nuevos cambios.

He elaborado un strip que ejecuta el rsync, es necesario ponerle el password, luego he puesto este script en el crontab para que se ejecute periódicamente.

[root@cusco ~]# cat /sbin/syncdata.bash
#!/usr/bin/expect -f
spawn rsync -raz –progress –size-only /etc/asterisk/ 192.168.254.202:/etc/asterisk/
match_max 100000
# Look for passwod prompt
expect “*?assword:*”
send — “123456”
# send blank line (r) to make sure we get back to gui
send — “r”
expect eof

[root@cusco ~]# crontab -e
*/1 * * * * /sbin/syncdata.bash

Bueno todo esto lo hice con el rsync que ya venia instalado en un Centos 4.7
[root@cusco ~]# rpm -q rsync
rsync-2.6.3-1

Sigue leyendo

Asterisk con alta disponibilidad Parte (1)

[Visto: 6076 veces]

Asterisk con alta disponibilidad Parte (1)

Por Ing. Isaac Fernández Baca

Este tipo de configuración se implementa en centrales IP donde queremos brindar una alta disponibilidad.

Inicialmente necesitamos dos servidores que tengan asterisk instalado.

La herramienta a utilizar es heartbeat en su version 2.1.3, utilizaremos el heartbeat para sensar el servicio del asterisk en ambos servidores, y si se cae alguno de ellos el otro tomara su lugar, como maestro y esclavo, si cae el maestro, el esclavo toma su lugar, y si se levanta el maestro nuevamente lleva el mando.

Estamos usando Centos 4.7, instalamos en ambos servidores el heartbeat.
yum –y install heartbeat

Para este ejemplo el asterisk principal tiene el hostname cusco.com y el backup cuscobk.com

Para todas las configuraciones necesitamos este parámetro así que asegúrense de poner
el nombre de hostname la respuesta al comando
uname –n

[root@cusco /]# uname -n
cusco.com

[root@cuscobk /]# uname -n
cuscobk.com

Ahora debemos de modificar el archivo /etc/hosts de la siguiente forma,
En cusco.com :

[root@cuscobk /]# cat /etc/hosts
127.0.0.1 cuscobk.com cuscobk localhost.localdomain localhost
192.168.254.204 cusco.com cusco
192.168.254.202 cuscobk.com cuscobk

En cusco backup .com

[root@cuscobk /]# cat /etc/hosts
127.0.0.1 cuscobk.com cuscobk localhost.localdomain localhost
192.168.254.204 cusco.com cusco
192.168.254.202 cuscobk.com cuscobk

Notemos que el servidor maestro tiene la ip 192.168.254.204 y el esclavo la ip 192.168.254.202.

Ahora empezamos a configurar en el maestro, copiemos los siguientes archivos
cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d/
cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/
cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/

luego editamos el archivo vi /etc/ha.d/authkeys
auth 2
2 sha1 mipass

Cambiamos los permisos en el archivo authkeys :
chmod 600 /etc/ha.d/authkeys

Editemos el archivo ha.cf el cual es muy importante
vi /etc/ha.d/ha.cf

Agreguemos las siguientes lineas:
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
initdead 120
bcast eth0
udpport 694
auto_failback on
node cusco.com
node cuscobk.com

La parte final de la configuración del hearbeat es seleccionando los demonios que queremos que esten en alta disponibilidad, para nosotros asterisk
vi /etc/ha.d/haresources

Agreguemos la siguiente línea
cusco.com IPaddr::192.168.254.200/24/eth0 asterisk

Notemos que estamos poniendo la IP 192.168.254.200, esta nos servira como una ip virtual, que sera utilizada para la comunicación de asterisk, ya sea con los anexos sip iax, u otra comunicación voip que realice con asterisk.

Finalmente debemos de copiar los archivos de configuración del heartbeat del maestro al esclavo

scp -r /etc/ha.d/ root@192.168.254.202:/etc/

y con ello ya tenemos listo.
Para que siempre se inicie el heartbeat al prender el servidor agregamos en ambos

chkconfig heartbeat on

Reiniciamos el servicio en ambos servidores.

service heartbeat restart

Si no te tomaron bien los hostname, revisa todos los archivos donde se declara el hostname, que son básicamente tres
/etc/hosts
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-e
th0

Si tienes algún problema prueba reiniciando tus servidores, para que te tome bien el hostname.

Si todo esta bien, entonces desde otra maquina prueba haciendo ping a la ip virtual 192.168.254.200, y en el maestro deberas tener ambas ip, veamos con un ipconfig

[root@cusco /]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:7D:E2:3E
inet addr:192.168.254.204 Bcast:192.168.254.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe7d:e23e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:16653 errors:0 dropped:0 overruns:0 frame:0
TX packets:14789 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2564095 (2.4 MiB) TX bytes:3349104 (3.1 MiB)
Interrupt:177 Base address:0x1400

eth0:0 Link encap:Ethernet HWaddr 00:0C:29:7D:E2:3E
inet addr:192.168.254.200 Bcast:192.168.254.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:177 Base address:0x1400

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1283 errors:0 dropped:0 overruns:0 frame:0
TX packets:1283 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:148184 (144.7 KiB) TX bytes:148184 (144.7 KiB)

[root@cusco /]#

Parte (2 ) continua en el siguiente post

Referncias
[1]http://www.howtoforge.com/high_availability_heartbeat_centos
[2]http://www.linux-ha.org/Heartbeat
Sigue leyendo

Capturarar paquetes con tcpdump para visualizarlos con wireshark

[Visto: 3709 veces]

Por: Isaac Fernandez Baca

Siempre que lo necesito me ando olvidando de este comando

tcpdump -i [interface] -s 1500 -w [some-file]

despues incluso olvido que el comando es el tcpdump, asi que mejor lo puse en mi blog, 😉

Referencias:
[1]http://www.wireshark.org/docs/wsug_html_chunked/AppToolstcpdump.html

Sigue leyendo