[alibaba/nacos]nginx不管怎么配置 客户端启动都报错

2025-10-30 950 views
8
1. 问题说明
这个问题我已经提交过一次了 https://github.com/alibaba/nacos/issues/10437   我也按照其他issues提供的方式配置了,
但是最终都不成功 ,我想把过程再演示一遍  帮我看看到底是哪的问题  谢谢 
2. 环境说明
五个虚拟机  其中三台安装nacos  一台安装mysql  一台安装nginx 

nacos所在的机器的ip分别是  
192.168.191.148
192.168.191.164
192.168.191.165

mysql所在机器的ip是  192.168.191.163

nginx所在机器的ip是 192.168.191.160 
3. Nacos集群搭建 3.1. 第一步: 三个nacos配置mysql地址

3.2. 第二步: 三个nacos同时修改cluster.conf文件

3.3. 第三步:分别启动Nacos 集群搭建成功

4. nginx配置负载均衡错误一(演示) 4.1. 编写Nginx配置文件

4.2. 修改配置文件

4.3. 启动报错
Caused by: com.alibaba.nacos.api.exception.NacosException: Request nacos server failed: 
5. Nginx负载均衡错误二(演示)
 根据issue 9004 的方式配置  还是报错  
5.1. 修改nginx的配置文件

5.2. 修改修改配置文件

5.3. 启动依旧报错
Caused by: com.alibaba.nacos.api.exception.NacosException: Request nacos server failed: 
    at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.requestToServer(NamingGrpcClientProxy.java:288) ~[nacos-client-2.1.0.jar:na]
    at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.doRegisterService(NamingGrpcClientProxy.java:128) ~[nacos-client-2.1.0.jar:na]
    at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.registerService(NamingGrpcClientProxy.java:114) ~[nacos-client-2.1.0.jar:na]
    at com.alibaba.nacos.client.naming.remote.NamingClientProxyDelegate.registerService(NamingClientProxyDelegate.java:94) ~[nacos-client-2.1.0.jar:na]
    at com.alibaba.nacos.client.naming.NacosNamingService.registerInstance(NacosNamingService.java:145) ~[nacos-client-2.1.0.jar:na]
    at com.alibaba.cloud.nacos.registry.NacosServiceRegistry.register(NacosServiceRegistry.java:74) ~[spring-cloud-starter-alibaba-nacos-discovery-2.2.9.RELEASE.jar:2.2.9.RELEASE]
    ... 27 common frames omitted
6. 这个nginx到底应该怎么配啊 谁有没有一个完整的配置的demo呢 谢谢

回答

3

社区的朋友如果有nginx配置成功的,可以把相关配置贴出来,然后我们可以根据成功经验总结成一个使用文档。

4
    upstream grpc_server {
       server 127.0.0.1:9848;
    }

    server {
        listen xxxx so_keepalive=on;
        proxy_responses 1;
        proxy_timeout 20s;
        proxy_pass grpc_server;

    }
9
    upstream grpc_server {
       server 127.0.0.1:9848;
    }

    server {
        listen xxxx so_keepalive=on;
        proxy_responses 1;
        proxy_timeout 20s;
        proxy_pass grpc_server;

    }

@liruhui 可以尝试一下这个配置,如果工作的话我们可以基于此做成文档。

9

@wilsonwu @KomachiSion 大哥 大哥 还是不行啊

如果把配置放到http内不行 如图

把配置放到http外还是不行 如图

只配置上面 不配置下面 还是不行

6

那就不清楚了, 我反正这么设置是可以的, 很稳定。

8

@wilsonwu 大佬能解决一下吗?好老火啊,这个问题,不管怎样都不行的。网上教程,官方文档都没有一个是正确的配置,一直报错,nginx配置了TCP代理之后,nacos服务端的日志一直报错:

2023-05-25 11:22:47,885 INFO Transport failed

io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2Exception: HTTP/2 client preface string missing or corrupt. Hex dump for received bytes: 50524f585920544350342036312e3133302e3136352e3220 at io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2Exception.connectionError(Http2Exception.java:103) at io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.readClientPrefaceString(Http2ConnectionHandler.java:306) at io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.decode(Http2ConnectionHandler.java:239) at io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:438) at io.grpc.netty.shaded.io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:498) at io.grpc.netty.shaded.io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:437) at io.grpc.netty.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) at io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.grpc.netty.shaded.io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:792) at io.grpc.netty.shaded.io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475) at io.grpc.netty.shaded.io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) at io.grpc.netty.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) at io.grpc.netty.shaded.io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.grpc.netty.shaded.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750) 2023-05-25 11:22:48,325 INFO Transport failed

8

@HisinR 感谢你的at,我稍后尝试一下看看能不能在本地环境解决你的问题,不过最近月底比较忙,时间不确定,你可以一边寻找其他方案一边等待。