使用端口转发进行数据库配置

时间:2011-12-01 15:20:56

标签: java configuration

是否有人使用端口转发进行数据库配置?我有很多不同的环境,每个java应用程序配置它们会变得更糟,因为我们会犯错误。所以我在考虑在每个框中使用端口转发,所以我的应用程序只配置为localhost:3306/3307 ...而且不需要更改。

有没有想过这样做?

3 个答案:

答案 0 :(得分:0)

嗯,在开发环境中,我以前使用xinetd转发这样做了。但当然,单独的属性文件是可行的方法。

答案 1 :(得分:0)

通常最好使用小配置文件,例如从框主机名到主机名特定设置(如db连接字符串)的映射。或者只是加载到应用程序中的box-local .properties文件。

我认为依赖主机/端口管理的东西是个坏主意。使部署更加困难。

答案 2 :(得分:0)

在极端情况下使用端口转发进行数据库连接才有意义。一般来说,这不是一个好主意,因为:

  • 修改操作系统防火墙/数据包转发设置通常需要系统管理员权限,客户端应用程序的用户/安装程序可能无法使用这些权限。

  • 设置端口转发规则是系统特定的,这正是人们首先通过在其中编写客户端来尽量避免的规则。 Java的。

  • 正确设置端口转发规则需要网络专业知识,这远远超出了将客户端应用程序指向正确的数据库服务器所需的范围。你不应该依赖手头有这种知识的人。

  • 它添加了一层不会立即可见的间接,除非有人查看操作系统设置。客户端日志和调试信息都指向一个实际上并不存在的数据库进程,为未来潜在的问题增加了更多的混淆。

  • 它增加了另一个可以破坏的点 - 如果操作系统更新改变了端口转发规则的处理方式会怎么样?尽管在操作系统级别存在转发规则,但如果新的防火墙应用程序决定阻止转发的数据包该怎么办?您的客户端应用程序只会报告无法连接到数据库服务器,您可能会试图找出问题所在。但

  • 通过无形地重定向其端口,它可能会干扰其他应用程序。 知道所有目标系统上配置的服务器端口吗?如果本地用户也尝试使用例如,该怎么办? SSH隧道及其邮件客户端无意中尝试与您的数据库服务器通信?

  • 它无法很好地扩展 。如果您有多个应用程序与多个服务器通信,该怎么办?

  • 我之前提到过,但是这个值得重复一遍:你真的希望你的人(或你自己)必须经历来自客户的日志和配置文件,这些客户都声称要连接到{{1 }}

由于安全限制,当我不得不通过SSH连接隧道到达无法访问的数据库服务器时,我只需要像这样使用端口转发一次。这是一个开发环境,我从来没有在制作过程中使用过这样的东西 - 至少在没有引起人们的大惊小怪的情况下迫使我跳过这样的箍。

如果您希望所有客户端应用程序都连接到同一个数据库服务器,那么这是一个配置问题。如果您希望所有应用程序使用相同的颜色主题或相同的窗口布局,请按照您的方式处理:

  • 让他们解析一个公共配置文件,使用一个通用的Java类来共享数据库设置。

  • 让他们读取相同的环境变量 - 虽然环境变量在某些系统上往往有点挑剔。就个人而言,我远离这种替代方案 - 它具有端口转发解决方案的所有缺点,除了您的客户端应用程序知道它将与哪个数据库服务器进行真正交谈。

  • 通过一个带有共享数据库相关选项的脚本启动它们。

  • 使用集中配置框架将正确的配置分发给所有客户端 - 尽管那时您需要设置配置服务器: - )

使用模糊且易碎的解决方法。

友情提示:

不要给你的生活增加更多的复杂性,它已经足够复杂了。