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服務。
前提條件
步驟一:建立伺服器組並添加後端伺服器
在頂部功能表列處,選擇所屬的地區。
在左側導覽列,選擇
。在伺服器組頁面,單擊建立伺服器組。
在建立伺服器組對話方塊中,完成以下配置。完成後單擊建立。
此處僅列出和本文強相關的配置項,其他未列出的配置項可使用預設值或自行配置。
配置
說明
伺服器群組類型
選擇一種伺服器群組類型。本文選擇伺服器類型。
VPC
從VPC下拉式清單中選擇ALB所屬的VPC,只有該VPC下的伺服器可以加入到該伺服器組。
選擇後端協議
本文選擇gRPC。
開啟健全狀態檢查
本文選擇開啟健全狀態檢查。
健全狀態檢查配置
單擊編輯,修改健全狀態檢查配置資訊:
健康檢查合約:本文選擇gRPC。
健全狀態檢查方法:本文選擇POST。
健康狀態返回碼:選擇健全狀態檢查正常的狀態代碼,需要與後端gRPC服務配置一致。本文樣本為
12
。
在伺服器組頁面找到目標伺服器組,單擊其執行個體ID。
單擊後端伺服器頁簽,然後單擊新增後端伺服器。
在新增後端伺服器面板,選擇已建立的ECS執行個體,然後單擊下一步。
在配置連接埠和權重設定精靈,設定ECS的連接埠和權重,然後單擊確定。
說明此處ECS配置的連接埠必須要與實際部署的gRPC服務設定的連接埠保持一致。同時注意安全性群組規則需要允許存取相關連接埠。
步驟二:配置HTTPS監聽
在頂部功能表列,選擇執行個體所屬的地區。
在左側導覽列,選擇執行個體。
在執行個體頁面,找到目標執行個體,然後在操作列單擊建立監聽。
在配置監聽頁面配置以下資訊,其他參數可保持預設值或根據實際情況修改。完成後單擊下一步。
配置
說明
選擇監聽協議
選擇HTTPS。
監聽連接埠
本文配置連接埠443。
說明伺服器組設定後端協議為gRPC時,監聽協議類型只支援HTTPS。
gRPC基於HTTP/2協議進行通訊,伺服器組設定後端協議為gRPC時,HTTPS監聽必須開啟HTTP2.0。ALB預設啟用該功能,需要確保啟用HTTP2.0功能為已開啟,請勿關閉。
在配置SSL認證頁面配置以下資訊,其他參數可保持預設值或根據實際情況修改。完成後單擊下一步。
配置
說明
選擇伺服器憑證
選擇準備的SSL認證。
在選擇伺服器組頁面配置以下資訊,其他參數可保持預設值或根據實際情況修改。完成後單擊下一步。
配置
說明
選擇伺服器組
選擇此前已建立好的gRPC伺服器組。
在組態稽核頁面,檢查配置參數是否有誤,無誤的話單擊提交,等待監聽建立完成。
步驟三:佈建網域名解析
實際業務情境中,建議您使用自有網域名稱,通過CNAME解析的方式將自有網域名稱指向ALB執行個體網域名稱。
在左側導覽列,選擇
在執行個體頁面,複製已建立的ALB執行個體的DNS名稱。
執行以下步驟添加CNAME解析記錄。
說明對於非阿里雲註冊網域名稱,需先將網域名稱添加到雲解析控制台,才可以進行網域名稱解析設定。具體操作,請參見網域名稱管理。如果您是阿里雲註冊的網域名稱,請直接執行以下步驟。
登入網域名稱解析控制台。
在權威網域名稱解析頁面,找到目標網域名稱,在操作列單擊解析設定。
在解析設定頁面,單擊添加記錄。
在添加記錄面板,配置以下資訊完成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。