首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现FastAGI的负载均衡?

如何实现FastAGI的负载均衡?
EN

Stack Overflow用户
提问于 2009-06-11 10:36:53
回答 2查看 2.4K关注 0票数 3

问题是我的AGIs将分布在多个服务器上,而不是只分布在一个服务器上,我需要我的入口点Asterisk根据它们的可用性在这些服务器( agis所在的服务器)之间分派调用。有可能吗?

EN

回答 2

Stack Overflow用户

发布于 2012-06-15 05:31:49

任何TCP反向代理都可以做到这一点。一个是HAProxy,另一个是nginxTCP module是另一个。

不久前,我使用node.js (nodast)制作了自己的FastAGI代理来解决这个非常具体的问题和更多的问题,包括在SSL上运行FastAGI协议,并根据AGI请求位置和参数(如$dnis、$channel、$language等)路由请求。

此外,由于代理配置基本上是javascript,您实际上可以以非常有趣的方式实现负载平衡。

示例配置如下所示:

代码语言: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; 
票数 2
EN

Stack Overflow用户

发布于 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这样的代理工具应该能够在多个服务器之间进行路由,并且能够“取出”一个服务器进行维护,或者执行更高级的平衡,如基于当前负载平均分配。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/980417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档