簡單實現web服務器負載均衡
負載均衡建立在現有網絡結構之上,提供了一種有效方式擴展服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。
本篇講述如何利用反向代理來實現web服務器負載均衡。

以上負載均衡架構圖,優點是架構較簡單,缺點是沒有根據業務權重設計負載。
以上負載均衡是通過均衡服務器的實際承載,響應請求數量,傳輸數據流量,來實現負載均衡。
各負載服務器通過svn服務器實現同步,這樣他們也必須處理同步可能帶來的問題。
數據庫作讀寫分離,合理加上內存數據庫。
一、下面以apache為例,簡單說明負載均衡的實現。
Apache加載以下三個模塊
添加以下內容:
這里你還可以通過不同的算法實現負載均衡,比方說按照請求次數,或者按照流量均衡,這里用到的指令是lbmethod
lbmethod可能的取值有:
lbmethod=byrequests 按請求數均衡(默認值)
lbmethod=bytraffic 按流量均衡
lbmethod=bybusyness 按繁忙程度均衡
Apache還有其他策略,本篇就不多描述,當然你還可以使用nginx等等
二、服務器內容同步,可以利用svn來實現。
首先在一個服務器建立一個svn庫,用于存放最新的程序,具體步驟可以參考《windows 搭建本地svn服務器》。
以后每次更新都將最新的文件發布到svn庫中。
然后在負載服務器上更新即可。
因為每個負載服務器都是獨立開來的,這里需要注意幾個問題:
1、內容同步
主要是數據庫,還好大都數據庫有讀寫鎖機制。另外一個就是上傳的文件,如果是用戶上傳可以考慮放到一個公共的資源服務器。后臺文件可以考慮svn同步更新。
2、會話同步
因為是不同服務器,一般session都以文件或者內存形式保存在本地。考慮使用memcached來共享session。
下面以php為例:
三、數據庫作讀寫分離,合理利用內存數據庫。
web服務器訪問的瓶頸的很大原因在于數據庫讀寫上,這時候可以除了做數據庫查詢優化,索引優化等,還可以考慮將數據庫讀寫分離,如果內容更新太快且保存的價值不大,或者內容長時間不更新,而且經常都要讀取等等,都可以考慮使用內存數據庫,如memcached。