GridGain - 通过Grid.startNodes API以编程方式使用SSH打开节点

时间:2014-10-04 00:27:24

标签: ssh cluster-computing gridgain

我正在使用Grid.startNodes(java.util.Collection,java.util.Map,boolean,int,int) 如下所述:http://gridgain.com/api/javadoc/org/gridgain/grid/Grid.html#startNodes(java.util.Collection,java.util.Map,boolean,int,int)

我正在使用的代码:

GridConfiguration cfg = GridCfgGenerator.GetConfigurations(true);
Grid grid = GridGain.start(cfg);

Collection<Map<String,Object>> coll = new ArrayList<>();

Map<String, Object> host = new HashMap<String, Object>();
//host.put("host", "23.101.201.136");
host.put("host", "10.0.0.4");
host.put("port", 22);
host.put("uname", "username");
host.put("passwd", "password");
host.put("nodes", 7);
//host.put("ggHome", null); /* don't state so that it will use GRIDGAIN_HOME enviroment var */
host.put("cfg", "/config/partitioned.xml");

coll.add(host);

GridFuture f = grid.startNodes(coll, null, false, 3600 * 3600, 4);
System.out.println("before f.get()");
f.get();
  • 我在带有10.0.0.7
  • 的虚拟机上运行了上述代码
  • 我有远程桌面进入主机IP为10.0.0.4的VM,并且看不到状态更改。代码完成并退出。如果我使用bin / ggstart.bat启动它们,两个VM都能够在本地运行gridgain并且可以发现彼此的节点
  • 我可以手动启动10.0.0.4上的节点(我尝试通过此API进入SSH的机器)。我可以通过运行$ GG_HOME / bin / ggstart.bat $ GG_HOME / config / partitioned.xml来启动所述节点,这样配置文件就没有问题了

我不太确定如何调试这个,因为我没有错误

1 个答案:

答案 0 :(得分:1)

startNodes(..)方法返回的未来成功完成意味着您的本地节点已建立SSH会话并为将要启动的每个节点执行命令。但是成功执行命令并不意味着节点将实际启动,因为它可能由于多种原因而失败(例如,错误的GRIDGAIN_HOME)。

您应该检查以下内容:

  • 是否有GridGain日志创建GRIDGAIN_HOME/work/log目录?如果是,请检查它们 - 启动过程中可能存在异常。
  • 如果没有新日志,则执行的命令有问题。该命令可以在本地节点日志中找到 - 搜索“使用SSH命令启动远程节点:...”行。您可以尝试在终端中创建SSH连接,运行此命令并查看会发生什么。
  • 此外,您可能需要检查SSH日志以查看是否有任何错误。