Как настроить удаленный доступ к серверу Blazegraph?

Я пытаюсь получить удаленный доступ к моему серверу Blazegraph, который работает на виртуальной машине Ubuntu в Azure. Итак, я хочу получить доступ к серверу с его общедоступным IP-адресом, например. 51.123.45.234:9999. Я изменил настройки брандмауэра в Azure, чтобы разрешить входящий трафик на порт 9999, но в настоящее время я могу получить доступ к серверу только с помощью:

curl 127.0.0.1:9999

or

curl localhost:9999

из оболочки ssh при подключении к серверу. Я даже не могу подключиться к серверу, когда пробую IP-адрес сервера в подключенной оболочке ssh.

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-адрес — это IP-адрес виртуальной сети, в которой находится виртуальная машина, а не общедоступный. И если я попытаюсь:

curl 10.0.0.4:9999

Я получил:

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

Я настроил свой сервер, следуя инструкциям здесь . Я также изменил свой .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

Как я могу решить эту проблему?


person user128574    schedule 26.03.2017    source источник
comment
Вы создали правило безопасности для входящего трафика для виртуальной машины?   -  person David Makogon    schedule 26.03.2017
comment
Да, я добавил его в свою группу безопасности сети на Azure.   -  person user128574    schedule 26.03.2017


Ответы (2)


Wikidata-query-rdf запускает контейнер сервлетов причала и устанавливает blazegraph-service-*.war, обратите внимание, что он указывает --host $HOST, который по умолчанию имеет значение «localhost» в сценарии runBlazegraph.sh.

Согласно Конфигурация Jetty, если указан --host, он определяет интерфейс для прослушивания, поэтому по умолчанию Blazegraph, запускаемый Wikidata-query-rdf, прослушивает только интерфейс localhost.

Укажите -h your_ip при запуске runBlazegraph.sh:

./runBlazegraph.sh -h 10.0.0.4

Если это не решит проблему, вам может потребоваться использовать имя хоста 0.0.0.0 для прослушивания на всех интерфейсах и включения предпочтительный стек IPv4 для Java):

./runBlazegraph.sh -h 0.0.0.0 -o -Djava.net.preferIPv4Stack=true
person Igor Kim    schedule 27.03.2017

tcp6       0      0 127.0.0.1:9999          :::*                    LISTEN

Вы можете проверить, что ваша служба прослушивает tcp6, а не tcp. На данный момент Azure не поддерживает IPv6 напрямую на виртуальной машине Azure. Azure поддерживает только IPv6 в Azure Load Balancer. Дополнительные сведения см. по этой ссылке.

Если вы хотите получить доступ к своей службе удаленно, вы можете изменить прослушивание службы на tcp или использовать Azure Load Balancer.

Вы можете обратиться к этому похожему вопросу.

person Shui shengbao    schedule 27.03.2017