从Heroku访问远程数据库的SSH隧道?

3

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

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

(作为额外的问题,这是否是个好主意?一方面,这种方案将使我避免支付Heroku数据库的费用。另一方面,这意味着必须加密所有我的数据库流量。我想这会严重减慢我的Web dynos,并降低它们可以服务的请求数量。我节省的数据库费用会用来支付更多的dynos吗?我这样做能否获得优势?)

2个回答

4

可以的。

在Heroku上与外部数据库建立隧道是可能的

您不希望出于O.P.提到的原因(避免支付本地数据库费用)以及@sgrif提到的原因(它会非常缓慢,而且可能真正节省不了什么),从而这样做。

但是,有合法的理由希望隧道连接到外部数据库,例如如果数据驻留在需要分析的旧系统中。

与其简单地重复自己(很长),这里有一个适合我的配方链接:SSH tunneling from Heroku


0
不,即使这是一个选项,这也是一个非常糟糕的想法,因为您将为每个请求添加巨大的延迟,因为您实际上必须为每个请求打开一个新的隧道。
您最好的选择可能是使用Heroku的开发或入门级别。如果您的数据库少于10,000行,则免费的开发级别将起作用。他们每月15美元的入门级别适用于高达1,000,000行。

答案基本上是正确的,但延迟是由于网络性能而不是隧道本身造成的。如果正确创建了SSH隧道,则可以重用指定的端口;例如,在每个查询中不会发生重新认证。 - Jacob Budin
@JacobBudin 我们能在Heroku上打开SSH隧道吗?考虑到它需要打开一个端口,我不确定是否允许这样做。 - Adrien
1
答案基本上是错误的:你可以从Heroku中隧道出去。我不会因为OP想要的原因而这样做,但有时候你需要这样做,例如访问一个SSH受保护的数据库。请参见https://dev59.com/eWEi5IYBdhLWcg3wJpcl#27361295获取整个步骤。 - fearless_fool

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接