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…

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

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

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

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

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发送邮件的各种姿势。说到邮…

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系统恢复开始菜单关机按钮…

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

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

Web——Request转发和Response重定向

• Request请求转发 ○ 请求转发 请求转发&#xff08;forward&#xff09;&#xff1a;一种在服务器内部的资源跳转方式 ○ 实现方式&#xff1a; request.getRequestDispatcher("资源B路径").forward(request,response);○ 请求转发资源间共享数据&#xff1a;使用…

if else if语句格式_闲话Python之条件语句IF

我发现好像哪里都会有if&#xff0c;下面就来聊聊Python当中if的常见用法。最简单的格式就是&#xff0c;只有一个if&#xff0c;比如下面这个&#xff1a;my_deposit代码中的my_deposit50000等效于my_depositmy_deposit50000his_deposit-50000则等效于his_deposithis_deposit-…

delphi下实现ribbon界面的方法(一)

delphi下实现ribbon界面的方法&#xff08;一&#xff09; office 2007和2010是现在大多数人经常使用的办公软件&#xff0c;几乎每天都在使用。因此&#xff0c;在软件中如果使用类office的界面样式&#xff0c;客户用着非常习惯&#xff0c;而且学习曲线低&#xff0c;office…

Web笔记——Filter过滤器

○ 概念&#xff1a;Filter表示过滤器&#xff0c;是JavaWeb三大组件(Servlet、Filter、Listener)之一。 ○ 过滤器可以把对资源的请求拦截下来&#xff0c;从而实现一些特殊的功能。 ○ 过滤器一般完成一些通用的操作&#xff0c;比如&#xff1a;权限控制、统一编码处理、敏感…

mysql修改语句_序言:MySQL与Navicat安装Tips

一、数据库相关的基础知识1.1 数据分析师主要集中在select高效查找上&#xff0c;纯粹的底层运维就不需要太关注&#xff1b;1.2 数据库与表类比sheet是表&#xff0c;整个Excel文件是一个数据库&#xff1b;1.3 行与列1.4 主键&#xff08;人的身份证&#xff09;表的主键不做…

java office文件加水印_永中Office与统一操作系统UOS完成适配,开辟高效智能办公新领域...

近日&#xff0c;永中Office办公软件完成了与统一操作系统UOS的适配工作&#xff0c;此次成功适配表明信息技术应用创新操作系统与办公软件兼容性能优良、运行稳定&#xff0c;大幅提升用户在信创计算机上的办公体验&#xff0c;可为政企提供安全可靠的IT环境。永中Office是由永…

c3p0依赖导入失败问题

今天在学习c3p0的时侯&#xff0c;导入依赖后变红然后去maven仓库[&#xff08;https://mvnrepository.com/artifact/com.mchange/c3p0&#xff09;]中找&#xff0c;发现是groupId的问题。 更改后正常

c++ char*初始化_C开发实战-深入理解指针

Visual Studio 2019 解决方案的多项目应用在讲述变量&#xff0c;数据类型&#xff0c;运算符和表达式以及程序流程控制&#xff0c;数组&#xff0c;函数的相关内容&#xff0c;所有的代码都放在解决方案c-core的c-core-foundational项目下。如果你有其他编程语言经验&#xf…

java游戏服务器面试_我做游戏开发这八年

点击上方“CSDN学院精品课”&#xff0c;选择“置顶公众号”CSDN学院精品课 IT人的职业提升平台作者 | kakashi8841简述这篇文章并不是想教会大家如何开发游戏&#xff0c;更不能教大家如何成为技术总监。而是分享我一路做开发的一些经历或心得体验。与编程擦肩而过2004年&…

SSM(Spring、SpringMVC、MyBatis)框架笔记——Spring入门

一、Spring简介 Spring是分层的Java SE/EE应用full-stack 轻量级开源框架&#xff0c; 以IoC&#xff08;Inverse Of Control&#xff1a;反转控制&#xff09;和AOP&#xff08;Aspect Oriented Programming&#xff1a;面向切面编程&#xff09;为内核。提供了展现层SpringM…

c++ 字符串拼接_字符串拼接新姿势:StringJoiner

来自&#xff1a;Hollis(微信号&#xff1a;hollischuang)在为什么阿里巴巴不建议在for循环中使用””进行字符串拼接一文中&#xff0c;我们介绍了几种Java中字符串拼接的方式&#xff0c;以及优缺点。其中还有一个重要的拼接方式我没有介绍&#xff0c;那就是Java 8中提供的S…