2011-12-01 89 views
1

有没有人使用端口转发进行数据库配置?我有很多不同的环境,并且为每个Java应用程序配置它们越来越糟,因为我们犯了错误。所以我正考虑在每个盒子中使用端口转发,因此我的应用只能配置到localhost:3306/3307 ...并且不需要更改。使用端口转发进行数据库配置

有没有想过要这样做?

+0

这似乎不是一个很好的解决方案,你应该使用属性文件或命名这种事情。 – Viruzzo

+0

似乎更像是一个针对ServerFault的问题... –

回答

0

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

  • 修改OS的防火墙/包转发率设置通常需要系统管理员权限,可能无法提供给客户端应用程序的用户/安装。

  • 设置端口转发规则是系统专用的,这正是人们尽量避免在第一时间通过例如写他们的客户Java的。

  • 设置端口转发规则正确,需要网络专业知识,这远远偏离了什么,通常需要来点客户端应用程序到正确的数据库服务器。你不应该依赖手边有这种知识的人。

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

  • 它增加了又一点东西可以打破 - 如果什么操作系统的更新变化的端口转发规则的处理方式?尽管OS级别存在转发规则,但是如果新的防火墙应用程序决定阻止转发的数据包,该怎么办?您的客户端应用程序只会报告无法连接到数据库服务器,并且您会摸不着头来试图找出错误。

  • 它可以与其他应用程序潜在地干扰,由无形重定向它们的端口。是否知道所有目标系统上配置的服务器端口?如果本地用户也尝试使用例如SSH隧道和他们的邮件客户端无意中尝试与您的数据库服务器交谈?

  • 它不能很好地扩展在所有。如果你有多个应用程序与多台服务器通话会怎么样

  • 我之前提到它,但是这一个值得重复:难道你真的想要你的人(或自己)到必须要经过来自客户端的日志和配置文件都自称连接到localhost:XXXX

我只过使用端口转发来一次,当我不得不在隧道SSH连接去,这是其它方法无法,由于安全限制DB服务器。这是一个开发环境,我从来没有在生产中使用过这样的东西 - 至少在这种情况下不会引起人们的大惊小怪,从而迫使我像这样跳过这些环节。

如果您希望所有客户端应用程序连接到同一个数据库服务器,那么这是一个配置问题。把它当作你,如果你想所有的应用程序使用相同的颜色主题或同一窗口布局:

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

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

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

  • 使用集中配置框架,以适当的配置分发到所有的客户端 - 虽然那么你就需要设置配置服务器:-)

使用模糊和脆弱的解决方法。

一个友情提示:

不要给你的生活增添更多的复杂性,它已经够复杂了,因为它是。

0

那么,在开发环境中,我以前是用xinetd转发的。但是,当然,单独的属性文件是要走的路。

0

通常最好是有小的配置文件,如从盒子主机到主机名的特定设置,如数据库连接字符串的地图。或者只是加载到应用程序中的box-local .properties文件。

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