2014-09-26 7 views
0

gridgain 인스턴스를 실행하는 원격 시스템에 SSH를 연결하고 로컬 gridgain 인스턴스에서 연결하려고합니다. 이 작업을 수행 할 수 있습니까?GridGain 네트워크 연결 : SSH를 통해 노드를 전달할 수 있습니까?

gridgain 네트워크 연결은 어떻게 이루어 집니까? 내가 할 수있는 한 노드가 회전하여 47100-47200의 첫 번째 사용 가능한 포트에서 수신 대기합니다. 하지만 더 많은 포트도 열어 둡니다.

예를 들어, 원격 컴퓨터 (원격 컴퓨터의 gridgain 포트)에서 47100을 로컬 47100으로 전달하십시오. 아마도 통신은 클라이언트 서버가 아니라 원격 노드가 내 홈 노드에 연결을 시도 할 때 대칭 적입니까?

네트워크 프로토콜에 대한 문서가 있습니까?


는 I는 symetrically 포워딩

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

포트를 시도했다.

노드를 연결할 수 있습니다. - 원격 컴퓨터 분명히 불가능 지역 IP를,이다

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에 연결하는 연결을 시도 타임 아웃은 : 로컬 노드에서 내가 처음이 경고를 얻을.

하지만 다음과 같은 얻을로 좋은 보이는 다음 방송 테스트 실행에

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 클라이언트에서 좀 더 (또한 자바) 사이의 연결을

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 = 내가 다음 연결이 만들어지고 참조 성공적인 지역 2 노드 그리드에서 netstat 보았다

원격 IP :

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

홈 노드는 클러스터에서도 사용할 수 있어야합니다.

  • 가 구현하고 외부 주소로 로컬 주소를 설정합니다 모든 노드에 대해 GridAddressResolver을 구성

    1. 설정 VPN : 당신은 두 가지 옵션이 있습니다. 이렇게하려면 홈 네트워크에서 포트 포워딩을 설정해야합니다.
  • +0

    답장을 보내 주셔서 감사합니다. 글쎄, 당신이 VPN을 누른 다음 GridGain에 PN이있을 때 분명했습니다. 2로 무슨 뜻이야? GridGain이 "사실상 로컬"임에도 불구하고 노드가 원격 주소에 있다고 믿게 만들 수 있습니까? 터널을 사용할 때는 한 가지 방법입니다. 나 또한 뒤로 경로 포트 포워딩을 설정할 수 있습니다. 그렇다면 포트 번호는 한 대의 양방향 연결을 위해 두 컴퓨터에서 동일해야합니다. 두 대의 컴퓨터가 어느 컴퓨터에 있는지 알지 못하기 때문입니다. GridGain에 필요한 포트에 문서가 있습니까? 그것은 단 하나입니까? – Roman

    +0

    나는 이제 당신이 의미하는 바를 거의 얻는다. 나는 노드가 연결된 주소를 바꿀 수있다. 그러나 "localhost"에있는 노드는 무엇입니까? ssh 터널 시나리오입니까? 누군가가 더 많이 알지 못한다면 디버깅을해야 할 것 같습니다. – Roman