2011-12-01 71 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文件。

我認爲有一個依賴主機/端口管理的東西是個壞主意。使部署更加困難。