在共用及專用 VPC 環境中調整工作負載

本指導教學可能會產生成本。 使用 成本估算器 根據您的預計使用情況產生成本估算。

本指導教學將逐步引導您在共用 (多租戶) 環境及專用 (單一租戶) 環境中設定隔離工作負載。 佈建 IBM Cloud® Virtual Private Cloud (VPC),其中包含跨越多個可用性區域 (AZ) 及虛擬伺服器實例 (VSI) 的子網路,可根據您的需求進行調整,以確保應用程式的高可用性。 此外,請配置負載平衡器,以在一個地區內的區域之間提供高可用性。 為 VPC 配置「虛擬專用端點 (VPE)」,以提供 IBM Cloud上服務的專用路徑。

透過佈建專用主機、將加密資料磁區連接至 VSI、擴充連接的資料磁區,以及在事實發生之後重新調整 VSI 大小,來隔離工作負載。

您將使用 IBM Cloud Schematics(提供 Terraform-as-a-Service 功能) 來佈建所有這些服務和 VPC 資源。 Terraform 範本定義要建立、更新或刪除的 IBM Cloud 資源。

目標

  • 瞭解如何使用實例自動調整來設定多區域 VPC。
  • 瞭解公用和專用負載平衡的概念。
  • 瞭解如何動態或定期調整實例。
  • 瞭解專用主機的用法。

架構
教學的架構圖

  1. 部署在 VSI 上的前端應用程式會透過專用負載平衡器與後端應用程式進行通訊。
  2. 後端應用程式透過虛擬專用端點 (VPE) 與雲端服務安全通訊。
  3. 隨著應用程式上的負載增加,會啟用 VPC 的調整大小,並根據 CPU、RAM 等之類的度量,或透過排定的調整大小來動態新增或移除 VSI。
  4. 當範圍擴大時,專用主機會隔離資料並對資料執行大量計算。 根據您的需求更新設定檔,以調整專用主機上的實例大小。 此外,請擴充區塊儲存磁區容量。
  5. 所有實例都使用虛擬專用端點 (VPE) 透過專用骨幹與 IBM Cloud 服務進行通訊。 如需詳細資料,請參閱 關於虛擬專用端點閘道 主題。

開始之前

指導教學需要:

啟用記載和監視

  1. 將IBM Cloud Logs實例配置為IBM Cloud Logs Routing的目標。 請 參閱IBM® Cloud Logs Routing入門
  2. 配置Monitoring實例來收集平台指標。 請參閱 啟用平台指標

佈建必要的雲端服務

在本節中,您將使用 IBM Cloud Schematics建立應用程式所需的下列雲端服務: IBM Cloud Databases for PostgreSQL 和 IBM Cloud Object Storage。

  1. 導覽至 Schematics 工作區,按一下 建立工作區
    1. 在下面指定模板部分,提供 https://github.com/IBM-Cloud/vpc-scaling-dedicated-host 在下面GitHub或者GitLab儲存庫 URL。
    2. 選取 terraform_v1.5 作為 Terraform 版本,然後按 下一步
  2. 工作區詳細資料下,
    1. 提供工作區名稱:vpc-scaling-workspace
    2. 選擇 Resource GroupLocation
    3. 按一下 “下一步”
  3. 驗證詳細信息,然後按一下 「建立」
  4. 變數下,按一下「> 編輯」列中的動作功能表,將 step1_create_services 設為 true,取消勾選 使用預設值,從 Override Value 下拉清單中選擇 true,然後按一下 儲存
  5. 設定您要置換的任何其他變數,最典型的變數是 regionresource_group_name
  6. 捲動到頁面頂部並點擊 “生成計劃”。 這與 terraform plan 指令相同。
  7. 按一下 顯示更多,以檢查要佈建的資源。
  8. 使用瀏覽途徑功能表導覽至工作區頁面,然後按一下 套用計劃。 請檢查日誌,以查看所建立服務的狀態。

