精華區beta PHP 關於我們 聯絡資訊
※ 引述《timyau (我討厭Sony)》之銘言: : 我架了一個網站, : 使用了一台轉址主機、 : 兩台 Web Server 進行分流 : 另外還有一台主機當資料庫使用 : 每次使用者輸入轉址主機的位置 : 主機就會自動將使用者於內部導向兩台Web Server的其中一台 : 所以每次網站只要更新,就得同時更新兩台Web Server的網頁 : 這樣一來就有問題了 : 一但只更新其中一台Web Server, : 使用者連到網站來就會有可能看到不一樣的內容 : 因為有時候可能連到有更新的那一台,有時候會連到沒有更新的那一台 : 有嚐試過把檔案都放在第三台資料庫的 SERVER : 而PHP取得資料庫Server的內部IP(例如192.168.1.3) : 來讀取使用到的相同資源檔案 : 但是從外面要讀取圖片的時候卻發生網址上面是 http://192.168..../ : 的情況 : 這樣當然是有問題的啊 Orz : 想請問這樣的架構是否有問題? : 還是有什麼解決方法嗎?謝謝 這問題我以前有遇到過,狀況很類似。不但每次更新要FTP兩次 到兩台伺服器去,而且在程式裡面也有這個問題,變成凡是使用者 上傳檔案的地方,程式接收到檔案後除了把檔案存在自己這台的 硬碟裡面外,還得把該檔案複製到另一台伺服器硬碟的相對應位置去, 否則被帶到另一台機器去的使用者就會找不到那個檔案。 (上面指的使用者不是維護網站的人,是來瀏覽網站的使用者) 我把這個問題提出來給客戶,因為我覺得讓兩台伺服器的檔案內容 保持同步這種工作不應該在網站程式這端來執行,應該在更底層 的地方由伺服器本身自己處理掉,網站程式這層級不需要去知道 現在到底有幾台伺服器在分散負荷。而且還要考慮到日後擴充的問題, 現在是兩台,以後變成三台,程式要改成把收到的上傳檔案複製到 另外兩台去,變成四台,五台呢? 我那時提出的建議是,增加一套獨立的儲存設備,兩台伺服器上面 設定好把某個目錄,例如/webupload,共同mount到該儲存設備去, 程式裡面就把使用者透過程式上傳的檔案儲存到/webupload去。 然後在http server裡面指定某個目錄名稱對應到/webupload。例如 在httpd.conf裡面: Alias /upload /webupload 前面的/upload是web server上使用的目錄名稱,後面的/webupload 是檔案系統上的目錄名。換句話說,使用者在瀏覽www1.mycompany.com 的時候會看到 <img src="/upload/album/user1/myimage.jpg"> myimage.jpg實際上是 /webupload/album/user1/myimage.jpg 這個檔案,而/webupload這個目錄並不在www1本機的硬碟裡面, 是在前面提到的共用儲存設備裡面。對於另一台www2來說也是 一模一樣的狀況。 也就是說www1和www2上面都做了兩件事 1. 把/webupload這個目錄掛載到共用儲存設備上的同一個目錄去。 2. 在httpd.conf裡面加上Alias指向設定。 以上這些步驟(其實只有兩個動作)可以解決使用者透過程式上傳 的檔案的同步問題。至於網站維護人員透過ftp更新的檔案要上傳 兩邊的問題,其實也可以透過類似的方式解決,在www1, www2上面 建立一個目錄掛載到共用儲存設備上的某個目錄去,然後在兩台 的httpd.conf裡面把document_root指向到該目錄去即可。 但是那時候客戶並沒有採行我的建議:( 他們的理由是 1. www1,www2的web server都共用一個儲存設備,萬一該共用 儲存設備掛了怎辦?這樣一來雖然有兩台web server,但是 整個網站都會掛點。 2. 我們沒有預算添購這個儲存設備。 第一個問題我覺得其實不是那麼嚴重,因為該儲存設備不會只有 一顆硬碟,必定是至少兩顆做Raid 1或者三顆做Raid 5甚至以上。 透過Raid可以不用太擔心這個問題。 第二個問題,無解。所以最後還是一樣,FTP兩邊丟,程式裡面兩邊存。 ╮(╯_╰)╭ 回到原po的狀況,其實你只要把你那台資料庫server當成前面 提到的共用儲存設備就可以了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.153.19
GERRYccc:請問轉址服務器怎麼設定才會自動分流呢?.... 03/11 00:49
ckmarkhsu:loading balance...有硬體的可以買:p 03/11 02:09
appleboy46:沒有硬體 可以用 round robin dns 技術,不過不準就是 03/11 02:45
timyau:嗯。..很仔細的說明。謝謝嚕 03/11 08:30