「golang」nginx支持grpc
【需求】
内网部分服务采用golang写的独立的小RPC服务,可能以后业务大之后加机器并考虑负载均衡
【分析】
nginx从1.13.10版本开始支持grpc,所以直接配置nginx即可支持GRPC的负载均衡
1、nginx安装
网上一堆安装教程,注意:因gRPC基于http2,所以源代码编译安装时需要配置http2,否则识别不了grpc_pass, 参考:./configure --with-http_ssl_module --with-http_v2_module
2、修改nginx配置(conf/nginx.conf)
upstream grpcservers {
server 127.0.0.1:5004 weight=2; #权重越大,分配的概率越大
server 127.0.0.1:5005 weight=1;
}
server {
listen 8000 http2;
location =
/
{
default_type application
/grpc
;
grpc_pass grpc://grpcservers; #"grpc://" 可省略
}
}
备注:timeout默认是60s