前面我們建立了 Pool,VIP 并添加了 Member。今天将建立 Monitor,然後測試 LBaaS 是否能夠正常工作。
LBaaS 可以建立 monitor,用于監控 Pool Member 健康狀态。 如果某個 member 不能正常工作,monitor 會将其狀态設定為 down,進而避免将後續請求轉發給它。
下面我們為 Pool 添加一個 monitor。 在 Monitors 标簽頁中點選 “Add Monitor” 按鈕
Type 選擇 “HTTP”,含義是通過 HTTP 檢查 member 的健康狀态。
Delay 設定為 “10”,含義是 10 秒檢查一次 member 的狀态。
Timeout 設定為 “5”,含義是如果 member 在 5 秒内無法應答,則逾時。
Max Reties 設定為 “3”,含義是如果嘗試 3 次都逾時或者失敗,則将 member 狀态設定為 down。
HTTP Method 設定為 “GET”
URL 設定為 “/”
Expected HTTP Status Codes 設定為 “200”
上面三項的含義是通過 HTTP GET 請求 member “/” URL,如果傳回碼為 200,則認為 member 狀态正常。
點選 “Add”,monitor 建立成功。
下面将建立的 monitor 添加到 pool 。
在 “web servers” 的操作清單中點選 “Associate Monitor”
選擇我們剛剛建立的 monitor。
點選 “Associate”。
經過上面的設定,我們建立了包含 member “Web1” 和 “Web2” 的 Pool “web servers”,并添加了 monitor。 準備就緒,可以測試 load balancer 是否正常工作了。
首先在 Web1 和 Web2 中啟動 HTTP 服務,在 80 端口監聽
這裡我們使用 python 提供的 SimpleHTTPServer 子產品啟動了 HTTP 服務。
web server 的 index.html 顯示目前通路的是哪個 member。
在 router 的 namespace 上多次執行 curl 172.16.100.11(VIP)
測試結果顯示每次通路的都是 Web2 這個 member。
為什麼沒有通路到 Web1 呢?
還記得我們前面讨論的内容嗎:
Load Balance Method -- ROUND_ROUBIN
Session Persistence -- SOURCE_IP
在這種配置下,第一個 curl 請求 HAProxy 通過 ROUND_ROUBIN 選擇了 Web2。
而後續的請求,HAProxy 則會應用 SOURCE_IP 機制,仍然選擇 Web2。
下面我們修改一下配置。 在 “web servers” 的操作清單中點選 “Edit VIP”。
選擇 “No session persistence” 并儲存。
再進行 curl 測試。
可以看到已經在 “Web1” 和 “Web2” 之間 round robin 了。
下一節我們将分析 LBaaS 的内部實作和工作機制。
本文轉自CloudMan6 51CTO部落格,原文連結:http://blog.51cto.com/cloudman/1881787