R 中的多节点 H2O 集群未检测到其他 EC2 实例

Multi Node H2O cluster in R not detecting other EC2 instances

我一直在努力建立一个多节点 H2O 集群并 运行 使用 AWS EC2 实例。 我已经听从了 线程的建议,但仍然在与节点看不到对方的问题作斗争。 EC2 实例都使用我预先构建的相同 AMI,所以相同的 h2o.jar 文件在所有实例上,

我还尝试了以下故障排除建议:

这是我的步骤:

1) 在同一可用区启动 AWS EC2 并获取私有 IP 和网络 cidr (172.31.0.0/20)。将 ip 地址放入 flatfile.txt

172.31.8.210:54321
172.31.9.207:54321
172.31.13.136:54321

2) 将 flatfile.txt 复制到我想作为节点连接的所有服务器并启动 H2O

# cluster_run
library(h2oEnsemble)
library(ssh)

ips <- gsub("(.*):.*", "\1", readLines("flatfile.txt"))

start_cluster <- function(ip){
  # Copy flatfile across
  session <- ssh_connect(paste0("ubuntu@", ip), keyfile = "mykey.pem")
  scp_upload(session, "flatfile.txt")

  # Ensure no h2o instance is already running
  out <- ssh_exec_wait(session, "sudo pkill java")

  # Start H2O cluster
  cmd <- gsub("\s+", " ", paste0("ssh -i mykey.pem -o 'StrictHostKeyChecking no' ubuntu@", ip, 
         " 'java -Xmx20g 
         -jar /home/rstudio/R/x86_64-pc-linux-gnu-library/3.5/h2o/java/h2o.jar
         -name mycluster
         -network 172.31.0.0/20
         -flatfile flatfile.txt 
         -port 54321 &'"))
  system(cmd, wait = FALSE)

}
start_cluster(ips[3])
start_cluster(ips[2])
start_cluster(ips[1])

3) 完成后,我现在想将 R 连接到我的新多节点集群

 h2o.init(startH2O = F)
 h2o.shutdown(prompt = FALSE)

这是我看到节点没有被拾取的地方:

我还看到,当我在不同的节点上启动 H2O 集群时,它没有选择网络中的其他机器:

您还需要将端口 54321+1(即 54322)添加到安全组。

内部通讯通过54322。

(我还会为 -network 指定 /16,因为其他人更容易理解。例如,即使您确定 /20 在技术上对您的网络设置是正确的,我也不能轻易确定。 :-)

根据实际的网络设置,您可能根本不需要 -network 标志。您的实例可能只有一个接口。