![使用 SSH 隧道部署应用程序](https://linux22.com/image/720273/%E4%BD%BF%E7%94%A8%20SSH%20%E9%9A%A7%E9%81%93%E9%83%A8%E7%BD%B2%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.png)
我正在开发 spring-boot 应用程序,其中我的后端使用 ssh 隧道连接到数据库(此部分是必需的,不能更改)。我有三种部署应用程序的方法:
- 创造罐(和嵌入tomcat 和远程控制隧道内部应用)
- 创造战争并部署独立tomcat(带有远程控制隧道外部应用程序作为 Linux 服务)
- 创造战争并部署独立tomcat(带有远程控制隧道里面应用程序),此选项连接问题我无法解决https://stackoverflow.com/questions/49471387/spring-boot-tomcat-ssh-connection-link-failure
哪一个是最佳选择?为什么?
答案1
您应该选择选项 2:
创建 war 并在独立 tomcat 上部署(使用 ssh 隧道外部应用程序作为 linux 服务)
您希望 SSH 隧道由底层操作系统管理,而不是由您的应用管理。这样,系统管理员就可以委派它(最好使用配置管理工具)。
您开发的应用程序不应该关心管理系统任务,例如将隧道持久保存到后端。
这与“12 要素应用”处理‘支持服务’的方法:
十二要素应用程序的代码不区分本地服务和第三方服务。对于应用程序而言,两者都是附加资源,可通过 URL 或配置中存储的其他定位器/凭据进行访问。十二要素应用程序的部署应该能够将本地 MySQL 数据库替换为第三方管理的数据库(例如 Amazon RDS),而无需对应用程序的代码进行任何更改。
因此,如果您的代码库有任何与创建 SSH 隧道或持久系统连接相关的内容,那么您做错了;)