【问题标题】:Connecting to remote neo4j server连接到远程 neo4j 服务器
【发布时间】:2017-07-13 02:52:46
【问题描述】:

我有一个在 GCE Ubuntu 16.04 实例上运行的 neo4j 服务器,我想在本地浏览器中访问它。当我在浏览器中输入地址时,它会引发 DNS 错误。我可以做些什么来连接?这是我到目前为止所做的:

在 GCE 上添加了防火墙规则,以使远程主机能够侦听端口 7474 和 7473。

在 /etc/neo4j/neo4j.conf 中更改了以下几行:

# With default configuration Neo4j only accepts local connections.
# To accept non-local connections, uncomment this line:
dbms.connectors.default_listen_address=0.0.0.0

# Bolt connector
dbms.connector.bolt.enabled=true
#dbms.connector.bolt.tls_level=OPTIONAL
dbms.connector.bolt.listen_address=:7687

# HTTP Connector. There must be exactly one HTTP connector.
dbms.connector.http.enabled=true
dbms.connector.http.listen_address=:7474

# HTTPS Connector. There can be zero or one HTTPS connectors.
dbms.connector.https.enabled=true
dbms.connector.https.listen_address=:7473

Netstat 输出:

Proto Recv-Q Send-Q Local Address           Foreign Address         State 
tcp6       0      0 :::7687                 :::*                    LISTEN     
tcp6       0      0 :::7473                 :::*                    LISTEN     
tcp6       0      0 :::7474                 :::*                    LISTEN

每次我启动 neo4j(服务 neo4j 启动,而不仅仅是 neo4j 启动)时,都会显示以下内容:

Jul 12 18:43:50 instance-1 neo4j[2003]: 2017-07-12 18:43:50.188+0000 INFO  ======== Neo4j 3.2.2 ========
Jul 12 18:43:50 instance-1 neo4j[2003]: 2017-07-12 18:43:50.358+0000 INFO  Starting...
Jul 12 18:43:54 instance-1 neo4j[2003]: 2017-07-12 18:43:54.119+0000 INFO  Bolt enabled on 0.0.0.0:7687.
Jul 12 18:44:03 instance-1 neo4j[2003]: 2017-07-12 18:44:03.511+0000 INFO  Started.
Jul 12 18:44:08 instance-1 neo4j[2003]: 2017-07-12 18:44:08.037+0000 INFO  Remote interface available at http://localhost:7474/

【问题讨论】:

  • 如果您收到 DNS 错误,那么这并不是 neo4j 的问题,是吗?你还有其他可以访问的东西吗?
  • 是的,我在访问同一实例上运行的 Flask 应用程序时没有问题,但我也无法从远程 Python 脚本连接到 neo4j
  • 您的防火墙规则听起来不像您预期​​的那样有效。正如汤姆所说,您需要在 f/w 规则中允许 7687。您的实例有标签吗?您的 fw 规则是否有 targetTags 包含您实例中的标签?
  • @DaveBennett 我已将 targetTag 设置为网络中的所有实例,这样应该没问题。我还设置了与设置 Flask 完全相同的防火墙规则,但看起来这是 tcp6。 GCE 不允许我将其设置为 tcp6:7474,所以我假设 tcp:7474 同时处理 v4 和 v6

标签: neo4j google-compute-engine


【解决方案1】:

这里有几件事要检查:

  1. 您可以从本地桌面 ping 实例吗? nmap -p 7474 显示什么(如果端口未打开,则未正确设置)?
  2. 在 GCE 上,netstat -an 是否显示端口 7474、7473 和 7687 (!) 在 0.0.0.0 上监听?更改 neo4j.conf 后是否重启了 neo4j?
  3. 您还需要打开螺栓端口 7687。虽然这不是您当前的问题(您至少应该看到该页面),但浏览器使用 bolt 连接到数据库。所以 nmap -p 7687 应该也显示端口是开放的!

希望这会有所帮助!

问候, 汤姆

【讨论】:

  • 当我检查 netstat 时,它没有在本地地址上指定 0.0.0.0。这可能是问题吗?我已经更新了原始帖子中的 netstat 输出。