作者MrMarcus (請勿忘記密碼)
看板PHP
標題Re: [問題] 網站分流問題
時間Sun Mar 11 00:26:04 2007
※ 引述《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