同一台服务器运行多套kamailio服务

    • - 1 配置文件强化说明
    • - 2 指定路径编译安装Kamailio
    • - 3 生成自定义的Kamailio数据库
    • - 4 配置kamailiocfg

  Kamailio的基本配置方法在我之前的博客中已经详细叙述过了,但那种方法只是可以实现在一台服务器上运行一套Kamailio服务,但实际情况中有时需要在同一台服务器上部署多套Kamailio服务,并且要求使用的配置文件、动态库和数据库都相互独立,那么针对这种看似奇葩但又存在的需求该如何安装和配置Kamailio呢?今天小编将针对该问题进行详细的讲解!

- 1. 配置文件强化说明

  在使用Kamailio的过程中,主要使用到的配置文件有两个:kamailio.cfg和kamctlrc。首先介绍一下kamctlrc,该文件的作用是用来生成Kamailio的数据库的,至于其中的基本配置已经在第4部分说过了,在此只选择其中部分内容做
SIP_DOMAIN,用于指定服务器的IP;DBHOST,指定使用的数据库的具体IP;DBNAME,指定生成的Kamailio的数据库名称;PID_FILE,指定生成的Kamailio的pid文件的路径以及名称。

  然后介绍一下kamailio.cfg文件,该配置文件包含的内容比较多,Kamailio所有功能的配置都在此文件中设置,下面也是选择部分内容进行讲解。

Kamailio一共有201个模块,Kamailio默认是到
/usr/local/lib64/kamailio/modules路径下去加载模块的动态库,如果想让Kamailio到自定义的路径下加载,需要修改kamailio.cfg,打开kamailio.cfg,添加如下内容:
同一台服务器运行多套kamailio服务_第1张图片
然后,将mpath后面的路径改成自定义的路径就可以了。

  要想使用某个模块,首先需要在kamailio.cfg的顶部添加“#!define WITH_***”,其中星号代表模块的名称。然后,使用loadmodule “*.so”加载模块的动态库,使用modparam配置模块的具体参数。
  上面已经说了可以通过kamctlrc中的DBHOST和DBNAME来生成不同的Kamailio数据库,但生成之后该如何指定配置文件读取哪个数据库呢?OK,在kamailio.cfg中有这么一部分内容:

所以,Kamailio是通过设置DBURL来指定使用哪个数据库。

  下面分析一下“mysql://kamailio:kamailiorw@localhost/kamailio”这句话,mysql表示使用的是MySQL数据库,kamailio和kamailiorw是我们在kamctlrc中设置的kamailio数据库中具有可读可写权限的用户的名称和密码,localhost对应DBHOST,最后面那个kamailio就是你创建的Kamailio数据库的名称,对应kamctlrc中的DBNAME。
  Kamailio默认使用的端口为5060,也可以自定义端口号,只需要修改kamailio.cfg文件中的port值即可,其实只需要将kamailio.cfg中的“5060”全部替换成自定义的端口号即可。
  对于服务器,日志是不可缺少的,kamailio.cfg中同样可以设置日志的输出和存放路径。打开kamailio.cfg,会看到如下内容:
同一台服务器运行多套kamailio服务_第2张图片
  
  可以指定输出的日志的级别,也可以指定是否输出日志,其中LOG_LOCAL0用于确定日志输出的路径,需要修改/etc/rsyslog.conf中的内容,方法为:

vim  /etc/rsyslog.conf

然后,在rsyslog.conf中添加如下内容:

local0.*                   /var/log/kamailio.log

即设置kamailio生成日志的路径为/var/log,日志文件名称为kamailio_test.log,然后执行如下指令使修改的内容生效:

service rsyslog restart

为了便于解析网络的IP,服务器会使用域名来代替IP地址,Kamailio同样支持域名的解析,打开kamailio.cfg,会看到如下内容:
这里写图片描述
  kamailio.cfg默认是将域名的功能注释掉的,此处只需要将注释去掉,然后将“sip.mydomain.com”改为我们自己的服务器域名即可。要想使得域名生效,需要加载alias模块,模块加载的方法按照官方文档照抄即可。
  OK,有了上面内容做基础,下面我们来进行具体的编译、安装和配置的操作。

- 2. 指定路径编译安装Kamailio

  Kamailio的默认安装路径是/usr/local/etc/和/usr/local/lib64,要想实现同一台服务器运行多套Kamailio服务,首先需要做的就是指定不同的安装路径,执行如下指令:

make PREFIX="/usr/local/kamailio_test" include_modules="db_mysql" cfg
make all
make install

  从而指定了Kamailio的安装路径,本文以/usr/local/kamailio_test为例进行说明,然后进入到/usr/local/kamailio_test路径下,会看到 etc、lib64、sbinshare这四个目录,说明安装路径正确。

- 3. 生成自定义的Kamailio数据库

  有了前面的内容做基础,我们知道如何自定义kamctlrc文件,而且需要特别注意的是,必须先配置kamctlrc文件,然后再执行指令生成Kamailio数据库。我们假设kamctlrc中的
DBHOST=127.0.0.1DBNAME=kamailio_test
PID_FILE=/var/run/kamailio_test/kamailio_test.pid,然后执行如下指令生成Kamailio的数据库

/usr/local/kamailio_test/sbin/kamdbctl create

  注意,由于我们自定义的安装路径,导致Kamailio的可执行文件没有被拷贝到系统路径下,所以需要通过绝对路径来指定使用哪套可执行文件,接下来一路输入“y”,按回车即可。进入到MySQL,看一下是否有kamailio_test数据库生成,如果有,则说明kamctlrc生效了,操作成功。

- 4. 配置kamailio.cfg


  • 4.1 指定使用的数据库

  按照11.1的介绍,首先修改DBURL,使Kamailio使用我们自定义的数据库,具体的修改内容为:
#!ifndef DBURL
#!define DBURL "mysql://kamailio:kamailiorw@localhost/kamailio_test"
#!endif
#!endif

然后,usrloc模块的配置改成如下图所示:
同一台服务器运行多套kamailio服务_第3张图片

如果不修改usrloc模块的话,创建的SIP账号将无法登陆。


  • 4.2 更改端口

  Kamailio默认的端口为5060,为了运行多套Kamailio,需要自定义端口号,修改方法为:打开kamailio.cfg文件,然后将其中的5060全部改为5061(假设自定义端口为5061),然后重新启动Kamailio,启动时同样使用绝对路径,然后执行
ss -tlunp”查看5061端口是否已经启动,如果已启动,说明配置生效。
  OK,通过上面的操作,就可以实现同一台服务器运行多套相对独立的Kamailio服务了。

你可能感兴趣的:(服务器,SIP,kamailio)