Mount
從共享掛載掛載應用程序二進製文件的優點和缺點是什麼?
在應用程序節點集群中,將應用程序二進製文件放置在共享掛載上並讓每個節點都掛載它而不是在每個節點上都有二進製文件的單獨副本有哪些優點/缺點?
有什麼東西使一種方法或另一種方法特別糟糕嗎?
謝謝
當我開始從事金融行業時,我執行的系統由消耗/按摩數據的網關係統、用於做出交易決策的計算節點、用於服務應用程序/集中日誌記錄的 NFS 伺服器以及將它們綁定在一起的大量網路組成。我們還集中了 crontab 調度和應用程序監控配置,並將它們放在 NFS 掛載上。
這是基於 NFSv3 的,其好處是,嗯……
- 簡單的應用程序分發:一個安裝。一個地方進行更改。
- 與這些應用程序相關的數據的簡單管理。
缺點:
- 容易出錯:一個坐騎。一個地方搞砸了變化。
- 可擴展性:除非您還對儲存進行集群化,否則中央掛載對其可以有效服務的客戶端數量有一個上限。
- 單點故障 (SPOF):同樣,集群儲存可以緩解這種情況,但這是一個考慮因素。假設 NFS,如果您需要重新啟動伺服器會發生什麼?如果 NFS 伺服器失去或不可用,集群節點會在啟動時掛起嗎?
- 權限:您將如何管理跨集群節點的權限。本地服務帳戶?匹配 UID/GID?在我的例子中,我使用了 NIS 和後來的 LDAP。目錄服務在這裡會很有幫助。
- 性能:您依賴於這裡的網路和交換基礎設施。本地磁碟上的應用程序載入、日誌記錄等性能將比線上上更快。
- 調整 NFS 很困難,而且大多數人都做得不好 :)
如今,您可以通過配置管理系統(Puppet、Chef、Ansible等)部署和管理您的軟體。甚至更好的是,使用作業系統的原生打包方式(RPM、.deb),並通過配置管理進行部署:
- 這將刪除 SPOF。
- 本地化應用程序應該具有性能優勢。
- 簡化網路:例如,如果您擴展到多個位置怎麼辦?
- 可以提供更精細的控制:例如,將二進製文件分發到系統的子集,而不是整個集群。
- 自我記錄。
鑑於此,我可能會推薦應用程序的單獨副本,而不是使用共享掛載。