2015-01-13 1 views
1

elasticsearch를 프로덕션과 통합하려고하는데 다음과 같은 예외가 발생합니다. 나는 두 서버에서 사용하고 JVM 1.7.0_40elasticsearch RemoteTransportException - 전용 서버에서

2015년 1월 12일 21시 29분 6초 DEBUG 그물코 : 94 - 노드에 접속 [Whitemane, Aelfyre] [# 전송 # -1] inet [/xxx.xxx.xx.xxx:9300]]] 2015-01-12 21:29:06 WARN netty : 114 - [Whitemane, Aelfyre] 메시지가 완전히 읽혀지지 않음 미래 (org.elasticsearch.c[email protected]4e70a141), 오류 [true], 재설정 중 2015-01-12 21:29:06 정보 전송 : 109 - [Whitemane, Aelfyre] 노드를 가져 오는 데 실패했습니다. [# 전송 # -1] [inet [/xxx.xxx.xx.xxx:9300]]에 대한 정보, 연결 해제 중 ...org.elasticsearch.transport.RemoteTransportException 5,: org.elasticsearch.transport.TransportSerializationException :에 의한 스트림 직렬화 예외 응답에 실패 org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError 스트림에 직렬화 예외 응답 실패 org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream에서 org.elasticsearch.transport.netty.MessageChannelHandler.messageReceived (MessageChannelHandler.java:125)에서 (MessageChannelHandler.java:171) (SimpleChannelUpstreamHandler.java:70) at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream (DefaultCha org.elasticsearch.common.netty.channel.Channels.fireMessageReceived (채널에서 org.elasticsearch.common.netty.channel.DefaultChannelPipeline $ DefaultChannelHandlerContext.sendUpstream (DefaultChannelPipeline.java:787) 에서 nnelPipeline.java:560) . 자바 : org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder에서 org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived (FrameDecoder.java:462) 에서 296) . callDecode (FrameDecoder.java:443) at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.messageReceived (FrameDecoder.java:303) at org.elasticsearch.common.net ty.channel.SimpleChannelUpstreamHandler.handleUpstream org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream (DefaultChannelPipeline.java:560)에서 (SimpleChannelUpstreamHandler.java:70) org.elasticsearch.common.netty.channel에서 . org.elasticsearch.common.netty.channel.Channels.fireMessageReceived에서 DefaultChannelPipeline.sendUpstream org.elasticsearch.common.netty.channel.Channels.fireMessageReceived (Channels.java:268)에서 (DefaultChannelPipeline.java:555) (Channels.java:255) at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.read (NioWorker.java:88) at org.elasticsearch.common. netty.channel.socket.nio.AbstractNioWorker.process 조직에서 org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run (AbstractNioSelector.java:312) 에서 (AbstractNioWorker.java:107). elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run (AbstractNioWorker.java:88) at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run (NioWorker.java:178) at org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run (ThreadRenamingRunnable.자바 : 108) org.elasticsearch.common.netty.util.internal.DeadLockProofWorker $의 1.run (DeadLockProofWorker.java:42) 에서 java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145 AT) (Thread.java:724)에서 발생했습니다 : java.io.InvalidClassException : 클래스를 읽지 못했습니다. java.io.ObjectInputStream.readNonP에서 java.io.ObjectInputStream.readClassDesc (ObjectInputStream.java:1515)에서 java.io.ObjectInputStream.readNonProxyDesc (ObjectInputStream.java:1601) 에서 디스크립터 java.io.ObjectInputStream의 roxyDesc에서 java.io.ObjectInputStream.readNonProxyDesc (ObjectInputStream.java:1620)에서 java.io.ObjectInputStream.readClassDesc (ObjectInputStream.java:1515)에서 (ObjectInputStream.java:1620) 는 java.io에서 .readClassDesc java.io.ObjectInputStream.readClassDesc (ObjectInputStream.java:1515)에서 java.io.ObjectInputStream.readNonProxyDesc (ObjectInputStream.java:1620)에서 (ObjectInputStream.java:1515) ObjectInputStream.readOrdinaryObject (ObjectInputStream.java:1769) (java.io.ObjectInputStream.readObject0 (ObjectInputStream.java:1348))에 있습니다.at java.io.ObjectInputStream.readObject (ObjectInputStream.java:370) at org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError (MessageChannelHandler.java:169) ... 23 자세한 내용 : java.lang. ClassNotFoundException가 : 를 java.security.AccessController에서 이는 java.net.URLClassLoader $ 1.run (URLClassLoader.java:355)에서 이는 java.net.URLClassLoader $의 1.run (URLClassLoader.java:366)에서 org.elasticsearch.ElasticsearchException. doPrivileged (네이티브 메소드) java.net.URLClassLoader.findClass (URLClassLoader.java:354) 에서 java.lang.ClassLoader.loadClass (ClassLoader.java:424) 에서 sun.misc.Launcher $ AppClassLoader.loadClass (실행 프로그램 .java : 308) at,210 org.elasticsearch.common.io.ThrowableObjectInputStream.readClassDescriptor에서 java.lang.ClassLoader.loadClass org.elasticsearch.common.io.ThrowableObjectInputStream.loadClass (ThrowableObjectInputStream.java:93)에서 (ClassLoader.java:357) ( java.io.ObjectInputStream.readNonProxyDesc (ObjectInputStream.java:1599에서 ThrowableObjectInputStream.java:67) ) ... 루트 예외 java.lang.ClassNotFoundException: org.elasticsearch.ElasticsearchException 무엇이든지 당신이 Elasticsearch 통합으로 판단보다

+0

이 시나리오에 대한 자세한 정보를 제공해 주시겠습니까? 세부 사항이없는 문장의 간단한 스택 추적은 stackoverflow에 대한 좋은 게시물이 아닙니다. "elasticsearch와 프로덕션을 통합하십시오"라는 것은 무엇을 의미합니까? ES 버전은 무엇입니까? –

+0

나는 모든 서비스와 elasticsearch를 가진 서버 A를 가지고 있으며 이제 다른 서버 B로 elasticsearch를 분리하고 싶다. 나는 두 서버 모두에서 jdk 1.7.0_40을 가지고있다. elasticsearch 0.20.5는 서버 A에 설치되고 elasticseacr 1.4.2는 서버 B에 설치된다. . 그리고 지금 내가 서버 A에서 예외 위에 서버 B에서 보여준 인덱스 생성 서비스를 호출하려고 할 때 – Rik

+0

내 대답을 참조하십시오. 다른 버전의 Elasticsearch를 사용하면 버전이 크게 달라집니다. 그리고 이것이 가장 예외적 인 이유입니다. –

답변

0

34 (가 통합 생산을 가진 elasticsearch) 나는 어느 쪽이든을 짐작하고있다 :

  • 당신이 당신의 "생산"시스템의 클래스 경로에서 elasticsearch.jar을 누락하거나 사실, 당신이 (서버가 하나 개의 버전이 다른 Elasticsearch 버전을 사용하고
  • 아니라,이 클래스 경로에있어 가정하지만, 귀하의 "생산"시스템은 다른 버전의 ES 병을 사용합니다

Elasticsearch 0.20.5에서 이것은 질문 대상 클래스입니다 : https://github.com/elasticsearch/elasticsearch/blob/v0.20.5/src/main/java/org/elasticsearch/ElasticSearchException.java. 클래스 이름 인 ElasticSearchException (대문자 "S")을 확인하십시오.

Elasticsearch 1.4.2에서 클래스 이름이 변경됩니다. https://github.com/elasticsearch/elasticsearch/blob/v1.4.2/src/main/java/org/elasticsearch/ElasticsearchException.java. 클래스 이름 인 ElasticsearchException (소문자 "s")을 확인하십시오.

그래서 두 서버에서 모두 동일한 Elasticsearch 버전을 사용해야합니다.