ubuntu 集群 - 如此接近但如此遙遠
這是設置:
- 兩台 Ubuntu 9.10 伺服器 - LAMP 環境(不是切換作業系統的真正選項)
- 一台帶 iSCSI 連接的 MD3000i
這是我想做的:
- 讓兩台伺服器在不解除安裝驅動器的情況下查看另一台伺服器寫入 MD3000i 的文件。我與 MD3000i 的連接很好(使用 open-iscsi)。MD3000i 在我需要的幾乎所有方面都很棒,除了下面列出的一個。
這是我不想做的事情(出於我不打算進入的原因 - 已經走上了這條路):
- 使用 NFS 掛載
例子:
- Server1.com和Server2.com寫入 MD3000i 上的同一驅動器。它們都掛載到的文件夾標記為 /mnt/files/。他們都正確辨識分區大小。
然後Server1.com 將 test1.1.txt 寫入 /mnt/files,Server2.com 將 test1.2.txt 寫入 /mnt/files。在這種情況下,文件是在 ssh 連接期間直接在伺服器上寫入的。Server1.com 不重新掛載就看不到 test1.2.txt。Server2.com 不重新掛載就看不到 test1.1.txt。
奇怪的是,如果我通過 PHP 從 apache 伺服器寫入文件並且文件具有唯一的名稱,那麼兩個伺服器都可以看到它!但如果名稱不是唯一的,我就會出現 I/O 錯誤(不足為奇)。
我熟悉 gfs、gfs2 和 ocfs2 但遠非勝任。我嘗試了各種方法來格式化驅動器並安裝它。好像我只是無法正確地得到食譜。
題:
你有什麼建議?我嘗試了許多不同的方法來建立我被引導相信的聖杯 - 集群 - 沒有真正的成功。我知道什麼是行不通的。真的可以從一些有用的提示中得到提升。
簡短回答:GlusterFS
長答案:我已經使用 DRDB 建立了一個系統,我認為這將是理想的解決方案,因為它有很好的文件記錄,並且可以找到在其上執行 LAMP 的大量範例。
但這不是理想的解決方案,因為您一次只能將文件系統安裝在一個機器上,並且當一台機器故障轉移到另一台機器時,您必須處理大量服務啟動等。它也只適用於兩台機器。
我今天在 virtualbox 中建構了一個由兩台虛擬 Ubuntu Lucid Lynx 機器組成的測試 glusterfs 集群,它不僅設置起來非常容易,而且你需要的一切都在 repos 中。
從我到目前為止的測試來看,這似乎是我想要的一切。
它有點像雙向(或實際上是多路)nfs。您可以擁有任意數量的節點來訪問它,並且文件系統會處理鎖等,因此請忽略“這是一個壞主意,就像讓 2 個並發 Windows 安裝訪問同一個 NTFS 驅動器……”上面的評論,因為偏離了方向。
確保你得到它的伺服器 - 客戶端方面!在考慮文件鎖定之前,我錯過了 FUSE 安裝的要點。
我還沒有在沉重的 MySQL 負載下測試它,但到目前為止我印象深刻。我的網路搜尋幾乎沒有發現 GlusterFS 可以勝任這項工作,所以我也對 Tom O’Conner 的評論感到放心。
如果我明天找到更多相關資訊,我會回复。