今天我將演示如何在 OpenResty Edge 中設置一個 gRPC 反向代理和負載均衡器。
gRPC 樣本服務器和樣本服務我們準備了一個 gRPC 樣本服務器。該服務器的 IP 地址以 .166 結尾。監聽的端口是 8080。這個是樣本 gRPC 服務的 protobuf 定義文件。1cat hello_world.proto
這個服務根據 name 參數返回一個歡迎信息。
我們可以使用 grpcurl 命令行工具來檢查這個服務的輸出。這個工具可以發送 gRPC 請求,然後以 JSON 格式顯示收到的響應。由於我們的 gRPC 服務器不支持 TLS 加密,這裏要使用 “-plaintext” 選項。 將 “world” 作為 name 參數的值。輸入上面提到的 gRPC 服務器的地址。最後,輸入 gRPC 服務的名稱。
發送請求。不出所料,返回了 “hello world”。
將 gRPC 服務器作為上游使用接下來,我們將使用 OpenResty Edge 後面的這個 gRPC 服務器作為上游。
像往常一樣,讓我們進入 OpenResty Edge 的 Admin Web 控制枱。這就是我們控制枱的樣本部署。每個用户都有自己的本地部署。
我們可以繼續使用之前的示例應用,test-edge.com。
進入該應用。
在應用中啓用 HTTP 2gRPC 使用 HTTP 2 進行傳輸。HTTP 2 在 OpenResty Edge 中是默認啓用的。
這裏我將展示如何在 Edge 的應用程序設置中啓用 HTTP 2。
選擇 “Enabled” 選項。
保存我們的改動。
然後我們去 SSL 頁面,確保 SSL 證書已經配置妥當。
可以看到我們在以前的教程中配置的證書。
為 gRPC 服務器創建上游跳轉到 “Upstreams” 頁面。
為我們的後端服務器創建一個新的上游。
我們給這個上游起個名字,“grpc backend”。
如果 gRPC 後端服務器啓用了 TLS 加密功能,我們可以在這裏選擇 HTTPS。
在 gRPC 後端服務器的主機字段中填入前面提到的 IP 地址。
填寫端口號:8080。
單擊保存這個上游。
我們可以看到這個新的 “grpc backend” 上游已經成功被創建。
啓用 gRPC 代理現在讓我們創建一個新的頁面規則來實際使用這個上游。
創建一個新的頁面規則。
添加一個匹配 URI 前綴的規則條件。
輸入這些由 “grpcurl” 使用的請求 URI 前綴。
在這裏添加一個代理。
打開這個開關,啓用 gRPC 代理。
選擇我們剛剛創建的 gRPC 上游。
將這個頁面規則插入到現存的其他規則之前。
保存這條頁面規則。
可以看到剛加的規則已經出現在頁面規則列表裏。
像往常一樣,需要發佈一個新的版本來推送我們剛才的改動。
點擊這個按鈕。
發佈!
新版本現在已經同步到所有的網關服務器上了。
現在,新的頁面規則已經被推送到所有的網關集羣和服務器。
這些配置的變化不需要服務器重載、重啓或二進制升級。所以它是非常高效和可擴展的。
測試 gRPC 服務現在我們通過網關測試 gRPC 服務。
仍然使用 grpcurl 工具來訪問 gRPC 服務。使用域名 test-edge.com 和端口 443。這將命中 OpenResty Edge 網關。這次我們沒有指定 plaintext 選項,因為 Edge 網關支持 TLS 加密。
發送請求。不出所料,返回了 “hello world” 這個消息。
可以看到,gRPC 服務現在完全支持 TLS 加密來訪問,儘管源服務器不支持。這就是我今天要演示的內容。如果你喜歡這個教程,請訂閲這個博客網站和我們的 YouTube 頻道 或 B 站頻道。謝謝!
如果您喜歡本文,歡迎關注我們 OpenResty Inc. 公司的博客網站 。也歡迎掃碼關注我們的微信公眾號: