2014-09-26 88 views
0

我想SSH进入一个远程机器运行一个gridgain实例,并从本地gridgain实例连接到它。这可以做到吗?GridGain网络连接:是否可以通过SSH转发节点?

Gridgain网络连接如何完成?据我所知,该节点将在47100-47200的第一个可用端口上启动并侦听。但它也打开了更多的港口。

似乎仅仅是例如将远程机器(远程机器网格端口)上的47100转发到本地47100.可能通信不仅仅是客户端服务器,而是与试图连接到我的家庭节点的远程节点对称?

是否有关于网络协议的文档?


我尝试了symetrically转发

  • GridTcpCommunicationSpi.DFLT_PORTs(47100+)和
  • GridTcpDiscoverySpi.DFLT_PORTs(47500+)

端口。

节点能够连接。在本地节点上我第一次得到这样的警告:

WARN GridTcpCommunicationSpi - Connect timed out (consider increasing 'connTimeout' configuration property) [addr=/10.240.136.167:47100] 
WARN GridTcpDiscoverySpi - Timed out waiting for message delivery receipt (most probably, the reason is in long GC pauses on remote node; consider tuning GC and increasing 'ackTimeout' configuration property). Will retry to send message with increased timeout. Current timeout: 5000. 
WARN GridDhtPreloader - <gg-utility-sys-cache> Failed to wait for initial partition map exchange. Possible reasons are: 
    ^-- Transactions in deadlock. 
    ^-- Long running transactions (ignore if this is the case). 
    ^-- Unreleased explicit locks. 
WARN GridTcpDiscoverySpi - Timed out waiting for message to be read (most probably, the reason is in long GC pauses on remote node. Current timeout: 5000. 

这是当某种方式试图连接到连接到10.240.136.167:47100超时 - 这是远程机器的本地IP,这显然是不可能的。

但正如我得到以下它看起来不错:

INFO GridDiscoveryManager - Topology snapshot [ver=2, nodes=2, CPUs=6, heap=2.7GB] 

上执行以下广播测试:

 grid.compute().broadcast(new GridRunnable() { 
      @Override 
      public void run() { 
       System.out.println("hello!"); 
      } 
     }); 

我得到的远程机器上这种致命的错误,不管它可能是:

[SEVERE][gridgain-#9%pub-null%][GridJobProcessor] Task was not deployed or was redeployed since task execution [taskName=nix.GoogleGridRun$Test, taskClsName=at$ 
     at org.gridgain.grid.kernal.processors.job.GridJobProcessor$JobExecutionListener.onMessage(GridJobProcessor.java:1732) 
     at org.gridgain.grid.kernal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:654) 
     at org.gridgain.grid.kernal.managers.communication.GridIoManager.access$1800(GridIoManager.java:62) 
     at org.gridgain.grid.kernal.managers.communication.GridIoManager$6.body(GridIoManager.java:615) 
     at org.gridgain.grid.util.worker.GridWorker.run(GridWorker.java:151) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
[19:58:02,237][SEVERE][gridgain-#11%pub-null%][GridJobProcessor] Task was not deployed or was redeployed since task execution [taskName=nix.GoogleGridRun$1, taskClsName=at.a$ 
For more information see: 
    Troubleshooting:  http://bit.ly/GridGain-Troubleshooting 
    Documentation Center: http://bit.ly/GridGain-Documentation 

class org.gridgain.grid.GridDeploymentException: Task was not deployed or was redeployed since task execution [taskName=nix.GoogleGridRun$1, taskClsName=at.ac.ait.is.infrase$ 
For more information see: 
    Troubleshooting:  http://bit.ly/GridGain-Troubleshooting 
    Documentation Center: http://bit.ly/GridGain-Documentation 

     at org.gridgain.grid.kernal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1107) 
     at org.gridgain.grid.kernal.processors.job.GridJobProcessor$JobExecutionListener.onMessage(GridJobProcessor.java:1732) 
     at org.gridgain.grid.kernal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:654) 
     at org.gridgain.grid.kernal.managers.communication.GridIoManager.access$1800(GridIoManager.java:62) 
     at org.gridgain.grid.kernal.managers.communication.GridIoManager$6.body(GridIoManager.java:615) 

在客户端我什么都看不到:

INFO GridDeploymentLocalStore - Class locally deployed: class nix.GoogleGridRun$1 
hello! 

当我尝试通过调试器再次推播,然后我得到了本地计算机和相同的错误消息像以前在远程机器上执行以下操作:

ERROR GridTaskWorker - Failed to obtain remote job result policy for result from GridComputeTask.result(..) method (will fail the whole task): GridJobResultImpl [[email protected]183d, sib=GridJobSiblingImpl [sesId=4c17983b841-43f8b9fa-87ae-4a20-99a1-8d36f5eb74a4, jobId=0d17983b841-ef0084a6-f6a7-4501-87a0-3c5eb7c72bca, nodeId=ef0084a6-f6a7-4501-87a0-3c5eb7c72bca, isJobDone=false], jobCtx=GridJobContextImpl [jobId=0d17983b841-ef0084a6-f6a7-4501-87a0-3c5eb7c72bca, attrs={}], node=GridTcpDiscoveryNode [id=ef0084a6-f6a7-4501-87a0-3c5eb7c72bca, addrs=[10.240.136.167, 127.0.0.1], sockAddrs=[/10.240.136.167:47500, /10.240.136.167:47500, /127.0.0.1:47500], discPort=47500, order=1, loc=false, ver=6.5.0#20140925-sha1:6dc3d773], ex=class o.g.g.GridDeploymentException: Task was not deployed or was redeployed since task execution [taskName=nix.GoogleGridRun$Test, taskClsName=nix.GoogleGridRun$Test, codeVer=0, clsLdrId=eb17983b841-43f8b9fa-87ae-4a20-99a1-8d36f5eb74a4, seqNum=1411761402302, depMode=SHARED, dep=null] 
For more information see: 
    Troubleshooting:  http://bit.ly/GridGain-Troubleshooting 
    Documentation Center: http://bit.ly/GridGain-Documentation 
, hasRes=true, isCancelled=false, isOccupied=true] 
class org.gridgain.grid.GridException: Remote job threw user exception (override or implement GridComputeTask.result(..) method if you would like to have automatic failover for this exception). 
    at org.gridgain.grid.compute.GridComputeTaskAdapter.result(GridComputeTaskAdapter.java:109) 
    at org.gridgain.grid.kernal.processors.task.GridTaskWorker$3.apply(GridTaskWorker.java:819) 
    at org.gridgain.grid.kernal.processors.task.GridTaskWorker$3.apply(GridTaskWorker.java:812) 
    at org.gridgain.grid.util.GridUtils.wrapThreadLoader(GridUtils.java:6093) 
    at org.gridgain.grid.kernal.processors.task.GridTaskWorker.result(GridTaskWorker.java:812) 
    at org.gridgain.grid.kernal.processors.task.GridTaskWorker.onResponse(GridTaskWorker.java:708) 
    at org.gridgain.grid.kernal.processors.task.GridTaskProcessor.processJobExecuteResponse(GridTaskProcessor.java:906) 
    at org.gridgain.grid.kernal.processors.task.GridTaskProcessor$JobMessageListener.onMessage(GridTaskProcessor.java:1138) 
    at org.gridgain.grid.kernal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:654) 
    at org.gridgain.grid.kernal.managers.communication.GridIoManager.access$1800(GridIoManager.java:62) 
    at org.gridgain.grid.kernal.managers.communication.GridIoManager$6.body(GridIoManager.java:615) 
    at org.gridgain.grid.util.worker.GridWorker.run(GridWorker.java:151) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: class org.gridgain.grid.GridDeploymentException: Task was not deployed or was redeployed since task execution [taskName=nix.GoogleGridRun$Test, taskClsName=nix.GoogleGridRun$Test, codeVer=0, clsLdrId=eb17983b841-43f8b9fa-87ae-4a20-99a1-8d36f5eb74a4, seqNum=1411761402302, depMode=SHARED, dep=null] 
For more information see: 
    Troubleshooting:  http://bit.ly/GridGain-Troubleshooting 
    Documentation Center: http://bit.ly/GridGain-Documentation 

    at org.gridgain.grid.kernal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1107) 
    at org.gridgain.grid.kernal.processors.job.GridJobProcessor$JobExecutionListener.onMessage(GridJobProcessor.java:1732) 
    at org.gridgain.grid.kernal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:654) 
    at org.gridgain.grid.kernal.managers.communication.GridIoManager.access$1800(GridIoManager.java:62) 
    at org.gridgain.grid.kernal.managers.communication.GridIoManager$6.body(GridIoManager.java:615) 
    at org.gridgain.grid.util.worker.GridWorker.run(GridWorker.java:151) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    ... 1 more 

