【发布时间】:2020-01-26 17:55:17
【问题描述】:
我正在使用 JanusGraph-Docker 映像 (https://github.com/JanusGraph/janusgraph-docker) 在 Docker 中设置 JanusGraph。当我在没有 docker 的情况下使用 JanusGraph 时,一切正常,但现在我遇到了一些问题:
我使用以下命令来设置 janusgraph 与 Cassandra+Elasticsearch:
docker-compose -f docker-compose-cql-es.yml up
这将启动所有必需的容器,我仔细检查了这些容器:
docker ps
现在我想通过 Gremlin 控制台连接到 Janusgraph:
docker-compose -f docker-compose-cql-es.yml run --rm -e GREMLIN_REMOTE_HOSTS=janusgraph janusgraph ./bin/gremlin.sh
这会启动 gremlin 控制台,然后我将远程配置为:
:remote connect tinkerpop.server conf/remote.yaml
:remote console
这也很好用。之后,我尝试创建一个新图表,但失败:
graph = JanusGraphFactory.open('conf/janusgraph-cassandra-es.properties')
这给了我以下信息:
连接被拒绝(连接被拒绝)
全栈跟踪:
java.net.ConnectException:连接被拒绝(连接被拒绝) 在 java.net.PlainSocketImpl.socketConnect(本机方法) 在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 在 java.net.Socket.connect(Socket.java:589) 在 org.apache.thrift.transport.TSocket.open(TSocket.java:182) 在 org.apache.thrift.transport.TFramedTransport.open(TFramedTransport.java:81) 在 org.janusgraph.diskstorage.cassandra.thrift.thriftpool.CTConnectionFactory.makeRawConnection(CTConnectionFactory.java:110) 在 org.janusgraph.diskstorage.cassandra.thrift.thriftpool.CTConnectionFactory.makeObject(CTConnectionFactory.java:74) 在 org.janusgraph.diskstorage.cassandra.thrift.thriftpool.CTConnectionFactory.makeObject(CTConnectionFactory.java:43) 在 org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220) 在 org.janusgraph.diskstorage.cassandra.thrift.CassandraThriftStoreManager.getCassandraPartitioner(CassandraThriftStoreManager.java:215) 在 org.janusgraph.diskstorage.cassandra.thrift.CassandraThriftStoreManager.(CassandraThriftStoreManager.java:197) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 org.janusgraph.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:58) 在 org.janusgraph.diskstorage.Backend.getImplementationClass(Backend.java:440) 在 org.janusgraph.diskstorage.Backend.getStorageManager(Backend.java:411) 在 org.janusgraph.graphdb.configuration.builder.GraphDatabaseConfigurationBuilder.build(GraphDatabaseConfigurationBuilder.java:50) 在 org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:161) 在 org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:132) 在 org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:79) 在 org.janusgraph.core.JanusGraphFactory$open.call(未知来源) 在 Script4.run(Script4.groovy:1) 在 org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:674) 在 org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:376) 在 javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233) 在 org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor.lambda$eval$0(GremlinExecutor.java:266) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748)
我可以运行如下查询,因为 janusgraph 服务器似乎预先部署了一个带有遍历对象的图:
g.addV('user').property('username','exampleUserName')
但是当我尝试从 python gremlin 连接时:
graph = Graph()
g = graph.traversal().withRemote(DriverRemoteConnection('ws://0.0.0.0:8182/gremlin','g'))
我遇到同样的错误,有什么帮助吗?
【问题讨论】:
-
你真的指定
0.0.0.0作为gremlin-python中主机的IP吗?它当然应该是可以访问 JanusGraph 容器的 IP 地址。 -
如果我检查我的容器正在运行哪些 IP 和端口,它会说 janusgraph 容器正在 gremlin-python 中的
0.0.0.0:8182->8182/tcp上运行,在DriverRemoteConnection中指定像ws://0.0.0.0:8182/gremlin这样的 IP 应该是够了吧? -
你有没有设法解决这个问题?我遇到了同样的问题,发现原因是服务器无法连接到elasticsearch服务。问题是我不知道如何解决这个问题。
标签: docker elasticsearch cassandra gremlin janusgraph