Skip to main content
Version: 2.8.1

負載平衡

上游服務的設定可控制請求往其目標之數量,達到負載平衡的效果。

接下來將示範如何使用服務、路由以及上游服務來達到負載平衡之目的。

藍綠部署(Blue-Green Deployments)#

以藍綠部署為例,先設定一個 Blue 的環境作為第一版服務。

首先建立一個新的上游服務,名稱為 address.v1.service

上游服務1

建立好上游服務後,點選右邊的編輯鈕進入編輯頁,選擇 目標 頁籤,新增兩個目標。

上游服務2

上游服務3

建立新的服務,在建立方式選擇 By Existing Upstream 並點選剛剛建立的上游服務名稱。

上游服務4

點擊新增之服務右側編輯鈕進入編輯頁,選擇 路由 頁籤,新增路由。

上游服務5

到此步驟為止建立好環境,任何帶有標頭 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

上游服務6

建立好上游服務後,點選右邊的編輯鈕進入編輯頁,選擇 目標 頁籤,新增兩個目標。

上游服務7

上游服務8

上游服務9

現在只要更新服務主機欄位 (Host),修改為對應版本的上游服務,就可以隨時切換兩個不同版本的環境。

上游服務10

更新至版本二的服務,現在請求將有一半會被送往 http://192.168.34.17:80/address ,而另一半送往 http://192.168.34.18:80/address

tip
  1. 修改會在送出後直接作用,不需要重新啟用 GOC API Gateway,也不會影響正在處理的請求。
  2. 請求被送往目標的比例是根據設定的權重決定的。像是版本二的服務,因目標設定權重一樣,所以能接收到的請求數大致相同。

金絲雀部署(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,則請求會全數導向版本一。

上游服務11

接著慢慢調整兩個目標的權重,將 http://192.168.34.17:80/ 調整為 900, http://192.168.34.18:80/ 調整為 100,此時可觀察導向至版本二的請求是否有異常。

上游服務12

如沒有錯誤或任何異常,則可再將版本二的權重慢慢調高,直至 http://192.168.34.17:80/ 的權重為 0, http://192.168.34.18:80/ 的權重為 1000,即可將服務穩定的升級至其它版本。

tip

修改會在送出後直接作用,不需要重新啟用 GOC API Gateway,也不會影響正在處理的請求。