【问题标题】:How do I set up remote access to a Blazegraph server?如何设置对 Blazegraph 服务器的远程访问?
【发布时间】:2017-08-19 05:31:42
【问题描述】:

我尝试远程访问在 Azure 上的 Ubuntu VM 上运行的 Blazegraph 服务器。所以我想用它的公共IP地址访问服务器,例如51.123.45.234:9999。我更改了 Azure 中的防火墙设置以允许传入流量到端口 9999,但目前我只能通过以下方式访问服务器:

curl 127.0.0.1:9999

curl localhost:9999

当我连接到服务器时,来自 ssh shell。当我在连接的 ssh shell 上尝试服务器的 IP 时,我什至无法连接服务器。

ifconfig
eth0  Link encap:Ethernet  HWaddr 00:0d:3a:28:cd:60
      inet addr:10.0.0.4  Bcast:10.0.0.255  Mask:255.255.255.0
      inet6 addr: fe80::20d:3aff:fe28:cd60/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:208531 errors:0 dropped:328 overruns:0 frame:0
      TX packets:178597 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:170613969 (170.6 MB)  TX bytes:28500224 (28.5 MB)

lo    Link encap:Local Loopback
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:65536  Metric:1
      RX packets:6387 errors:0 dropped:0 overruns:0 frame:0
      TX packets:6387 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1
      RX bytes:565256 (565.2 KB)  TX bytes:565256 (565.2 KB)

IP 是 VM 所在的虚拟网络之一,而不是公共网络。 如果我尝试:

curl 10.0.0.4:9999

我明白了:

curl: (7) Failed to connect to 10.0.0.4 port 9999: Connection refused

我按照here 的说明设置了我的服务器。我还将我的 .ssh/config 更改为:

Host queryserver
LocalForward localhost:9999 127.0.0.1:9999

我还运行了 netstat 来检查服务器是否在监听:

netstat -ln | grep 9999
tcp6       0      0 127.0.0.1:9999          :::*                    LISTEN

我的 iptables 应该不是问题:

sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

我该如何解决这个问题?

【问题讨论】:

  • 您是否为虚拟机创建了入站安全规则?
  • 是的,我在 azure 上的网络安全组中添加了一个。

标签: linux azure wikidata blazegraph


【解决方案1】:

Wikidata-query-rdf 启动 jetty servlet 容器并安装 blazegraph-service-*.war,注意它指定了 --host $HOST,在 runBlazegraph.sh 脚本中默认为 'localhost'。

根据Jetty configuration,如果指定了--host,它定义了要监听的接口,所以默认情况下Wikidata-query-rdf运行的Blazegraph只监听localhost接口。

在运行 runBlazegraph.sh 时指定 -h your_ip :

./runBlazegraph.sh -h 10.0.0.4

如果这不能解决问题,您可能需要使用 0.0.0.0 主机名来侦听所有接口并启用 preferred IPv4 stack for java):

./runBlazegraph.sh -h 0.0.0.0 -o -Djava.net.preferIPv4Stack=true

【讨论】:

    【解决方案2】:
    tcp6       0      0 127.0.0.1:9999          :::*                    LISTEN
    

    您可以检查您的服务正在侦听 tcp6 而不是 tcp。目前,Azure 不直接在 Azure VM 上支持 IPv6。 Azure 仅在 Azure 负载均衡器上支持 IPv6。更多信息请参考此link

    如果您想远程访问您的服务,您可以修改您在tcp 上侦听的服务或使用 Azure 负载均衡器。

    你可以参考这个类似的question

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      • 2017-06-16
      相关资源
      最近更新 更多