kamailio,asteisk,realtime 实现负载均衡(集群)完整配置笔记

环境

负载均衡+数据库服务器

Centos-5.4 + kamailio-3.1.4 + mysql-5.0.77-4.el5_6.6

IP:192.168.1.30

 

asterisk服务器1

Centos-5.4 + asterisk-1.8

IP:192.168.1.31

 

asterisk服务器2

Centos-5.4 + asterisk-1.8

IP:192.168.1.32

 

目的

 

1:假设一个简易的asterisk 集群,通过realtime 技术,在集中的一个数据库中管理所有集群节点的分机号和拨号规则

2:asterisk服务器1上分机号段为 8100-8199

asterisk服务器2上分机号段为 8200-8299

3: 实现同一台asteisk服务器上分机互打

4:实现同一号段分机互打

5:实现不同号段分机互打(由kamailio服务器转发)

kamailio+asteisk+realtime 实现负载均衡完整配置笔记

 

配置

 

1:asterisk服务器1

[root@localhost asterisk]# cat /etc/asterisk/res_config_mysql.conf

[general]

dbhost = 192.168.1.30

dbname = asterisk

dbuser = root

dbpass = luckytuo@gmail.com

dbport = 3306

 

 

[root@localhost asterisk]# cat /etc/asterisk/extconfig.conf

[settings]

sipusers => mysql,general,ast_sipfriends ; edit by tolooney

sippeers => mysql,general,ast_sipfriends ; edit by tolooney

extensions => mysql,general,ast_extensions_01 ; edit by tolooney

 

 

[root@localhost asterisk]# cat /etc/asterisk/extensions.conf

[internal]

switch => Realtime/internal@extensions ; edit by tolooney

 

[root@localhost asterisk]# cat /etc/asterisk/sip.conf

[general]

context=internal

rtcachefriends=yes

disallow=all

allow=ulaw

allow=ilbc

 

2:asterisk服务器2

[root@localhost asterisk]# cat /etc/asterisk/res_config_mysql.conf

[general]

dbhost = 192.168.1.30

dbname = asterisk

dbuser = root

dbpass = luckytuo@gmail.com

dbport = 3306

 

 

[root@localhost asterisk]# cat /etc/asterisk/extconfig.conf

[settings]

sipusers => mysql,general,ast_sipfriends ; edit by tolooney

sippeers => mysql,general,ast_sipfriends ; edit by tolooney

extensions => mysql,general,ast_extensions_02 ; edit by tolooney

 

 

[root@localhost asterisk]# cat /etc/asterisk/extensions.conf

[internal]

switch => Realtime/internal@extensions ; edit by tolooney

 

[root@localhost asterisk]# cat /etc/asterisk/sip.conf

[general]

context=internal

rtcachefriends=yes

disallow=all

allow=ulaw

allow=ilbc

 

 

备注:分机号存放在ast_sipfriends表中,拨号规则分别存在ast_extensions_01,ast_extensions_02..表中

 

 

3:负载均衡+数据库服务器

 

执行如下sql,以生成realtime数据

 

– phpMyAdmin SQL Dump

– version 3.4.3.2

– http://www.phpmyadmin.net

– 主机: localhost

– 生成日期: 2011 年 08 月 07 日 11:05

– 服务器版本: 5.0.77

– PHP 版本: 5.3.6

 

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

SET time_zone = "+00:00";

 

 

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8 */;

 

– 数据库: `asterisk`

 

– ——————————————————–

 

– 表的结构 `ast_extensions_01`

 