導覽至 資源清單。 在這裡,您可以依用來建立資源 (亦即 vpc-scaling) 的 basename 來過濾,您會看到在您指定的資源群組中佈建本指導教學所需的雲端服務。 與這些服務一起儲存的所有資料都使用 IBM Key Protect for IBM Cloud中產生並儲存的金鑰進行加密。

設定多區域虛擬私有雲

在此章節中,您將:

  • 配置一個具有跨越兩個區域的子網路的IBM Cloud® Virtual Private Cloud (VPC)。 為了確保前端應用程式及後端應用程式的高可用性,您將跨這些區域建立多個 VSI。
  • 為前端系統配置公用負載平衡器,並為後端應用程式配置專用負載平衡器,以在區域之間提供高可用性。
  • 建立實例範本,用來在實例群組中佈建實例。

一開始,您可能無法部署所有基礎架構資源來擴充它,即使您以該方式設計它也一樣。 您只能從一個或幾個實例開始,如下所示。

部署一個 VSI
部署一個 VSI

隨著負載增加,您可能需要更多實例來處理資料流量。 您可以為前端應用程式配置公用負載平衡器,並為後端應用程式配置專用負載平衡器,以在實例之間平均分配送入的要求。 使用負載平衡器,您可以為與實例相關聯的儲存區成員配置特定的性能檢查。

部署多個 VSI
部署多個 VSI

需要有實例範本,您才能建立實例群組以進行自動調整。 實例模板定義為您的實例群組建立的虛擬伺服器實例的詳細資訊。 例如,指定映像檔範本的設定檔 (vCPU 及記憶體)、映像檔、已連接磁區及網路介面。 此外,還指定 user data 以分別自動執行前端及後端應用程式所需的 起始設定 Script。 為實例群組建立的所有 VSI 都使用實例群組中定義的實例範本。 該 Script 會佈建一個實例範本及一個實例群組 (一個用於前端,一個用於後端),尚未定義任何自動調整原則。 此範例不需要資料磁區,因此它們在 modules/create_vpc/autoscale/main.tf ibm_is_instance_group 資源中已註銷。

VPC 使用 cloud-init 技術來配置虛擬伺服器實例。 VPC 新虛擬伺服器上的 user data 欄位可讓使用者使用 cloud-init 來放置自訂配置選項。

使用實例群組
使用實例群組

佈建資源

如果您稍後想要直接存取 VSI,可以選擇性地 建立 SSH 金鑰,並將 ssh_keyname 設為 VPC SSH 金鑰的名稱。

  1. 移至 Schematics 工作區的 設定 標籤,按一下 step2_create_vpc 的動作功能表,取消勾選 使用預設值,將置換值變更為 true儲存 設定。

  2. 按一下 套用方案 以佈建 VPC 資源。

    佈建 VPC 資源涉及多個 Terraform 模組。 若要進一步瞭解,請檢查 main.tf 檔案。

  3. 按一下 顯示更多,以追蹤狀態日誌。 套用成功之後,您應該會看到已佈建下列資源:

    • a VPC

    • 兩個子網路 (每個區域各一個)

    • 公用負載平衡器,具有將資料流量驅動至前端應用程式的 安全群組

    • 專用負載平衡器,具有從前端到後端驅動要求的安全群組

    • 實例範本及實例群組,用於佈建及調整實例

    • 一開始,兩個 VSI (一個前端實例及一個後端實例) 已連接各自的安全群組

      前端實例會執行 Nginx 伺服器,以提供 PHP Web 應用程式來與後端交談,以儲存及擷取資料。 後端實例會使用 IBM Cloud Databases for PostgreSQL 及 IBM Cloud Object Storage的 GraphQL API 封套來執行 Node.js 應用程式。

  4. 複製 日誌輸出中的公用負載平衡器主機名稱,並在瀏覽器中以字首 http:// 貼上主機名稱,以查看前端應用程式。 如下圖所示,輸入餘額 e.g.,10,然後按一下 提交,以查看負責處理要求的 VSI 詳細資料。

    檢視應用程式
    檢視應用程式

    若要檢查佈建的 VPC 資源,您可以搭配使用 VPC 使用者介面Cloud Shellibmcloud is 指令。

