Kamailio y el modulo DB_CLUSTER

Tengo que ser sincero; desconocía por completo la existencia de este modulo y la verdad enterarme de su existencia ha sido un descubrimiento muy interesante. Este modulo permite crear una serie de conexiones a base de datos y luego aprovecharlas en los distintos módulos que utilizan o pueden utilizar una base de datos para su configuración/funcionamiento.

Vamos por pasos. Para que el modulo funcione correctamente, depende de un conector database, es decir de una modulo que permite el utilizo de una base de datos; normalmente, en Kamailio, el modulo utilizado es DB_MYSQL, aunque no es el único disponible.

Luego se puede pasar a la configuración del modulo donde se crean, una por linea, las conexiones a las base de datos. Un ejemplo de la configuración del modulo, podría ser:

loadmodule "db_mysql"

loadmodule "db_cluster"

modparam("db_cluster", "connection", "c1=>mysql://kamailio:kamailiorw@192.168.1.2/kamailio")

modparam("db_cluster", "connection", "c2=>mysql://kamailio:kamailiorw@192.168.1.3/kamailio")

modparam("db_cluster", "cluster", "cl1=>c1=9r9p;c2=8r8p")

modparam("db_cluster", "inactive_interval", 180)

la explicación linea por linea:

  1. se carga un modulo base de datos de que depende el modulo DB_CLUSTER

  2. se carga el modulo DB_CLUSTER

  3. se crean la conexiones (una por linea) siguiendo la sintaxis:

    • motor de base de datos

    • usuario

    • contraseña

    • IP/dominio donde se encuentra la base de datos

    • nombre de la base de datos

  1. se crea el cluster indicando el nombre (cl1) seguido por las conexiones que va a utilizar el cluster (c1 y c2). A cada conexión hay que añadir 4 valores; los primeros dos relacionados con las operaciones de lectura y los segundos dos con las operaciones de escritura. El primer numero indica el nivel de prioridad que va de 0 a 9; 0 significa que la conexión no se utilizará, 9 es la prioridad más alta. La letra que sigue indica como se utilizará el cluster para las operaciones de lectura:

    • s significa operación serial se utiliza la primera conexión y si falla la siguiente

    • r round robin; se utilizan las conexiones disponibles de manera aleatoria

    • p se utiliza solamente para operaciones de escritura y significa que se realizará la operación paralelamente en todas las base de datos

En nuestro ejemplo la conexión c1 se utilizará round robin con una prioridad 9 para lectura y opción paralela con prioridad 9 para escritura

La conexión c2 se utilizará round robin con una prioridad 8 para lectura y opción paralela con prioridad 8 para escritura

Luego, para los módulos que se pueden apoyar en una base de datos para su funcionamiento/configuración se indica el nombre del cluster como conexión a la base de datos; dos ejemplos:

modparam("acc", "db_url", "cluster://cl1")

modparam("usrloc", "db_url", "cluster://cl1")

donde cl1 es el nombre de la conexión configurada en el parámetro cluster del modulo DB_CLUSTER

Como la escritura se ha configurado de manera paralela, los datos presente en las distintas tablas de las dos base de datos deberían ser idénticos. No he hecho todavía la prueba pero les estaré comentando.

Vota el Articulo: 

Sin votos (todavía)
Evalúa la calidad del articulo
Suscribirse a Comentarios de "Kamailio y el modulo DB_CLUSTER" Suscribirse a VozToVoice - Todos los comentarios