如何设置对 Blazegraph 服务器的远程访问?
How do I set up remote access to a Blazegraph server?
我尝试远程访问我的 Blazegraph 服务器,该服务器位于 Azure 上 Ubuntu VM 上的 运行。所以我想用它的 public IP 地址访问服务器,例如51.123.45.234:9999。我更改了 Azure 中的防火墙设置以允许传入流量到端口 9999,但目前我只能通过以下方式访问服务器:
curl 127.0.0.1:9999
或
curl localhost:9999
当我连接到服务器时从 ssh shell。当我在连接的ssh上尝试服务器的IP时,我什至无法连接到服务器shell。
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 所在的虚拟网络之一,而不是 public。
如果我尝试:
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
我该如何解决这个问题?
tcp6 0 0 127.0.0.1:9999 :::* LISTEN
您可以检查您的服务正在侦听 tcp6 而不是 tcp。目前,Azure 不直接支持 Azure VM 上的 IPv6。 Azure 仅在 Azure 负载均衡器上支持 IPv6。更多信息请参考此link.
如果您想远程访问您的服务,您可以修改监听 tcp
的服务或使用 Azure 负载均衡器。
你可以参考这个类似的。
Wikidata-query-rdf启动jetty servlet容器并安装blazegraph-service-*.war,注意它指定了--host $HOST,在[=23中默认为'localhost' =] 脚本.
根据Jetty configuration,如果 --host 指定,它定义了要监听的接口,所以默认情况下,Wikidata-query-rdf 的 Blazegraph 运行 只监听 localhost 接口。
指定 -h your_ip 而 运行ning runBlazegraph.sh :
./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
我尝试远程访问我的 Blazegraph 服务器,该服务器位于 Azure 上 Ubuntu VM 上的 运行。所以我想用它的 public IP 地址访问服务器,例如51.123.45.234:9999。我更改了 Azure 中的防火墙设置以允许传入流量到端口 9999,但目前我只能通过以下方式访问服务器:
curl 127.0.0.1:9999
或
curl localhost:9999
当我连接到服务器时从 ssh shell。当我在连接的ssh上尝试服务器的IP时,我什至无法连接到服务器shell。
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 所在的虚拟网络之一,而不是 public。 如果我尝试:
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
我该如何解决这个问题?
tcp6 0 0 127.0.0.1:9999 :::* LISTEN
您可以检查您的服务正在侦听 tcp6 而不是 tcp。目前,Azure 不直接支持 Azure VM 上的 IPv6。 Azure 仅在 Azure 负载均衡器上支持 IPv6。更多信息请参考此link.
如果您想远程访问您的服务,您可以修改监听 tcp
的服务或使用 Azure 负载均衡器。
你可以参考这个类似的
Wikidata-query-rdf启动jetty servlet容器并安装blazegraph-service-*.war,注意它指定了--host $HOST,在[=23中默认为'localhost' =] 脚本.
根据Jetty configuration,如果 --host 指定,它定义了要监听的接口,所以默认情况下,Wikidata-query-rdf 的 Blazegraph 运行 只监听 localhost 接口。
指定 -h your_ip 而 运行ning runBlazegraph.sh :
./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