【问题标题】:Error: connect ECONNREFUSED when trying to connect to remote gremlin server (TinkerPop3)错误:尝试连接到远程 gremlin 服务器 (TinkerPop3) 时连接 ECONNREFUSED
【发布时间】:2016-01-22 14:34:49
【问题描述】:

我正在使用 gremlin-javascript 模块访问远程 gremlin 服务器。 我在 app.js 中的代码:

var gremlin = require('gremlin-client');
var client = gremlin.createClient(8182, 'localhost');
var query = client.stream('g.V()');
query.on('data', function(result) {
  console.log(result);
});
query.on('end', function() {
  console.log("All results fetched");
});

这工作正常,所有查询都得到执行。但是当我用我的远程服务器地址 - cbtitan.cloudapp.net 替换“localhost”时,它会返回 ECONNREFUSED 错误。

我应该改变/做什么来连接到远程服务器?或者我应该更改该远程服务器中的任何配置吗?我被这个问题严重卡住了,请帮帮我。提前致谢。

gremlin-server.yaml

host: localhost
port: 8182
threadPoolWorker: 1
gremlinPool: 8
scriptEvaluationTimeout: 30000
serializedResponseTimeout: 30000
channelizer: org.apache.tinkerpop.gremlin.server.channel.HttpChannelizer
graphs: {
  graph: conf/gremlin-server/titan-berkeleyje-server.properties}
plugins:
  - aurelius.titan
scriptEngines: {
  gremlin-groovy: {
    imports: [java.lang.Math],
    staticImports: [java.lang.Math.PI],
    scripts: [scripts/empty-sample.groovy]},
  nashorn: {
      imports: [java.lang.Math],
      staticImports: [java.lang.Math.PI]}}
serializers:
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }}
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}
processors:
  - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}
metrics: {
  consoleReporter: {enabled: true, interval: 180000},
  csvReporter: {enabled: true, interval: 180000, fileName: /tmp/gremlin-server-metrics.csv},
  jmxReporter: {enabled: true},
  slf4jReporter: {enabled: true, interval: 180000},
  gangliaReporter: {enabled: false, interval: 180000, addressingMode: MULTICAST},
  graphiteReporter: {enabled: false, interval: 180000}}
threadPoolBoss: 1
maxInitialLineLength: 4096
maxHeaderSize: 8192
maxChunkSize: 8192
maxContentLength: 65536
maxAccumulationBufferComponents: 1024
resultIterationBatchSize: 64
writeBufferHighWaterMark: 32768
writeBufferHighWaterMark: 65536
ssl: {
enabled: false}

【问题讨论】:

  • 请发布您的 gremlin 服务器 yaml 配置文件
  • 我刚刚用 gremlin-server.yaml 文件 @stephenmallette 更新了我的问题
  • 客户端和远程服务器之间是否有任何东西会阻止 ws 连接打开?
  • 你的意思是任何 CORS 问题?
  • 你解决过这个问题吗?

标签: node.js cassandra titan gremlin tinkerpop3


【解决方案1】:

在gremlin-server.yaml 中,您需要进行一些更改。

您需要更新主机。默认为localhost,这意味着您只能从本地客户端进行连接。如果您想监听所有接口,您应该使用机器的 IP 地址或 0.0.0.0。

host: 0.0.0.0

您应该使用 WebSocketChannelizer 而不是 HttpChannelizer 和 gremlin-javascript,因为它是 TinkerPop3 Gremlin 服务器的 WebSocket JavaScript 客户端。

channelizer: org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer

【讨论】:

  • 这为我在 AWS 上使用 titanDB 修复了它(通道器已经正确),但最好理解“主机”的含义。听起来属性名称并没有完全描述它的用途。你有任何(有用的)资源的链接吗?我在连接 gremlin-client js 库时遇到了问题,但我无法以一种可以解释为什么它似乎拒绝客户端连接的方式读取“主机”。
猜你喜欢
  • 2016-12-09
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 2016-08-23
  • 2018-03-25
  • 1970-01-01
相关资源
最近更新 更多