r-如何设置AWS集群以使用openCPU



我有两台EC2机器:master和slave。为用户ubuntu生成SSH密钥,并将其保存到两台机器上的~/.ssh/authorized_keys。因此,我可以使用来自主节点的集群作为ubuntu用户,如下所示:

library(doSNOW)
cluster_options <- 
c(rep(list(
        list(host = "ec2-xx-xx-xx-xx.compute-1.amazonaws.com",
             snowlib = "/usr/local/lib/R/site-library")), 2))
cl <- makeCluster(cluster_options, type = "SOCK")
clusterApply(cl, 1:2, get("+"), 3)
stopCluster(cl)

但当我通过openCPU调用它时,它会给出permission denied消息。

目前我正在考虑两种可能的解决方案:

  1. opencpu用户添加SSH密钥。但我不知道怎么做,因为opencpu是非交互式用户
  2. 使从属服务器可由主机访问,而无需任何SSH密钥

我更喜欢第一种方式,在这里肯定需要帮助。但第二种方式也可以。

最后我找到了解决方案。它有几个方面:

  1. 应在两个EC2节点之间配置基于主机的身份验证。好的教程可以在这里找到:https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Host-based_Authentication
  2. OpenCPU应安装在两个节点上
  3. 应该为www-data用户生成SSH密钥(R进程与该用户一起执行)。这里的微妙之处在于,www-data是非交互式用户,因此我们需要使其具有交互式(编辑/etc/passwd),为www-data生成SSH密钥对,向服务器节点添加公钥,并使www-data再次具有非交互式

不那么优雅,但它可以工作:)

相关内容

  • 没有找到相关文章

最新更新