在多租户设置中从公共服务器访问客户端计算机

时间:2015-08-30 08:28:27

标签: java linux sockets localtunnel

在一行中: 如何连接具有私有IP&的多个内部部署客户端安装。防火墙后面的公共云托管服务器,并能够调用HTTP端点&在服务器设置的任何内部部署客户端中使用SSH。

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

我们将支持内部部署客户端安装,以在客户端脱机期间支持应用程序的某些功能。但最终用户将定期从实时服务器同步到客户端服务器。

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

设置:

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

据我所知,以下是方式和方法。他们的优点和有利于实现这一目标:

  1. SSH反向隧道
    • 优点:无需任何额外的编程
    • 缺点:随着客户端数量的增加,需要在公共服务器上打开那么多端口,这可能会引发许多安全问题。
  2. 本地隧道服务,例如ngrock or many other services
    • 优点:不需要手动编码程序,可能他们会处理许多边缘情况,例如重新连接并保持连接活动,即使它在大多数时间处于空闲状态。
    • 缺点:大多数是商业解决方案,定价模型是每个节点。我们将至少安装500-600个客户端。
  3. Websockets - 服务器将发送推送,客户端将回调服务器。
    • 优点:无需在服务器上打开多个端口
    • 缺点:只能使用HTTP,不可能使用SSH
  4. 手动编码套接字编程,其中每个客户端通过SSH隧道连接到服务器上的单独端口
    • 优点:我们将完全控制
    • 缺点:我不确定我们可能需要处理多少边缘情况,其中我们现在可能知道很多。
  5. 请建议更好的方法来满足我们的要求,牢记资源效率和安全性。

0 个答案:

没有答案