1

一句话: 如何将具有私有 IP 和防火墙后的多个本地客户端安装连接到公共云托管服务器,并能够在服务器的任何本地客户端设置中调用 HTTP 端点和 SSH。

详细信息:我们有多租户应用程序,其中我们有一个实时公共(或多个集群)Tomcat 服务器,它部署在公共云(例如:AWS)中。我们还有客户端 Tomcat 服务器,它将部署在客户端,显然本地托管客户端将具有私有 IP 并将被防火墙(允许在特定端口上与我们的实时服务器进行通信)。

我们必须支持本地客户端安装,以在客户端离线期间支持应用程序的某些功能。但最终用户将定期从实时服务器同步到客户端服务器。

我需要一种从公共服务器访问私有托管客户端计算机(SSH 和 Tomcat)的有效方法。

设置:

  • 语言:Java 8
  • 应用服务器:Tomcat 8
  • 操作系统:Ubuntu Linux 14.04(公共云托管和客户端服务器)

据我所知,以下是实现这一目标的方法及其优缺点:

  1. SSH反向隧道
    • 优点:不需要任何额外的编程
    • 缺点:随着客户端数量的增加,需要在公共服务器上打开这么多端口,这可能会引发许多安全问题。
  2. 本地隧道服务,如 ngrock或许多其他服务
    • 优点:不需要手动编码的程序,并且可能他们会处理许多边缘情况,例如重新连接并保持连接处于活动状态,即使它大部分时间都是空闲的。
    • 缺点:其中大多数是商业解决方案,定价模型是按节点计算的。我们将至少安装 500-600 个客户端。
  3. Websockets - 服务器将发送推送,客户端将回调服务器。
    • 优点:无需在服务器上打开多个端口
    • 缺点:只能使用 HTTP,不能使用 SSH
  4. 手工编码的套接字编程,每个客户端通过 SSH 隧道连接到服务器上的单独端口
    • 优点:我们将拥有完全的控制权
    • 缺点:我不确定我们可能需要处理多少个边缘情况,其中我们现在可能知道很多。

请提出一种更好的方法来满足我们的要求,同时牢记资源效率和安全性。

4

0 回答 0