当前位置: 首页 > 知识库问答 >
问题:

java - 请教下nacos集群,cloud项目无法注册是怎么回事啊?

益英逸
2023-08-27

nacos是2.2.3

2023-08-27 09:52:23.153 ERROR 6492 --- [ main] c.a.c.n.registry.NacosServiceRegistry : nacos registry, userp_ppservice register failed...NacosRegistration{nacosDiscoveryProperties=NacosDiscoveryProperties{serverAddr='localhost:81', endpoint='', namespace='', watchDelay=30000, logName='', service='userp_ppservice', weight=1.0, clusterName='BJ', group='DEFAULT_GROUP', namingLoadCacheAtStart='false', metadata={preserved.register.source=SPRING_CLOUD}, registerEnabled=true, ip='192.168.199.137', networkInterface='', port=8083, secure=false, accessKey='', secretKey='', heartBeatInterval=null, heartBeatTimeout=null, ipDeleteTimeout=null, failFast=true}},

com.alibaba.nacos.api.exception.NacosException: failed to req API:/nacos/v1/ns/instance after all servers([localhost:81]) tried: ErrCode:400, ErrMsg:<html><body><h1>Whitelabel Error Page</h1><p>This application has no explicit mapping for /error, so you are seeing this as a fallback.</p><div id='created'>Sun Aug 27 09:52:23 CST 2023</div><div>There was an unexpected error (type=Bad Request, status=400).</div><div>receive invalid redirect request from peer 127.0.0.1</div></body></html>

cluster里这样配置的

127.0.0.1:8838
127.0.0.1:8848
127.0.0.1:8858

nginx里反向代理这样配置的

image.png

共有1个答案

萧星火
2023-08-27

如果是连接nacos集群,可以不用在nginx上配置负载均衡。
nacos客户端连接的时候,可以配置多个naocs服务端的地址,客户端自己会判断使用那个地址,当有某个节点不能访问时,会切换到其他节点。所以这里加nginx做负载均衡的意义不大,反而还增加了一个nginx单点故障的风险。

nginx http 81 端口的配置,看上去好像没问题。贴出来的错误提示,是收到了无效的redirect请求。这个可以先尝试不连接负载均衡,直接连接8848试试,看看还有没有一样的错误,验证一下是不是nginx的配置的问题。

这里应该有一个问题

  1. 如果要使用nginx做负载均衡的话,还需要配置一个1081端口的4层负载均衡,也就是81+1000偏移。因为2.x的nacos还会用到一个grpc协议的端口。
 类似资料:
  • 该怎么解决?之前都能启动的,也没有找到哪里写了这个路径的文件;打包也没报错 yml文件: 这里是读取这两个yaml文件的意思吗?

  • Nacos 是 Seata 组件中重要的注册中心实现. 预备工作 当您将nacos-client整合到您的 Seata工程之前,请确保后台已经启动 Nacos 服务。如果您尚且不熟悉 Nacos 的基本使用的话,可先行参考 Nacos 快速入门。建议使用 Nacos 1.2.0 及以上的版本。 快速上手 Seata 融合 Nacos 注册中心的操作步骤非常简单,大致步骤可分为“增加 Maven 依

  • 使用官方默认配置环境,所有服务都已启动,html文件访问正常,php文件路径正确,使用浏览器访问报404错误。

  • 我封装了element-plus中的datepicker的组件,代码如下: 使用组件: 现在的结果是点击后没反应,change事件没有触发

  • 问题内容: 我正在阅读有效的Java,它在各处都用于换行符。我已经相当成功地在Java程序中使用了换行符。 哪个是“正确”的?这有什么错?Java为什么要更改此C约定? 问题答案: 从快速的Google: 还有一个说明符与参数不对应。输出行的是“%n”。在某些情况下,也可以使用“ \ n”,但是由于“%n”总是输出正确的平台特定的行分隔符,因此它可以跨平台移植,而“ \ n”则不能。

  • 1.手机版 注册方法:下载轻推-新用户注册-获取验证码-设置头像-填写轻推号(真名或昵称)-设置密码(6位数以上,且至少包括数字、字母和特殊符号中的两种)-选择领域 2.电脑版 注册方法:下载轻推-新用户注册-获取验证码-设置头像-填写轻推号(真名或昵称)-设置密码(6位数以上,且至少包括数字、字母和特殊符号中的两种)