2014-09-26 86 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

相關問題