【问题标题】:Running OSRM docker on remote machine在远程机器上运行 OSRM docker
【发布时间】:2020-03-12 02:10:31
【问题描述】:

我正在尝试在远程机器上运行 OSRM docker。我按照https://github.com/Project-OSRM/osrm-backend 上提到的设置说明进行操作

wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf

docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-extract -p /opt/car.lua /data/berlin-latest.osm.pbf

docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-partition /data/berlin-latest.osrm
docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-customize /data/berlin-latest.osrm

docker run -t -i -p 5000:5000 -v "${PWD}:/data" osrm/osrm-backend osrm-routed --algorithm mld /data/berlin-latest.osrm

执行上述指令后,我可以运行 docker 并获得本地结果。

// this gives me proper response.
curl "http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true"

// but when I tried with my remote machine IP then is giving
// Failed to connect to my_remote_ip port 5000: Connection timed out
curl "http://my_remote_ip:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true"

【问题讨论】:

  • 根据您发布的内容,看起来该实例没有任何 firewall rules 用于传入流量。您是否尝试添加它们?
  • @yyyyahir 感谢重播。我检查了防火墙规则。更新防火墙规则后,它开始正常工作。感谢您的帮助。
  • 添加了一个答案以阐明 GCE 防火墙在这些情况下的工作原理。

标签: docker osrm


【解决方案1】:

仅基于my comment 发布答案,以解释使用 GCE 实例时的防火墙范围。

Linux/Windows 防火墙规则(iptablesfirewalld 等)将在操作系统级别起作用。但是,请考虑实例本身存在于 VPC 中,该 VPC 运行自己的防火墙规则。

这意味着,如果您有一个传入请求,它会在进入实例之前先到达 VPC。这意味着您需要在 GCE 防火墙级别与操作系统防火墙分开管理流量。

The VPC firewall also controls traffic going from the instance to the internet and from instance to instance:

防火墙规则适用于网络中的传出(出口)和传入(入口)流量。防火墙规则控制流量,即使它完全在网络内,包括 VM 实例之间的通信。

最后,你必须考虑在这两个地方配置规则以避免这种情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多