如何设置AWS集群以使用openCPU?

时间:2015-10-27 09:09:15

标签: r amazon-web-services opencpu snow

我有两台EC2机器:主机和从机。为用户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密钥使主服务器可以访问主服务器
  3. 我更喜欢第一种方式,绝对需要帮助。但第二种方式也可以。

1 个答案:

答案 0 :(得分:2)

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

  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再次进行非互动。
  4. 不太优雅,但它有效:)