对到达 RServe 的 R 请求进行负载平衡
Load balancing R requests coming to 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 Proxy?
我已经尝试使用 httpd websocket 负载平衡设置,但没有成功。
更新:得出结论,httpd 不会对 TCP 流量进行负载平衡(Rserve 使用 TCP,而 Rserve 中有启用 websocket 模式的选项,我的用例不需要那个额外的层)。移动到 HAProxy 以使用配置进行负载平衡,如下面 link 并能够负载平衡进入 Rserve 的 R 脚本请求,具有容错性。
如果您还没有这样做,并且因为您已经在 Java 中工作,请先从 Java 和 运行 连接到您的 RServe 服务器,一个简单的 "hello world" 脚本,如 CRAN examples
中给出
一旦 RServe 实例工作正常,那么您需要从 Java 进行负载平衡,或者为每个服务器创建一个 Java 程序并让 Apache 在它们之间进行负载平衡。在任何一种情况下,您的 Java 程序都需要提供 http 服务,因为您仍然需要 html 和 RServe 之间的 link。
我不确定这是否可以通过 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
看起来越来越多的人在寻找负载平衡 R 脚本的解决方案。
这是一个通过 Rserve 和 HAproxy TCP 负载均衡器对 R 进行负载均衡的工作解决方案。
有帮助就点个赞吧
我有 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 Proxy?
我已经尝试使用 httpd websocket 负载平衡设置,但没有成功。
更新:得出结论,httpd 不会对 TCP 流量进行负载平衡(Rserve 使用 TCP,而 Rserve 中有启用 websocket 模式的选项,我的用例不需要那个额外的层)。移动到 HAProxy 以使用配置进行负载平衡,如下面 link 并能够负载平衡进入 Rserve 的 R 脚本请求,具有容错性。
如果您还没有这样做,并且因为您已经在 Java 中工作,请先从 Java 和 运行 连接到您的 RServe 服务器,一个简单的 "hello world" 脚本,如 CRAN examples
中给出一旦 RServe 实例工作正常,那么您需要从 Java 进行负载平衡,或者为每个服务器创建一个 Java 程序并让 Apache 在它们之间进行负载平衡。在任何一种情况下,您的 Java 程序都需要提供 http 服务,因为您仍然需要 html 和 RServe 之间的 link。
我不确定这是否可以通过 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
看起来越来越多的人在寻找负载平衡 R 脚本的解决方案。 这是一个通过 Rserve 和 HAproxy TCP 负载均衡器对 R 进行负载均衡的工作解决方案。
有帮助就点个赞吧