負載平衡
上游服務的設定可控制請求往其目標之數量,達到負載平衡的效果。接下來將示範如何使用服務、路由以及上游服務來達到負載平衡之目的。
#
藍綠部署(Blue-Green Deployments)以藍綠部署為例,先設定一個 Blue
的環境作為第一版服務。
首先建立一個新的上游服務,名稱為 address.v1.service
。
建立好上游服務後,點選右邊的編輯鈕進入編輯頁,選擇 目標
頁籤,新增兩個目標。
建立新的服務,在建立方式選擇 By Existing Upstream
並點選剛剛建立的上游服務名稱。
點擊新增之服務右側編輯鈕進入編輯頁,選擇 路由
頁籤,新增路由。
到此步驟為止建立好環境,任何帶有標頭 HOST: address.mydomain.com
之請求將被送至剛剛建立好的目標。2/3的請求會通往 http://192.168.34.15:80/address
,1/3的請求會通往 http://192.168.34.16:80/address
。
接下來開始設定 Green
的環境作為第二版服務。
首先建立一個新的上游服務,名稱為 address.v2.service
。
建立好上游服務後,點選右邊的編輯鈕進入編輯頁,選擇 目標
頁籤,新增兩個目標。
現在只要更新服務就可以隨時切換兩個不同版本的環境。
更新至版本二的服務,現在請求將有一半會被送往 http://192.168.34.17:80/address
,而另一半送往 http://192.168.34.18:80/address
。
tip
- 修改會在送出後直接作用,不需要重新啟用API Manager,也不會影響正在處理的請求。
- 請求被送往目標的比例是根據設定的權重決定的。像是版本二的服務,因目標設定權重一樣,所以能接收到的請求數大致相同。
#
金絲雀部署(Canary Releases)金絲雀部署可藉由調整目標的權重來達到一樣的目的。
假設 http://192.168.34.17:80/
為版本一, http://192.168.34.18:80/
為版本二。
一開始設定 http://192.168.34.17:80/
的權重為1000, http://192.168.34.18:80/
為0,則請求會全數導向版本一。
接著慢慢調整兩個目標的權重,將 http://192.168.34.17:80/
調整為900, http://192.168.34.18:80/
調整為100,此時可觀察導向至版本二的請求是否有異常。
如沒有錯誤或任何異常,則可再將版本二的權重慢慢調高,直至 http://192.168.34.17:80/
的權重為0, http://192.168.34.18:80/
的權重為1000,即可將服務穩定的升級至其它版本。
tip
修改會在送出後直接作用,不需要重新啟用API Manager,也不會影響正在處理的請求。