首页 > 解决方案 > 尝试在 JanusGraph-Docker 中创建图形时连接被拒绝

问题描述

我正在使用 JanusGraph-Docker 图像 ( https://github.com/JanusGraph/janusgraph-docker ) 在 Docker 中设置 JanusGraph。当我在没有 docker 的情况下使用 JanusGraph 时,一切对我来说都很好,但现在我遇到了一些问题:

我使用以下命令来设置带有 Cassandra+Elasticsearch 的 janusgraph:

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.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) at org.janusgraph.diskstorage.cassandra.thrift.thriftpool.CTConnectionFactory.makeObject(CTConnectionFactory.java:43) at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool. java:1220) 在 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) at org.janusgraph.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:58) at 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。在 org.apache.tinkerpop.gremlin.groovy.jsr223 的 Script4.run(Script4.groovy:1) 处调用(未知来源)。GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:674) at org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:376) at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233) at 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)org.apache.tinkerpop.gremlin.groovy.jsr223 的 eval(GremlinGroovyScriptEngine.java:674).GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:376) 的 javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233) .tinkerpop.gremlin.groovy.engine.GremlinExecutor.lambda$eval$0(GremlinExecutor.java:266) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.Executors$RunnableAdapter。在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor 的 java.util.concurrent.FutureTask.run(FutureTask.java:266) 调用(Executors.java:511) $Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748)org.apache.tinkerpop.gremlin.groovy.jsr223 的 eval(GremlinGroovyScriptEngine.java:674).GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:376) 的 javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233) .tinkerpop.gremlin.groovy.engine.GremlinExecutor.lambda$eval$0(GremlinExecutor.java:266) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.Executors$RunnableAdapter。在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor 的 java.util.concurrent.FutureTask.run(FutureTask.java:266) 调用(Executors.java:511) $Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748)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)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)gremlin.groovy.engine.GremlinExecutor.lambda$eval$0(GremlinExecutor.java:266) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at 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。在 java.lang.Thread.run(Thread.java:748) 处运行(ThreadPoolExecutor.java:624)gremlin.groovy.engine.GremlinExecutor.lambda$eval$0(GremlinExecutor.java:266) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at 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。在 java.lang.Thread.run(Thread.java:748) 处运行(ThreadPoolExecutor.java:624)runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748)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'))

我得到同样的错误,有什么帮助吗?

标签: dockerelasticsearchcassandragremlinjanusgraph

解决方案


Note that when your server listens on 0.0.0.0, that means it will be accessible from machines other than the one that it's running on. The alternative of listening on 127.0.0.1 means it will only be accessible from processes on the same host as the server is running.

However, when your client is connecting to a server, it must specify the actual hostname or IP address it is connecting to, which could be localhost or 127.0.0.1 or whatever is the IP address that the server is connected to on the network. However, you cannot use 0.0.0.0 in the connection string from the client to the server, as that's not a valid IP address to connect to.


推荐阅读