CREATE TABLE IF NOT EXISTS `ast_extensions_01` (

`id` int(11) NOT NULL auto_increment,

`context` varchar(20) NOT NULL,

`exten` varchar(20) NOT NULL,

`priority` tinyint(4) NOT NULL default '0',

`app` varchar(20) NOT NULL,

`appdata` varchar(128) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

 

– 转存表中的数据 `ast_extensions_01`

 

INSERT INTO `ast_extensions_01` (`id`, `context`, `exten`, `priority`, `app`, `appdata`) VALUES

(6, 'internal', '8201', 1, 'Dial', 'SIP/8201@192.168.1.30'),

(4, 'internal-vm', '8102', 2, 'VoiceMail', 'SIP/8102'),

(3, 'internal', '8102', 1, 'Dial', 'SIP/8102'),

(1, 'internal', '8101', 1, 'Dial', 'SIP/8101'),

(2, 'internal-vm', '8101', 2, 'VoiceMail', 'SIP/8101'),

(7, 'internal', '8202', 1, 'Dial', 'SIP/8202@192.168.1.30');

 

– ——————————————————–

 

– 表的结构 `ast_extensions_02`

 

CREATE TABLE IF NOT EXISTS `ast_extensions_02` (

`id` int(11) NOT NULL auto_increment,

`context` varchar(20) NOT NULL,

`exten` varchar(20) NOT NULL,

`priority` tinyint(4) NOT NULL default '0',

`app` varchar(20) NOT NULL,

`appdata` varchar(128) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

 

– 转存表中的数据 `ast_extensions_02`

 

INSERT INTO `ast_extensions_02` (`id`, `context`, `exten`, `priority`, `app`, `appdata`) VALUES

(1, 'internal', '8201', 1, 'Dial', 'SIP/8201'),

(2, 'internal-vm', '8201', 2, 'VoiceMail', 'SIP/8201'),

(3, 'internal', '8202', 1, 'Dial', 'SIP/8202'),

(4, 'internal-vm', '8202', 2, 'VoiceMail', 'SIP/8202'),

(6, 'internal', '8101', 1, 'Dial', 'SIP/8101@192.168.1.30'),

(7, 'internal', '8102', 1, 'Dial', 'SIP/8102@192.168.1.30');

 

– ——————————————————–

 

– 表的结构 `ast_sipfriends`

 

CREATE TABLE IF NOT EXISTS `ast_sipfriends` (

`name` varchar(40) NOT NULL default '',

`type` varchar(10) NOT NULL default '',

`username` varchar(40) default NULL,

`fromuser` varchar(40) default NULL,

`fromdomain` varchar(40) default NULL,

`secret` varchar(40) default NULL,

`md5secret` varchar(40) default NULL,

`auth` varchar(10) default NULL,

`mailbox` varchar(20) default NULL,

`subscribemwi` varchar(10) default NULL,

`vmexten` varchar(20) default NULL,

`callerid` varchar(40) default NULL,

`cid_number` varchar(40) default NULL,

`callingpres` varchar(20) default NULL,

`usereqphone` varchar(10) default NULL,

`language` varchar(10) default NULL,

`incominglimit` varchar(10) default NULL,

`context` varchar(40) NOT NULL default '',

`subscribecontext` varchar(40) default NULL,

`amaflags` varchar(20) default NULL,

`accountcode` varchar(20) default NULL,

`musicclass` varchar(20) default NULL,

`mohsuggest` varchar(20) default NULL,

`allowtransfer` varchar(20) default NULL,

`callgroup` varchar(20) default NULL,

`pickupgroup` varchar(20) default NULL,

`autoframing` varchar(10) default NULL,

`disallow` varchar(20) default 'all',

`allow` varchar(20) default NULL,

`maxcallbitrate` varchar(15) default NULL,

`host` varchar(40) default 'dynamic',

`outboundproxy` varchar(40) default NULL,

`ipaddr` varchar(40) NOT NULL default '',

`defaultip` varchar(20) default NULL,

`port` int(6) NOT NULL default '0',

`fullcontact` varchar(40) default NULL,

`insecure` varchar(20) default NULL,

`qualify` varchar(15) default NULL,

`regseconds` int(11) NOT NULL default '0',

`defaultuser` varchar(128) default NULL,

`regexten` varchar(20) default NULL,

`regserver` varchar(20) default NULL,

`useragent` varchar(128) default NULL,

`rtptimeout` varchar(15) default NULL,

`rtpholdtimeout` varchar(15) default NULL,

`rtpkeepalive` varchar(15) default NULL,

`lastms` int(11) NOT NULL default '-1',

`setvar` varchar(200) default NULL,

PRIMARY KEY (`name`),

KEY `host` (`host`,`port`),

KEY `ipaddr` (`ipaddr`,`port`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

 

– 转存表中的数据 `ast_sipfriends`

 

INSERT INTO `ast_sipfriends` (`name`, `type`, `username`, `fromuser`, `fromdomain`, `secret`, `md5secret`, `auth`, `mailbox`, `subscribemwi`, `vmexten`, `callerid`, `cid_number`, `callingpres`, `usereqphone`, `language`, `incominglimit`, `context`, `subscribecontext`, `amaflags`, `accountcode`, `musicclass`, `mohsuggest`, `allowtransfer`, `callgroup`, `pickupgroup`, `autoframing`, `disallow`, `allow`, `maxcallbitrate`, `host`, `outboundproxy`, `ipaddr`, `defaultip`, `port`, `fullcontact`, `insecure`, `qualify`, `regseconds`, `defaultuser`, `regexten`, `regserver`, `useragent`, `rtptimeout`, `rtpholdtimeout`, `rtpkeepalive`, `lastms`, `setvar`) VALUES

('8102', 'friend', '8102', NULL, NULL, '8102', NULL, NULL, NULL, NULL, NULL, '8102', NULL, NULL, NULL, NULL, NULL, 'internal', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'all', 'all', NULL, 'dynamic', NULL, '(null)', NULL, 0, '', 'port,invite', NULL, 1312768532, NULL, NULL, '', '', NULL, NULL, NULL, 0, ''),

('8101', 'friend', '8101', NULL, NULL, '8101', NULL, NULL, NULL, NULL, NULL, '8101', NULL, NULL, NULL, NULL, NULL, 'internal', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'all', 'all', NULL, 'dynamic', NULL, '(null)', NULL, 0, '', 'port,invite', NULL, 1312771340, NULL, NULL, '', '', NULL, NULL, NULL, 0, ''),

('8201', 'friend', '8201', NULL, NULL, '8201', NULL, NULL, NULL, NULL, NULL, '8201', NULL, NULL, NULL, NULL, NULL, 'internal', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'all', 'all', NULL, 'dynamic', NULL, '(null)', NULL, 0, '', 'port,invite', NULL, 1312771140, NULL, NULL, '', '', NULL, NULL, NULL, 0, ''),

('8202', 'friend', '8202', NULL, NULL, '8202', NULL, NULL, NULL, NULL, NULL, '8202', NULL, NULL, NULL, NULL, NULL, 'internal', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'all', 'all', NULL, 'dynamic', NULL, '192.168.1.100', NULL, 9766, 'sip:8101@192.168.1.100:9766^3Brinstance=', 'port,invite', NULL, 1312766961, NULL, NULL, '', 'eyeBeam release 1011d stamp 40820', NULL, NULL, NULL, 0, '');

 

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

 

 

vi /etc/kamailil/dispatcher.list

 

# line format

# setit(integer) destination(sip uri) flags (integer, optional)

1 sip:192.168.1.31:5060

2 sip:192.168.1.32:5060

 

vi /etc/kamailio/kamailil.cfg

 

loadmodule "dispatcher.so"

modparam("dispatcher", "list_file", "/etc/kamailio/dispatcher.list")

 

route{

if (!mf_process_maxfwd_header("10")) {

sl_send_reply("483","Too Many Hops");

exit;

}

if (uri=~"^sip:81[0-9]+@192.168.1.30$") {

if (is_method("INVITE")) {

ds_select_dst("1", "0");

forward();

exit;

}

}

if (uri=~"^sip:82[0-9]+@192.168.1.30$") {

if (is_method("INVITE")) {

ds_select_dst("2", "0");

forward();

exit;

}

}

sl_send_reply("404","Not here");

exit;

}

测试

注册8101和8102到192.168.1.31,测试相同号段分机互打,成功
注册8101到192.168.1.31 8102到192.168.1.32,测试不同号段分机互打,成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

maven依赖 spark sql_window环境运行spark-xgboost 8.1踩到的坑

在window 环境下使用spark - xgboost会出现一些问题&#xff0c;这里记录一下。环境&#xff1a;window 7 spark 2.31 xgboost 8.1 idea maven一.依赖以及代码数据集下载地址UCI Machine Learning Repository: Iris Data Set​archive.ics.uci.edupom依赖<!-- https://m…

linux文件目录的操作

1、查看目录信息 opendir readdir stat,lstat,fstat 将目录按字母排序,alphasort,scandir 一般的用法是将alphasort作为scandir的参数&#xff0c;比如 struct dirent **namelist; scandir("/",&namelist,0,alphasort); 2、复习了一遍popen,pclose 3、明…

python书籍排行榜前十名_学习Python,这些书你看过几本?

Python是一门简单&#xff0c;强大的计算机编程语言。Python书也是种类繁多&#xff0c;对于初学者选择合适的学习书籍是很有必要的。 1、Python编程&#xff1a;从入门到实践 全书分两部分&#xff1a;第一部分介绍用Python编程所必须了解的基本概念&#xff1b;第二部分将理论…

Spring 5的新特性

Spring Framework 5.0 是在 2017 年发布的一个主要版本&#xff0c;它带来了许多改进和新特性&#xff0c;相比于 Spring Framework 4.x&#xff0c;主要的升级包括&#xff1a; 基于 Java 8 的基线&#xff1a; Spring 5 需要 Java 8 或更高版本&#xff0c;这使得框架得以利用…

MyBatis笔记——配置文件完成增删改查

l 完成品牌数据的增删改查操作 要完成的功能列表清单&#xff1a;□ 查询 查询所有数据 查看详情 条件查询□ 添加□ 修改 修改全部字段 修改动态字段□ 删除 删除一个 批量删除准备环境&#xff1a; 数据库表tb_branddrop table if exists tb_brand;CREATE TABLE tb_brand(--…

linux新的API signalfd、timerfd、eventfd使用说明——eventfd

好久没更新了&#xff0c;今天看一下第三种新的fd&#xff1a;eventfd类似于管道的概念&#xff0c;可以实现线程间的事件通知&#xff0c;所不同的是eventfd的缓冲区大小是sizeof(uint64_t)也就是8字节&#xff0c;它是一个64位的计数器&#xff0c;写入递增计数器&#xff0c…

【最近的学习安排】

打算先把手头上的资源先消化得差不多了再看新的东西吧&#xff0c;编程之美、编程珠玑、程序员面试100题、刀疤鸭数据结构面试题、大话数据结构、数据结构与算法分析&#xff08;C描述&#xff09;&#xff0c;JAVA核心技术卷I&#xff0c;C Primer&#xff08;着重看类相关的和…

bitnamigitlab_Bitnami Gitlab 修改端口

BITNAMI Gitlab是个界面和使用都非常友好的Version Control工具&#xff0c;但其端口限制的弊端&#xff0c;导致部署很不爽&#xff0c;作为使用者&#xff0c;把我遇到的问题与大家共享。强烈建议不要修改端口&#xff0c;经查看数据库数据&#xff0c;链接地址带端口和不带端…

python字符串排序_Python对字符串列表进行排序

在本教程中&#xff0c;我们将看到如何对字符串列表进行排序。我们将使用sort方法和sorted函数对给定的字符串列表进行排序。然后&#xff0c;我们将了解如何根据不同的条件&#xff08;例如长度&#xff0c;值等&#xff09;对字符串列表进行排序&#xff0c; 让我们看看如何使…

莫名其秒的Cannot load JDBC driver class 'com.mysql.jdbc.Driv

JAR包正常的情况下出现 服务器没有找到驱动jar 报错Cannot load JDBC driver class com.mysql.jdbc.Driv 原因是没有把MYSQL驱动放在TOMCAT的LIB目录下 解决方法:把JDBC驱动放到Tomcat的common/lib下&#xff0c;重新启动服务器 转载于:https://www.cnblogs.com/leiteng/archiv…

web——Tomcat Maven插件及Servlet入门

• IDEA中使用Tomcat-Tomcat Maven插件 ○ Pom.xml添加Tomcat插件<build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><!--&…

外架小横杆外露长度规范要求_安全文明施工规范

分类规范内容内外架安全1、扫地杆离地0.2米&#xff0c;立杆间距1.5米&#xff0c;外大横杆上下间距1米&#xff0c;内大横杆上下间距1.8米&#xff0c;步距1.8米2、立杆着落点不得悬空&#xff0c;垫块面积&#xff1e;240240mm3、外架和支模架不得连接、固定在一起4、外架操作…

java 邮件模板_Spring Boot 2发送邮件手把手图文教程

点击上方 IT牧场 &#xff0c;选择 置顶或者星标技术干货每日送达&#xff01;本文基于&#xff1a;Spring Boot 2.1.3&#xff0c;理论支持Spring Boot 2.x所有版本。最近有童鞋问到笔者如何用Spring Boot发送邮件&#xff0c;故而整理下Spring Boot发送邮件的各种姿势。说到邮…

eventfd man

概要 #include<sys/eventfd.h>int eventfd(unsigned int initval, intflags);描述eventfd()创建一个“eventfd对象”&#xff0c;这个对象能被用户空间应用用作一个事件等待/响应机制&#xff0c;靠内核去响应用户空间应用事件。这个对象包含一个由内核保持的无符号64位整…

uva11991 Easy Problem from Rujia Liu?

题目链接。 分析&#xff1a; 《算法竞赛入门经典——训练指南》上的一道例&#xff08;水&#xff09;题&#xff0c;map的应用&#xff0c;个人感觉代码中注释掉的那一句没有什么意义&#xff0c;就注释掉了&#xff0c;提交确实也对了。 map的小知识点&#xff08;总结自c p…

Web——Request请求

•Request通用方式获取请求参数 ○ 请求参数获取方式&#xff1a; GET方式&#xff1a;□ String getQueryString() POST方式&#xff1a;□ BufferedReader getReader()○ 通用方式&#xff1a; Map<String, String[]> getParameterMap()//获取所有参数Map集合 String[]…

mfc点击按钮让对话框关闭_WinXP系统开始菜单中关机按钮消失的恢复教程

WinXP系统开始菜单里面的关机按钮不见了怎么办&#xff1f;最近有用户反映&#xff0c;打开WinXP系统的开始菜单准备关机时&#xff0c;却发现无法关机了&#xff0c;开始菜单里面没有关机按钮&#xff0c;这是怎么回事&#xff1f;本文就为大家介绍XP系统恢复开始菜单关机按钮…

python中如何标识语句块_如何用python在一个块中编写多个try语句?

我会为此编写一个快速包装函数first()。 用法&#xff1a;value first([f1, f2, f3, ..., fn], defaultAll failed)#!/usr/bin/env def first(flist, defaultNone): """ Try each function in flist until one does not throw an exception, and return the re…

std::map用法

std::map用法 STL是标准C系统的一组模板类&#xff0c;使用STL模板类最大的好处就是在各种C编译器上都通用。在STL模板类中&#xff0c;用于线性数据存储管理的类主要有vector, list, map 等等。本文主要针对map对象&#xff0c;结合自己学习该对象的过程&#xff0c;讲解一下具…

马逊s3云存储接口_当对象存储“湖”有了强一致性

从 2006年第一个云服务对象存储服务 Amazon S3 发布直到 2020年12月1日之前&#xff0c;S3 对象操作都是遵循 “最终一致性”原则&#xff0c;对象存储服务本身就是一个复杂的分布式系统&#xff0c;但对用户暴露简单的 API 服务接口&#xff0c;无限扩展存储大小&#xff0c;极…