前面咱們建立了 Pool,VIP 並添加了 Member。今天將建立 Monitor,而後測試 LBaaS 是否可以正常工做。html
LBaaS 能夠建立 monitor,用於監控 Pool Member 健康狀態。 若是某個 member 不能正常工做,monitor 會將其狀態設置爲 down,從而避免將後續請求轉發給它。python
下面咱們爲 Pool 添加一個 monitor。 在 Monitors 標籤頁中點擊 「Add Monitor」 按鈕web
Type 選擇 「HTTP」,含義是經過 HTTP 檢查 member 的健康狀態。
Delay 設置爲 「10」,含義是 10 秒檢查一次 member 的狀態。
Timeout 設置爲 「5」,含義是若是 member 在 5 秒內沒法應答,則超時。
Max Reties 設置爲 「3」,含義是若是嘗試 3 次都超時或者失敗,則將 member 狀態設置爲 down。session
HTTP Method 設置爲 「GET」
URL 設置爲 「/」
Expected HTTP Status Codes 設置爲 「200」curl
上面三項的含義是經過 HTTP GET 請求 member 「/」 URL,若是返回碼爲 200,則認爲 member 狀態正常。測試
點擊 「Add」,monitor 建立成功。url
下面將新建的 monitor 添加到 pool 。
在 「web servers」 的操做列表中點擊 「Associate Monitor」spa
選擇咱們剛剛建立的 monitor。router
點擊 「Associate」。server
通過上面的設置,咱們建立了包含 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 的內部實現和工做機制。