Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在多实例Opencpu中访问会话文件夹资源_R_Opencpu_Scalable - Fatal编程技术网

R 在多实例Opencpu中访问会话文件夹资源

R 在多实例Opencpu中访问会话文件夹资源,r,opencpu,scalable,R,Opencpu,Scalable,我有一个Opencpu服务器,里面有我的包。此软件包包含一个生成打印图像的函数。当我通过Opencpu向这个函数发送POST请求时,我会得到会话id作为响应,而会话id实际上是Opencpu服务器上包含资源的一个文件夹,image就是其中之一。我将这个图像url(由Opencpu服务器提供)传递给我的应用程序,它使用该url创建PDF报告 现在,我通过创建包含我的包的多个Opencpu实例来扩展整个场景。这些实例位于负载平衡器后面。当我做同样的操作时,我会得到图像url。当我的应用程序使用此图像

我有一个Opencpu服务器,里面有我的包。此软件包包含一个生成打印图像的函数。当我通过Opencpu向这个函数发送POST请求时,我会得到会话id作为响应,而会话id实际上是Opencpu服务器上包含资源的一个文件夹,image就是其中之一。我将这个图像url(由Opencpu服务器提供)传递给我的应用程序,它使用该url创建PDF报告

现在,我通过创建包含我的包的多个Opencpu实例来扩展整个场景。这些实例位于负载平衡器后面。当我做同样的操作时,我会得到图像url。当我的应用程序使用此图像url时,可能找不到它,因为现在请求可能已转到Opencpu的另一个实例

我如何解决这个问题?我现在做的一件事是将图像上传到某个公共实例,并将相应的路径返回到应用程序。但这太复杂了


谢谢。

负载平衡总是有点复杂,所以如果可能的话,就是这样 更容易移动到更大的服务器。大多数(云)提供商提供具有多个核心和100GB+RAM的(虚拟)实例,这将允许您 支持很多用户

如果您真的需要负载平衡,有几种方法。 一种方法是将ocpu服务器上的ocpu存储目录映射到 共享NSF服务器。默认情况下,opencpu将所有会话存储在 服务器上的
/tmp/ocpu存储
目录。您可以通过设置
/etc/opencpu/server.conf中的
tmpdir
选项。有一个示例配置文件,在服务器上的
/etc/opencpu/server.conf.d/ec2.conf.disabled
中设置tmpdir(重命名为activate)

如果您不想设置NSF服务器,更简单的方法是 将负载平衡器配置为始终将特定客户端发送到 特定后端。例如,如果使用nginx,则可以设置

显然,此方法要求客户端在会话期间不更改ip地址。及 只有当您的客户端通过变体连接时,它才会有效 ip地址的数目