在下一節中,您將選擇調整方法 (靜態或動態),並建立調整原則。

增加實例的負載以檢查調整大小

在此區段中,您將開始調整實例的大小,並起始將調整方法設為 static。 然後,您可以設定實例管理程式及實例群組管理程式原則,以使用 動態 調整來調整實例。 根據您定義的目標使用率度量值,實例群組可以動態新增或移除實例,以達到您指定的實例可用性。

手動調整大小

  1. 若要檢查 靜態 調整方法,請導覽至 Schematics 工作區的 設定 標籤,以查看 step3_is_dynamic 變數是否設為 false
  2. step3_instance_count 變數更新為 2,並 儲存 設定。
  3. 套用方案以查看額外佈建的兩個實例 (一個前端 VSI 及一個後端 VSI)。
  4. 在前端 實例群組成員資格 標籤下,您現在應該會看到 2 實例。
  5. 導覽至顯示前端應用程式的瀏覽器,然後多次按一下 重新整理 按鈕或 提交 新的平衡,以查看負責處理要求的前端 VSI 及後端 VSI 的詳細資料。 您應該會看到四個 VSI 中的兩個負責處理您的要求。
  6. 在移至下一步之前,請將 step3_instance_count 變數從 2 更新為 1,並 儲存 設定。

您可以稍後在指導教學中檢查日誌並監視負載平衡器。

自動調整

  1. 如果要切換至 動態 調整方法,請將 step3_is_dynamic 變數設為 true儲存 設定,並 套用 計劃。 此設定會將實例群組管理程式及實例群組管理程式原則新增至現有實例群組,從而將實例群組調整方法從 static 切換至 dynamic

    調整實例
    調整實例

  2. 若要檢查自動調整功能,您可以針對應用程式使用負載產生器。 下列 Shell Script 會模擬 90000 個要求的基本負載,且最多平行 300 個要求。

    1. 開啟本端終端機。

    2. 為上述步驟中的公共負載平衡器 URL 建立一個 shell 變數 /v1/controller/balance.php 附加。

      export APPURL=http://<load-balancer>/v1/controller/balance.php
      
    3. 執行下列 Script 以產生部分負載。 您可以重複它來建立更多資料流量。 [1-1000] 要求每個curl 呼叫進行那麼多的GET。 --retry 將捕獲 seq 命令中的每個數字。

      seq 1 1000 | xargs -n1 -P100  curl -s $APPURL/"[1-1000]" -o /dev/null --retry
      
  3. 實例群組成員資格 標籤下,您應該會看到正在佈建新的實例。

    您應該會看到最多 5 個採用負載的實例,因為成員資格計數上限設為 5。 您可以在實例群組的 Overview 標籤下檢查實例群組大小下限及上限。

  4. 導覽至顯示前端應用程式及 多次提交 平衡的瀏覽器,以查看負責處理要求的前端 VSI 及後端 VSI 的詳細資料。

    等待實例調整,因為聚集期間設為 90 seconds,而緩和期間設為 120 seconds

  5. 等待實例調整至 1,然後再移至下一步。

排定的動作 (選用)

在此區段中,您將使用針對 VPC 排定的調整大小,以根據每日、間歇性或季節性需求來排定自動新增或移除實例群組容量的動作。 您可以建立多個排程動作,以調整每月、每週、每日、每小時甚至每設定分鐘數的容量。 本節是選用的,完成本指導教學的其餘部分並不需要。

  1. 若要建立一次性排程動作,請將 step3_is_scheduled 變數設為 true儲存 設定並 套用 計劃。
  2. 在實例群組的 排程動作 標籤下,檢查排程動作的狀態。 Terraform 範本會從您套用計劃的時間開始排定 5 分鐘的動作。 當動作的狀態變更為 completed 時,實例群組大小將設為 2 下限及 5 實例上限。 您應該會在實例群組的 成員資格 標籤下看到 2 實例。
  3. 按幾次 產生負載 以產生更多資料流量,以查看實例調整至 5 上限。

