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(杭州)地域的專有網絡VPC(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。