Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

132.3. 廣域網負載均衡的用法

User --> Web LB1 --> Database

                 User
                  |
            LB1   V 0.0.0.0:80 
----------------------------------------
    /             |              \
web Node 1     web Node 2    web Node 3
   LB1           LB2             LB3  
    \             |              /        
----------------------------------------
                  |
                  V 0.0.0.0:1152 / 0.0.0.0:3306
----------------------------------------
     /            |              \                      
DB Node 1     DB Node 2       DB Node 3
		

這個方案非常適合全國布點的情況,經常誇公網訪問資料庫等資源。我們假設所有的伺服器都不在同一個機房,廣域網的連結是無法保證99.9%的聯通性。

當一端公網的web伺服器,連結另一端的資料庫伺服器是,一般會出現,由於網絡不穩定ping時間長連結耗時嚴重,可能出現短時間中斷,導致web不能正常工作

當然你可以通過調整程序解決,當DB1連結失敗後嘗試連結DB2..DB3..,這樣的改進仍不能滿足用戶需求,例如:用戶連結web用了1秒中,web連結數據DB1 用了30秒發現連結不上,在去連結DB2,最終用戶打開網頁至少32秒,而且下一個用戶也會重複這樣的操作去DB1連結在到DB2

你也可以考慮在增加一台負載均衡,但新的問題來了,web 到這台負載均衡的網絡就能保證嗎?

我的解決方法是,每個web server上都安裝負載均衡軟件,Web與負載均衡安裝在一台伺服器上,用戶連結到web(通過智能DNS),web請求資料庫localhost:3306負載均衡分配到資料庫節點,這樣可以解決當web伺服器連結公網上的另一台數據伺服器的時候,能保證剔除不穩定的節點,同時減少了web到另一台負載均衡設備上的開銷