负载均衡R请求到RServe

时间:2016-07-20 10:46:21

标签: r apache load-balancing haproxy rserve

我有6个Linux盒子运行RServe并提供相同的R脚本集。

 @media screen and (min-width: 0px) and (max-width: 768px) {
        #mobile-menu{
            display: block;
        }
        #large-menu{
            display: none;
        }
         }

    @media screen and (min-width: 769px) and (max-width: 2000px) {
        #mobile-menu{
            display: none;
        }
        #large-menu{
            display: block;
        }
           body {
            padding-top: 50px;
        }
    }

我使用REngine(Rserve Java Client)从java连接到这些Rserve。

192.168.0.1 : 6311
192.168.0.2 : 6311
...
...
192.168.0.6 : 6311

现在如何对此进行负载均衡?最好是在Apache Mod Proxy?

我尝试过使用httpd websocket负载均衡设置而没有运气。

更新:结论httpd不会平衡TCP流量(Rserve使用TCP,而Rserve中有选项可以启用websocket模式,我的用例不需要额外的层)。已转移到HAProxy以使用config进行负载平衡,如下面的链接所示,并且能够通过容错来平衡R脚本请求。

HAProxy Loadbalancing TCP traffic

3 个答案:

答案 0 :(得分:1)

我不确定这是否可以通过Apache mod_proxy实现。我认为它只适用于HTTP协议。也许您可以尝试使用nginx进行概念验证。它支持普通TCP和UDP连接的负载平衡。它还允许您定义负载平衡方法(例如循环等)。

配置如下:

stream {
    upstream myapp1 {
        server 192.168.0.1:6311;
        server 192.168.0.2:6311;
        ...
        server 192.168.0.6:6311;
    }

    server {
        listen 80;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass backend;
    }
}

您可以在nginx文档中找到更多信息: https://www.nginx.com/resources/admin-guide/tcp-load-balancing/并在此处: https://nginx.org/en/docs/stream/ngx_stream_core_module.html

答案 1 :(得分:0)

如果您还没有这样做,并且因为您已经在使用Java,那么首先从Java连接到您的RServe服务器并运行一个简单的" hello world"他们的脚本,如CRAN examples

中所述

一旦RServe实例正常工作,您需要从Java进行负载均衡或为每个服务器创建一个Java程序,并让Apache在它们之间实现负载平衡。在任何一种情况下,您的Java程序都需要提供http,因为您仍需要html和RServe之间的链接。

答案 2 :(得分:0)

看起来更多人正在寻找负载平衡R脚本的解决方案。 这是通过Rserve和HAproxy TCP负载平衡器对loadbalance R进行工作的解决方案。

如果有帮助则重击。

https://stackoverflow.com/a/39052040/1057093

相关问题