问题是我的AGIs将分布在多个服务器上,而不是只分布在一个服务器上,我需要我的入口点Asterisk根据它们的可用性在这些服务器( agis所在的服务器)之间分派调用。有可能吗?
发布于 2012-06-15 05:31:49
任何TCP反向代理都可以做到这一点。一个是HAProxy,另一个是nginx,TCP module是另一个。
不久前,我使用node.js (nodast)制作了自己的FastAGI代理来解决这个非常具体的问题和更多的问题,包括在SSL上运行FastAGI协议,并根据AGI请求位置和参数(如$dnis、$channel、$language等)路由请求。
此外,由于代理配置基本上是javascript,您实际上可以以非常有趣的方式实现负载平衡。
示例配置如下所示:
var config = {
listen : 9090,
upstreams : {
test : 'localhost:4573',
foobar : 'foobar.com:4573'
},
routes : {
'agi://(.*):([0-9]*)/(.*)' : function() {
if (this.$callerid === 'unknown') {
return ('agi://foobar/script/' + this.$3);
} else {
return ('agi://foobar/script/' + this.$3 + '?callerid' + this.$callerid);
}
},
'.*' : function() {
return ('agi://test/');
},
'agi://192.168.129.170:9090/' : 'agi://test/'
}
};
exports.config = config; 发布于 2010-06-27 01:42:54
嗯..。使用适用于负载均衡的相同结构,如网页请求。
一种方法是在DNS中循环调度。因此,如果您有vru1.example.com 10.0.1.100和vru2.example.com 10.0.1.101,您可以将两个条目放入DNS...
fastagi.example.com 10.0.1.100
fastagi.example.com 10.0.1.101
..。然后,从拨号方案来看,agi(agi://fastagi.example.com/youagi)理论上应该在10.0.1.100和10.0.1.101之间交替。您还可以根据需要添加任意数量的主机。
另一种方法是使用一些过于复杂的东西,这里无法解释,但像HAProxy这样的代理工具应该能够在多个服务器之间进行路由,并且能够“取出”一个服务器进行维护,或者执行更高级的平衡,如基于当前负载平均分配。
https://stackoverflow.com/questions/980417
复制相似问题