将位于防火墙后面的mongodbstream数据服务器公开到互联网

我有一个Windows平台上的数据stream,我以每秒钟约800个数据点的相当高的速度捕获到Mongodb。 我希望能够从公司外部获得这些数据,但是公司不希望将27017(mongod)向外界推出。 我已经设置授权和编译mongod的SSL。

如何将Mongo公开到外部服务器? 我的服务器坐在“免费”互联网的另一个位置,我希望每隔10秒钟从服务器获取最新的1000个数据点。 如果我无法前进,我将如何做到这一点?

我可以让mongo服务器把数据“推”到外部服务器(它有一个固定的IP)吗? FTP不是一个解决scheme,因为这个(我认为)数据stream太快了。

我可以以某种方式使用http或其他协议stream出来吗?

理想情况下,我会喜欢“原生”访问mongo服务器,因为这将允许我使用可滚动的游标,所以任何接近此function的解决scheme都是好的。 但是,如果这不可行或不实际,从受防火墙保护的服务器到外部服务器的stream式推送解决scheme也适用于我。

如果你的私人服务器一直处于开启状态,并且你的公司对你使用VPN(这是一个很大的做法,检查IT)是否合适,我会使用openVPN和可能的MongoDB副本集。

OpenVPN的安全/努力比例相当不错 – 它可以在大多数Linux发行版上作为标准软件包运行,在configuration文件上运行,有许多教程,使用静态密钥(简单安装)或TLS(每个客户端/服务器一个密钥)。
OpenVPN的HOWTO
你的“外部”服务器将是VPN服务器,MongoDB“master”将在启动时自动连接到它。

连接好服务器后,需要select是通过VPN查询“主”,还是使用“外部”的辅助MongoDB服务器进行同步,然后查询。
MongoDB的副本集允许一台服务器与主服务器保持“同步”。 它通常用于容错,但您也可以将其用于您的目的。
MongoDB地理冗余副本集 。
确保你的“外部”服务器是非投票的,优先级为0(这意味着它不会成为集群计算的一部分)

如果您向IT人员倾诉整个解决scheme,并且在开始依赖生产相关任务之前对其进行testing

一种可能性是build立一个用于Mongo数据库连接的SSH隧道 。 SSH隧道将encryptionMongostream量,SSH隧道是众所周知的技术。

看到:

  • 如何通过SSH隧道连接到MongoDB服务器 (服务器故障)
  • 如何安全地configuration生产MongoDB服务器 (DigitalOcean)

对隧道已经有很好的build议(我赞成OpenVPN),但是在这里我会提出一个不同的方法。

为了获得一个特定的数据集,而不是将整个MongoDB数据暴露给远程服务器,最好是构build一个更紧密集中的Web API,它可以在任一位置运行。

  1. 您可以在您的mongodb服务器机器上运行脚本或守护进程,或者在本地访问mongodb(或在防火墙内)运行脚本或守护进程,然后打包数据并将其推送到远程Web服务器上的API。 可能REST和JSON是你在Web服务器上deviseAPI时要考虑的事情。
  2. 或者,你可以有一个networking服务器靠近MongoDB服务器,它可以从远程Web服务器访问。 您可以在MongoDB服务器本地的Web服务器上实现一个合适的API,并通过从远程Web服务器调用它来获取数据。

哪种方法更好地工作主要取决于适合在公司networking中运行的东西的可用性以及所涉及的networking策略。 您可以非常紧密地lockingAPI的访问权限,以满足networkingpipe理员的关注。 例如,通过IPlocking访问权限,需要适当的validation,并且可能将其locking到特定的SSL密钥。

如果可能的话,最有效的方法可能是运行一个守护进程,靠近使用您提到的可放大光标的mongodb服务器,并将数据发送到远程Web服务器上的API。