r - 对 RServe 的 R 请求进行负载平衡

标签 r apache load-balancing haproxy rserve

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

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

我使用 REngine(Rserve Java 客户端)从 java 连接到这些 Rserve。
RConnection rServeConnection = new RConnection(R_SERVE_SERVER_ADDRESS, R_SERVE_SERVER_PORT);

现在我该如何负载平衡呢?最好在 Apache Mod 代理中?

我尝试过使用 httpd websocket 负载平衡设置,但没有运气。

更新:结论 httpd 不会负载平衡 TCP 流量(Rserve 使用 TCP,虽然 Rserve 中有选项可以启用 websocket 模式,但我的用例不需要那个额外的层)。移动到 HAProxy 以使用以下链接中的配置进行负载平衡,并且能够负载平衡进入 Rserve 的具有容错能力的 R 脚本请求。

HAProxy Loadbalancing TCP traffic

最佳答案

我不确定这是否可以通过 Apache mod_proxy 实现。我认为它只适用于 HTTP 协议(protocol)。也许您可以尝试使用 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

关于r - 对 RServe 的 R 请求进行负载平衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38479130/

相关文章:

R:如何聚合 NA 值

r - big.matrix 文档中不可重现的示例(应用)

R ggplot : Different geom_ablines in facets

PostgreSQL/Apache 上的 Python/Django 和 HTML/CSS/JS/jQuery?

r2 来自素食包中的 envfit

apache - PHPMyAdmin 最大上传大小不会改变,错误的 php.ini 文件

apache - 阻止 htaccess HTTPS 转发在本地主机上运行

分片服务器配置中的 PHP 文件上传

apache-kafka - 如何使用 haproxy 负载均衡器 Kafka Bootstrap?

web-services - JAX-WS Web 服务,使用 HTTPS 端点 URL 而不是 HTTP 的负载平衡器