【问题标题】:SSH tunneling to a remote DB from Heroku?从 Heroku 到远程数据库的 SSH 隧道?
【发布时间】:2012-08-08 17:06:51
【问题描述】:

我正在考虑在 Heroku 上部署一个小型 Rails 应用程序。为了省钱,我希望我的应用程序使用外部数据库(我可以免费访问),而不是 Heroku 托管的数据库。问题是免费数据库只接受本地连接。要从 Heroku 访问它,我需要通过 SSH 隧道进行访问。

Heroku 应用程序是否可以将其数据保存在通过 SSH 访问的外部数据库中?如果有,怎么做?

(对于加分,这里有第二个问题:这是个好主意吗?一方面,这个方案可以让我不用为 Heroku 数据库付费。另一方面,这意味着必须加密我所有的数据库流量. 我想这会大大减慢我的 web dynos 的速度,并减少他们可以服务的请求数量。我在数据库上节省的钱会被用来支付更多的 dynos 吗?这样做我可能会领先吗? )

【问题讨论】:

    标签: ruby-on-rails heroku ssh ssh-tunnel


    【解决方案1】:

    是的,你可以。

    可以在 Heroku 上建立一条通往外部数据库的隧道。

    由于 O.P. 提到的原因(避免为本地数据库付费),您不想这样做,因为 @sgrif 提到的原因(它会非常缓慢并且可能不会真正节省任何东西)

    但是想要通过隧道连接到外部数据库是有正当理由的,例如,如果数据驻留在需要分析的遗留系统中。

    与其简单地重复我自己(它很长),这里是一个对我有用的食谱的链接:SSH tunneling from Heroku

    【讨论】:

      【解决方案2】:

      不,即使这是一个选项,这也是一个非常糟糕的主意,因为您会为每个请求添加大量延迟,因为出于所有意图和目的,您都必须为每个请求打开一个新隧道。

      您最好的选择可能是使用 Heroku 的开发或入门层。如果您的数据库少于 10,000 行,则免费开发层将起作用。他们 15 美元/月的入门级适用于多达 1,000,000 行。

      【讨论】:

      • 答案基本正确,但延迟是网络性能的结果,而不是隧道本身。如果创建得当,当建立SSH隧道时,可以复用指定的端口;例如,不会在每个查询上都进行重新身份验证。
      • @JacobBudin 我们甚至可以在 Heroku 上打开一个 SSH 隧道吗?鉴于它需要打开一个端口,我不确定它是否允许。
      • 答案根本上是错误的:你可以通过 Heroku 隧道。由于 OP 想要的原因,我不会这样做,但有时你需要这样做,例如访问受 SSH 保护的数据库。有关整个食谱,请参阅 stackoverflow.com/questions/21575582/ssh-tunneling-from-heroku/…
      猜你喜欢
      • 2013-02-05
      • 1970-01-01
      • 2019-07-15
      • 2018-11-06
      • 2017-04-25
      • 2018-10-29
      • 2014-10-04
      • 2021-04-05
      • 2021-09-16
      相关资源
      最近更新 更多