[筆記] FreeBSD 一張網卡多重 ip 實現 Round Robin DNS Load Balancing

來紀錄一下好了,其實這兩年前,我自己就試過了,當時在弄 web 系統 Load Balancing,因為找不到更好的方法,所以使用 Round Robin DNS Load Balancing 技術來達到這功能,可是當然這不是很準確的做到 load balance,只是能解決暫時性的問題,真正要做到 Load Balancing 可能要靠硬體的技術了。 我自己是在 FreeBSD 系統上面實做的,當然弄 Load Balancing 一定要在網卡上面綁定多重ip,Linux 作法跟 FreeBSD 不大相同
#
# Linux 作法
#
ifconfig eth0:0 inet xxx.xxx.xxx.xx(1~9) netmask 255.255.255.0 broadcast xxx.xxx.xxx.255
#
# FreeBSD 作法
#
# /etc/rc.conf - add a new IP address to the NIC
# 在 rc.conf 加入底下 entry
ifconfig_rl0_alias0="192.168.0.57 netmask 0xffffffff" 
#
# 指令
#
ifconfig rl0 alias 192.168.0.57 netmask 0xffffffff
 
Continue reading “[筆記] FreeBSD 一張網卡多重 ip 實現 Round Robin DNS Load Balancing”

[www] 網站分流問題

昨天在上台大 ptt 的bbs,逛到php版,發現裏面有人提問到,如何做到分流的問題,其實這個問題很多方式可以解決,以下我擷取一篇 ptt 上面的回文
作者: 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 的時候會看到 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當成前面 提到的共用儲存設備就可以了。
Continue reading “[www] 網站分流問題”