監視 Load Balancer for VPC 度量值

負載平衡器會計算度量值,並將那些度量值傳送至監視實例,以反映不同類型的使用及資料流量。 您可以從 IBM Cloud Monitoring 儀表板視覺化並分析度量值。

  1. 您可以透過下列方式從 VPC 的負載平衡器 頁面監視負載平衡器:
    1. 按一下負載平衡器的名稱
    2. 在負載平衡器的 Monitoring preview 磚下,按一下 啟動監視
  2. 或者,您也可以透過導覽至 觀察 頁面並按一下左窗格上的 監視 來監視負載平衡器。
    1. 點選實例
    2. 按一下標示為 Platform metrics 之實例旁的 開啟儀表板
    3. 按一下左側資訊看板上的 儀表板,以開啟 IBM Load Balancer for VPC Monitoring Metrics 儀表板。
    4. 在儀表板範本下,展開 IBM > Load Balancer for VPC Monitoring Metrics。 預設儀表板不可編輯
  3. 請記得針對您的應用程式產生負載。

檢查日誌

VPC 服務會在它們可用的相同地區中產生平台日誌。 平台日誌是由支援日誌記錄的服務和IBM Cloud中的平台所公開的日誌。 有關更多信息,請參閱配置 IBM Cloud平台日誌

  1. 導覽至 「可觀察性」 頁面,然後按一下左側窗格中的 「日誌記錄」>「實例」
  2. 按一下窗格頂部的雲端日誌
  3. 點擊之前配置的實例旁邊的開啟儀表板以捕獲日誌。
  4. 點選左側工具選擇器上的瀏覽日誌 > 日誌
  5. 將負載平衡器 CRN 貼上到搜尋欄中以查看日誌。

如需檢查其他 VPC 資源的日誌,請參閱 VPC 記載

設定專用主機並佈建具有已加密資料磁區的 VSI

佈建專用主機會產生成本。 使用 成本估算器 根據您的預計使用情況產生成本估算。

在此區段中,您將在群組中建立專用主機,並使用加密資料磁區佈建實例。

您建立專用主機的原因是要劃分出單一承租戶計算節點,而不需要組織外部的使用者。 在該專用空間內,您可以根據需求建立虛擬伺服器實例。 此外,您可以建立專用主機群組,其中包含用於特定目的的專用主機。 因為專用主機是單一承租戶空間,所以只有帳戶內具有必要許可權的使用者才能在主機上建立實例。

  1. 導覽至 Schematics 工作區的 設定 標籤,將 step4_create_dedicated 變數更新為 true儲存 設定。

  2. 按一下 套用計劃,以佈建下列資源:

    • 專用主機群組
    • 專用主機
    • 具有已加密資料磁區 (使用 IBM Key Protect for IBM Cloud加密) 且已連接安全群組的 VSI。

    新增專用主機
    新增專用主機

  3. 從日誌輸出中 複製 實例 IP 位址並啟動 Cloud Shell,以透過將位置保留元 <IP_ADDRESS> 取代為實例 IP 位址來執行下列指令

    export INSTANCE_IP=<IP_ADDRESS>
    

    通常,您不會設定實例的公用 IP (浮動 IP)。 在此情況下,會將浮動 IP 設定為容許 curl 至實例上所部署的應用程式。

  4. 發出以下curl指令來查詢資料庫。 在實例上執行的應用程式將透過專用端點從 Databases for PostgreSQL 讀取內容。 資料與前端應用程式中提供的資料相同。

    curl \
    -s -X POST \
    -H "Content-Type: application/json" \
    --data '{ "query": "query read_database { read_database { id balance transactiontime } }" }' \
    http://$INSTANCE_IP/api/bank
    
  5. 發出下列 curl 指令,以查詢 COS 儲存區。 在實例上執行的應用程式將從 Object Storage 讀取內容,並以 JSON 格式傳回結果。 儲存在 COS 中的資料僅可用於從專用主機上的實例執行的應用程式。

    curl \
    -s -X POST \
    -H "Content-Type: application/json" \
    --data '{ "query": "query read_items { read_items { key size modified } }" }' \
    http://$INSTANCE_IP/api/bank
    
  6. 發出下列 curl 指令,以一次查詢資料庫及 COS 儲存區。 在實例上執行的應用程式將從 Databases for PostgreSQL 和 Object Storage 中讀取內容,並以 JSON 格式傳回結果。

    curl \
    -s -X POST \
    -H "Content-Type: application/json" \
    --data '{ "query": "query read_database_and_items { read_database { id balance transactiontime } read_items { key size modified } }" }' \
    http://$INSTANCE_IP/api/bank
    

調整 VSI 大小並擴充專用主機上連接的區塊儲存空間磁區

如果您觀察到專用主機上佈建的實例設定檔,則會設為 cx2-2x4,其中 c 代表具有 2 個 vCPUs 及 4 GiB RAM 的 計算 系列 (種類)。 在本部分中,您將透過將設定檔更新為來調整實例的大小 cx2-8x16 與 8 vCPUs, 16GiB內存。

在本節中,您也會將連接至 VSI 的區塊儲存空間磁區從 100 GB 擴充至 250 GB。 若要瞭解所選磁區設定檔上的容量上限,請勾選 擴充區塊儲存體磁區容量

調整 VSI 大小

  1. 若要調整 VSI 大小,請導覽至 Schematics 工作區的 設定 標籤,將 step5_resize_dedicated_instance 變數更新為 true儲存 設定。

    虛擬伺服器只能調整為管理實例的專用主機所支援的設定檔。 例如,使用來自 Compute 系列的設定檔佈建的虛擬伺服器可以調整大小至也屬於 Compute 系列的其他設定檔。 如需設定檔的相關資訊,請參閱 實例設定檔

  2. 套用方案,將實例從 2 VCPUs | 4 GiB RAM 調整為 8 VCPUs | 16 GiB RAM

  3. 您可以透過啟動 Cloud Shell,將地區變更為您使用 ibmcloud target -r us-south 指令佈建 VPC 的地區,然後執行 ibmcloud is instances 指令,或從 VPC 的虛擬伺服器實例 使用者介面按一下專用實例名稱,來檢查實例的設定檔。

擴充區塊儲存磁區容量

  1. 若要擴充所連接區塊儲存磁區的容量,請導覽至 Schematics 工作區的 設定 標籤,將 step5_resize_dedicated_instance_volume 變數更新為 true儲存 設定。
  2. 套用計劃,以將區塊儲存磁區容量從 100 GB 增加至 250 GB
  3. 您可以按一下專用實例名稱,從 VPC 使用者介面的虛擬伺服器實例檢查 Data volume 的大小。

下一步為何?

透過配置 SSL 終止、組合階段作業及端對端加密來延伸實務範例。 如需相關資訊,請參閱此 部落格文章

移除資源

若要移除 Schematics 工作區及其資源,請遵循下列步驟:

  1. 導覽至 Schematics 工作區並選取您的工作區。
  2. 按一下 動作 ... 下拉清單,然後按一下 毀損資源,以清除透過 Schematics佈建的所有資源。
  3. 按一下 動作 ... 下拉清單,然後按一下 刪除工作區 以刪除工作區。

視資源而定,它可能不會立即刪除,但會保留 (依預設會保留 7 天)。 您可以透過永久刪除資源或在保留期間內還原資源來收回資源。 請參閱本文件,以瞭解如何 使用資源收回