在本地主机一边我有虚与实端口

tcp6  0  0 127.0.0.1:47100   127.0.0.1:38272   VERBUNDEN 12280/java  
tcp6  0  0 127.0.0.1:38272   127.0.0.1:47100   VERBUNDEN 12280/java 

而一些并从SSH客户端(也JAVA)之间的连接

tcp6 45832  0 78.101.12.107:47101 146.148.119.62:51867 VERBUNDEN 12280/java  
tcp6  231  0 78.101.12.107:47501 146.148.119.62:46219 CLOSE_WAIT 12280/java  
tcp6  48  0 78.101.12.107:37129 146.148.119.62:22  VERBUNDEN 12280/java 
tcp6  1  0 78.101.12.107:47501 146.148.119.62:44391 CLOSE_WAIT 12280/java 

78.101.12.107 =本地ip 146.148.119。62 =远程IP

我看了看netstat的上一个成功的地方2节点网格我看到正在做以下连接:

tcp6  0  0 ::1:47501    ::1:43143    VERBUNDEN 10218/java  
tcp6  0  0 ::1:47500    ::1:34708    VERBUNDEN 9496/java  
tcp6  0  0 ::1:34708    ::1:47500    VERBUNDEN 10218/java  
tcp6  0  0 ::1:43143    ::1:47501    VERBUNDEN 9496/java 

这些都是GridTcpCommunicationSpi.DFLT_PORTs和GridTcpDiscoverySpi.DFLT_PORTs之间 - 所以这也许应该足够。

什么可能是错的任何想法呢?

回答

0

首页节点应该可以从集群为好。你有两个选择:

  1. 设置VPN
  2. 实施和它会变成他们的本地地址到外部地址的所有节点配置GridAddressResolver。这将需要在家庭网络中设置端口转发。
+0

感谢您的回复!好的1是显而易见的,当你是VPN时,那么有一个PN到GridGain。 2是什么意思?我可以让GridGain相信,一个节点即使在“虚拟本地”的情况下也在远程地址上?当使用隧道时,它只是一种方式。我也可以设置一个回路端口转发。那么我想,两台机器上的端口号必须相同,因为没有一台机器可能知道它们在哪台机器上。 GridGain需要端口上的文档吗?它只有一个? – Roman 2014-09-26 15:32:26

+0

我现在几乎可以得到你可能意味着什么2.我可以改变一个节点连接到的地址。但是关于“本地主机”上的一个节点呢 - 这是SSH隧道场景?我想我不得不做一些调试,除非有人知道更多。 – Roman 2014-09-26 16:19:49

相关问题