天天看點

grpc(2):Centos 安裝 nghttp2 做 grpc 的http2 代理1,nghttp22,下載下傳安裝3,啟動服務4,啟動服務5,總結

和nginx 名字比較像,但是是一個c的llib庫。本身也可做http服務。

也可以做代理伺服器,支援ssl。

之前也做過測試了

<a href="http://blog.csdn.net/freewebsys/article/details/58584294">http://blog.csdn.net/freewebsys/article/details/58584294</a>

因為nginx 是不支援 upstream 的http2 轉發請求的。

而且nginx 也沒有計劃開發這個。

而haproxy 是支援 tcp 做代理的。對http2 的協定也是不支援的。

以後還打算做一個 grpc的網關。

必須要能支援http2的協定。而且還能夠代理grpc。

找了半天就找到了一個nghttp2.。

官方網站:

<a href="https://nghttp2.org/">https://nghttp2.org/</a>

<a href="https://github.com/nghttp2/nghttp2">https://github.com/nghttp2/nghttp2</a>

官方文檔是在ubuntu或者debian上面進行安裝的。

實際上也可以在centos上面進行安裝。

參考:

<a href="https://kirk91.github.io/2017/02/22/build-nghttp2-on-centos/">https://kirk91.github.io/2017/02/22/build-nghttp2-on-centos/</a>

直接下一步下一步就可以了。

安裝依賴庫:

安裝nghttp2服務。

沒有錯誤就是編譯成功了。

網上的文檔比較少

<a href="https://nghttp2.org/documentation/package_readme.html">https://nghttp2.org/documentation/package_readme.html</a>

配置就直接按照proxy進行配置即可。

<a href="https://nghttp2.org/documentation/nghttpx-howto.html">https://nghttp2.org/documentation/nghttpx-howto.html</a>

但是發現幾個比較坑的地方。使用指令行的參數和配置檔案的不太一樣。

結果是配置檔案的可以使用。參數定義的比較怪異。

我花了一個下午的時間折騰,重要明白了咋配置了。

nghttpx.conf

首先是frontend 配置,不使用tls進行通路的話一定要加上。

否則就需要增加key 和 crt 檔案,而且通路的時候要使用https。

backend端,一定不要加上tls,否則會報502 錯誤。

而且對于backend的grpc服務來說一定要加上 proto=h2 參數。

強制協定是http2的。否則也報502 錯誤。

從通路日志裡面看:

可以看到請求。

其中/helloworld.greeter/sayhello 代表grpc的包名,接口名和方法名。

nghttp2 是不錯的grpc代理伺服器,可以做簡單的負載均衡。

同時保持http2的連結。

是一個不錯的grpc gateway 解決方案。唯一不足的地方是用 c++ 編寫的。

要是再修改成一個可以做權限,資料統計的gateway 修改起來還是有點難度的。本人不是搞c++ 開發的。