全部產品
Search
文件中心

Server Load Balancer:使用ALB實現gRPC協議的負載平衡

更新時間:Nov 19, 2024

gRPC是一種高效能、開源的遠端程序呼叫架構,當您使用gRPC進行後端服務通訊時,您可使用應用型負載平衡ALB(Application Load Balancer)實現gRPC協議的負載平衡,統一流量入口。gRPC基於HTTP/2協議進行通訊,目前ALB僅支援前端加密(通過HTTPS監聽)和後端明文(伺服器組後端協議為gRPC)的形態。

背景資訊

gRPC是一種高效能、開源的遠端程序呼叫架構,它使用Protocol Buffers作為介面定義語言(IDL)和基於HTTP/2協議進行通訊。

gRPC用於構建分布式系統中的服務通訊。它解決了不同服務之間的跨語言通訊問題,並提供了強大的IDL和自動產生的程式碼,使得開發人員可以方便地定義和調用遠程服務。同時,gRPC具有高效能、低延遲和高效的資料轉送,通過採用二進位編碼和HTTP/2的多工特性,提供了快速、可靠的遠程調用體驗。

gRPC適用於微服務架構、跨語言通訊、大規模分布式系統等情境。特別是在需要高效能和低延遲的情境下,gRPC能夠提供卓越的效能。它還支援多種調用方式,如簡單調用、流式請求和響應、雙向流等,可以靈活地滿足不同業務需求。

關於gRPC的更多資訊,可參考gRPC官方文檔

情境樣本

某公司在華東1(杭州)地區的Virtual Private Cloud(Virtual Private Cloud)內部署了gRPC服務,在VPC中建立了ALB執行個體和支援gRPC協議的後端伺服器組,ALB配置了HTTPS監聽並開啟HTTP2.0開關,同時後端伺服器組配置了gRPC協議的健全狀態檢查。

用戶端需要通過ALB執行個體來訪問VPC中部署的gRPC服務。

前提條件

步驟一:建立伺服器組並添加後端伺服器

  1. 登入應用型負載平衡ALB控制台

  2. 在頂部功能表列處,選擇所屬的地區。

  3. 在左側導覽列,選擇應用型負載均衡 ALB > 伺服器組

  4. 伺服器組頁面,單擊建立伺服器組

  5. 建立伺服器組對話方塊中,完成以下配置。完成後單擊建立

    此處僅列出和本文強相關的配置項,其他未列出的配置項可使用預設值或自行配置。

    配置

    說明

    伺服器群組類型

    選擇一種伺服器群組類型。本文選擇伺服器類型

    VPC

    從VPC下拉式清單中選擇ALB所屬的VPC,只有該VPC下的伺服器可以加入到該伺服器組。

    選擇後端協議

    本文選擇gRPC

    開啟健全狀態檢查

    本文選擇開啟健全狀態檢查。

    健全狀態檢查配置

    單擊編輯,修改健全狀態檢查配置資訊:

    • 健康檢查合約:本文選擇gRPC

    • 健全狀態檢查方法:本文選擇POST

    • 健康狀態返回碼:選擇健全狀態檢查正常的狀態代碼,需要與後端gRPC服務配置一致。本文樣本為12

  6. 伺服器組頁面找到目標伺服器組,單擊其執行個體ID。

  7. 單擊後端伺服器頁簽,然後單擊新增後端伺服器

  8. 新增後端伺服器面板,選擇已建立的ECS執行個體,然後單擊下一步

  9. 配置連接埠和權重設定精靈,設定ECS的連接埠和權重,然後單擊確定

    說明

    此處ECS配置的連接埠必須要與實際部署的gRPC服務設定的連接埠保持一致。同時注意安全性群組規則需要允許存取相關連接埠。

步驟二:配置HTTPS監聽

  1. 登入應用型負載平衡ALB控制台

  2. 在頂部功能表列,選擇執行個體所屬的地區。

  3. 在左側導覽列,選擇執行個體

  4. 執行個體頁面,找到目標執行個體,然後在操作列單擊建立監聽

  5. 配置監聽頁面配置以下資訊,其他參數可保持預設值或根據實際情況修改。完成後單擊下一步

    配置

    說明

    選擇監聽協議

    選擇HTTPS

    監聽連接埠

    本文配置連接埠443。

    說明
    • 伺服器組設定後端協議為gRPC時,監聽協議類型只支援HTTPS。

    • gRPC基於HTTP/2協議進行通訊,伺服器組設定後端協議為gRPC時,HTTPS監聽必須開啟HTTP2.0。ALB預設啟用該功能,需要確保啟用HTTP2.0功能為已開啟,請勿關閉。

  6. 配置SSL認證頁面配置以下資訊,其他參數可保持預設值或根據實際情況修改。完成後單擊下一步

    配置

    說明

    選擇伺服器憑證

    選擇準備的SSL認證。

  7. 選擇伺服器組頁面配置以下資訊,其他參數可保持預設值或根據實際情況修改。完成後單擊下一步

    配置

    說明

    選擇伺服器組

    選擇此前已建立好的gRPC伺服器組。

  8. 組態稽核頁面,檢查配置參數是否有誤,無誤的話單擊提交,等待監聽建立完成。

步驟三:佈建網域名解析

實際業務情境中,建議您使用自有網域名稱,通過CNAME解析的方式將自有網域名稱指向ALB執行個體網域名稱。

  1. 在左側導覽列,選擇應用型負載平衡 ALB > 執行個體

  2. 執行個體頁面,複製已建立的ALB執行個體的DNS名稱。

  3. 執行以下步驟添加CNAME解析記錄。

    說明

    對於非阿里雲註冊網域名稱,需先將網域名稱添加到雲解析控制台,才可以進行網域名稱解析設定。具體操作,請參見網域名稱管理。如果您是阿里雲註冊的網域名稱,請直接執行以下步驟。

    1. 登入網域名稱解析控制台

    2. 權威網域名稱解析頁面,找到目標網域名稱,在操作列單擊解析設定

    3. 解析設定頁面,單擊添加記錄

    4. 添加記錄面板,配置以下資訊完成CNAME解析配置,然後單擊確定

      配置

      說明

      記錄類型

      在下拉式清單中選擇CNAME

      主機記錄

      您的網域名稱的首碼。本文輸入@

      說明

      建立網域名稱為根網域名稱時,主機記錄為@

      解析請求來源

      選擇預設。

      記錄值

      輸入欄位名對應的CNAME地址,即您複製的ALB執行個體的DNS名稱。

      TTL

      全稱Time To Live,表示DNS記錄在DNS伺服器上的緩衝時間,本文使用預設值。

步驟四:驗證連通性

完成上述操作後,用戶端可以通過ALB訪問部署了gRPC服務的後端伺服器,以下內容為您展示如何測試用戶端和gRPC服務之間的連通性。

說明

瀏覽器無法直接存取gRPC服務。建議您通過grpcurl工具之類的測試載入器驗證訪問。

在用戶端中執行grpcurl -insecure -v <網域名稱>:<監聽連接埠> <gRPC服務名稱>/<方法>命令嘗試訪問ECS中的gRPC服務。

如果收到類似下圖所示的回複報文,則表示用戶端可以通過ALB訪問部署了gRPC服務的後端伺服器ECS。

image

相關文檔