Enviado por admin el
En esta segunda parte veremos como configurar Kamailio para que utilice distintos RTPEngine para la parte media de las llamadas y que al mismo tiempo balancee la carga entre todos.
Este tipo de configuración se puede realizar de dos formas:
-
utilizando un parámetro de la configuración del modulo de RTPEngine de Kamailio
-
utilizando la base de datos kamailio y más en especifico la tabla rtpengine
En el primer caso el parámetro que nos interesa es:
rtpengine_sock (string)
y la configuración es bastante sencilla; se indican todos los servidores RTPEngine que se van a utilizar separados por un espacio y, si se quiere, asignando un peso a cada uno de ellos. Unos ejemplos:
modparam("rtpengine", "rtpengine_sock", "udp:192.168.1.1:12221 udp:192.168.1.2:12222")
en este caso se utilizarán dos RTPEngine que estarán a la escucha, uno sobre la IP 192.168.1.1, puerto 12221 y otro sobre la IP 192.168.1.2, puerto 12222. Ambos estarán a la escucha sobre el protocolo de trasporte UDP.
Del lado de la configuración de RTPEngine el parámetro que nos interesa es:
-n 192.168.1.1:12221
-n 192.168.1.2:12222
para el primero y el segundo servidor respectivamente. Otro ejemplo utilizando el peso sería:
modparam("rtpengine", "rtpengine_sock", "udp:192.168.1.1:12221=2 udp:192.168.1.2:12222=1")
el primero tendrá peso 2 y el segundo peso 1. Esto quiere decir que de 3 llamadas, dos serán gestionadas por el RTPEngine con peso 2 y una por el RTPEngine con peso 1.
Otra configuración que se puede realizar es configurar los servidores RTPEngine en grupos y luego decidir en el script de enrutamiento que grupo utilizar para una determinada llamada, ejemplo:
-
grupo 1 para llamadas internas
-
grupo 2 para llamadas salientes
La configuración sería algo parecido:
modparam("rtpengine", "rtpengine_sock", "1 == udp:192.168.1.1:12221 udp:192.168.1.2:12222")
modparam("rtpengine", "rtpengine_sock", "2 == udp:192.168.1.3:12221")
Luego en el script de enrutamiento, antes de llamar la función rtpengine_manage, que se utiliza para activar RTPEngine, se pone la siguiente función:
set_rtpengine_set(setid[, setid])
donde se indica un grupo principal y uno secundario (si se necesita).
Si utilizamos la base de datos, los campos de la tabla rtpengine son:
-
id: numero entero que se genera y se incrementa automáticamente para cada entrada
-
setid: grupo al que pertenecerá el servidor que se está configurando (predefinido 0)
-
url: protocolo de trasporte, ip y puerto donde estará a la escucha el servidor RTPEngine
-
weight: peso asignado al servidor (predefinido 1)
-
disabled: si el servidor está activo o no (predefinido 0 = activo)
-
stamp: una imprenta de tiempo donde se guardará la fecha y hora de configuración de la entrada
y en la configuración del modulo habrá que utilizar el parámetro:
db_url (string)
donde se configurará la URL de conexión a la base de datos de Kamailio. Ejemplo:
modparam("rtpengine", "db_url", "mysql://kamailio:password@localhost/kamailio")
Una vez realizada la configuración y reiniciado Kamailio, tendremos disponibles unos comandos para realizar una serie de operaciones:
kamcmd rtpengine.reload
para recargar la configuración de la tabla rtpengine si se está utilizando la base de datos para la configuración de los servidores RTPEngine
kamcmd rtpengine.enable
para activar/desactivar un servidor RTPENgine
kamcmd rtpengine.show all
para ver la lista completa de servidores RTPEnngine configurados con los respectivos parámetros. Ejemplo:
kamcmd rtpengine.ping
para enviar un ping al servidor RTPEngine que si no contesta será considerado no activo. Ejemplo:
kamcmd rtpengine.ping udp:127.0.0.1:2223
Creo que es todo, les recuerdo que para gestionar los servidores RTPEngine es posible utilizar la utilidad rtpengine-ctl cuya configuración se ha mostrado en esta entrada
Comentarios recientes