nacos常见问题之nacos1.4.1报错未授权访问漏洞如何解决

本文涉及的产品
函数计算FC,每月15万CU 3个月
云原生网关 MSE Higress,422元/月
可观测链路 OpenTelemetry 版,每月50GB免费额度
简介: Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。

问题一:在Nacos中调用以下这个接口的时候 时不时的报read timeout 如何解决?

在Nacos中调用http://xxx:8848/nacos/v1/cs/configs/listener 这个接口的时候 时不时的报read timeout 如何解决?java.net.SocketTimeoutException: Read timed out

at java.net.SocketInputStream.socketRead0(Native Method)

at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)

at java.net.SocketInputStream.read(SocketInputStream.java:171)

at java.net.SocketInputStream.read(SocketInputStream.java:141)

at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)

at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)

at java.io.BufferedInputStream.read(BufferedInputStream.java:345)

at sun.net.http://www.http.HttpClient.parseHTTPHeader(HttpClient.java:735)

at sun.net.http://www.http.HttpClient.parseHTTP(HttpClient.java:678)

at sun.net.http://www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1587)

at sun.net.http://www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)

at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)

at com.alibaba.nacos.client.config.impl.HttpSimpleClient.httpPost(HttpSimpleClient.java:119)

at com.alibaba.nacos.client.config.http.ServerHttpAgent.httpPost(ServerHttpAgent.java:143)

at com.alibaba.nacos.client.config.http.MetricsHttpAgent.httpPost(MetricsHttpAgent.java:64)

at com.alibaba.nacos.client.config.impl.ClientWorker.checkUpdateConfigStr(ClientWorker.java:386)

at com.alibaba.nacos.client.config.impl.ClientWorker.checkUpdateDataIds(ClientWorker.java:354)

at com.alibaba.nacos.client.config.impl.ClientWorker$LongPollingRunnable.run(ClientWorker.java:521)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)



参考答案:

针对你在Nacos中调用 /nacos/v1/cs/configs/listener 接口时偶尔出现 java.net.SocketTimeoutException: Read timed out 错误的情况,这通常是由于网络延迟、服务器响应超时或者是客户端读取超时等原因造成的。以下是几种可能的解决方案:

  1. 增加超时时间:
    Nacos客户端在请求配置中心时,可以配置超时时间。修改Nacos客户端配置文件(通常是 nacos-client.properties),增加或增大 client.config.long-polling.timeout 参数值,比如设置为 client.config.long-polling.timeout=30000(单位:毫秒),将其设置为一个较大且合适的值。
  2. 检查网络状况:
    确认客户端与Nacos服务端之间的网络连接是否稳定,是否存在丢包、延迟过高等问题。如果在云环境部署,检查云服务商网络带宽和SLA。
  3. 排查Nacos服务端压力:
    如果Nacos服务端承受了较大的访问压力,可能会导致响应变慢。检查Nacos服务端日志,看是否存在性能瓶颈或错误信息。必要时考虑扩容或优化Nacos服务集群。
  4. 优化长轮询策略:
    Nacos客户端通过长轮询机制监听配置变化,如果Nacos服务端处理能力有限,客户端数量较多时,可能会影响长轮询的效率。适当调整客户端并发数或者其他配置参数。
  5. 检查防火墙设置:
    确保客户端与Nacos服务端之间的网络通信没有被防火墙阻断,特别是长连接的保持。
  6. 查看Nacos服务端健康状态:
    使用Nacos提供的监控和管理界面,确认服务端是否处于健康状态,包括磁盘空间、CPU、内存使用率等指标。



关于本问题的更多回答可点击进行查看:

https://developer.aliyun.com/ask/591349?spm=a2c6h.13066369.question.33.48ee7be1udTEE3



问题二:在Nacos中nacos1.1.4 可以适配达梦数据库吗?

在Nacos中nacos1.1.4 可以适配达梦数据库吗?



参考答案:

需要自己改源代码。



关于本问题的更多回答可点击进行查看:

https://developer.aliyun.com/ask/591348?spm=a2c6h.13066369.question.34.48ee7be15UT79a



问题三:nacos2.0.4 Nacos 服务一定要先启动,服务才能注册上吗?

nacos2.0.4

nacos 服务一定要先启动,服务才能注册上吗?

最近观察到先启动微服务,然后再启动nacos,会出现服务注册不上的现象。

期间微服务一直在向nacos发送请求,控制台也在输出尝试建立连接的日志,等nacos启动后,微服务的控制台日志就不再输出了

2024-01-11 11:11:42.487 [com.alibaba.nacos.client.naming.security] ERROR com.alibaba.nacos.client.security.SecurityProxy - login failed: {"code":403,"message":"unknown user!","header":{"header":{"Accept-Charset":"UTF-8","Connection":"keep-alive","Content-Length":"13","Content-Type":"text/html;charset=UTF-8","Date":"Thu, 11 Jan 2024 03:11:42 GMT","Keep-Alive":"timeout=60"},"originalResponseHeader":{"Connection":["keep-alive"],"Content-Length":["13"],"Content-Type":["text/html;charset=UTF-8"],"Date":["Thu, 11 Jan 2024 03:11:42 GMT"],"Keep-Alive":["timeout=60"]},"charset":"UTF-8"}}

2024-01-11 11:11:52.649 [com.alibaba.nacos.client.remote.worker] INFO com.alibaba.nacos.common.remote.client - [273f78d6-13e7-4139-8881-97c0aa695254] Server healthy check fail, currentConnection = 1704942699497_127.0.0.1_2701

2024-01-11 11:11:52.649 [com.alibaba.nacos.client.remote.worker] INFO com.alibaba.nacos.common.remote.client - [273f78d6-13e7-4139-8881-97c0aa695254] Try to reconnect to a new server, server is not appointed, will choose a random server.

2024-01-11 11:11:53.260 [com.alibaba.nacos.client.remote.worker] INFO com.alibaba.nacos.common.remote.client - [273f78d6-13e7-4139-8881-97c0aa695254] Success to connect a server [127.0.0.1:8848], connectionId = 1704942713148_127.0.0.1_2715

2024-01-11 11:11:53.260 [com.alibaba.nacos.client.remote.worker] INFO com.alibaba.nacos.common.remote.client - [273f78d6-13e7-4139-8881-97c0aa695254] Abandon prev connection, server is 127.0.0.1:8848, connectionId is 1704942699497_127.0.0.1_2701

2024-01-11 11:11:53.260 [com.alibaba.nacos.client.remote.worker] INFO com.alibaba.nacos.common.remote.client - Close current connection 1704942699497_127.0.0.1_2701

2024-01-11 11:11:53.260 [com.alibaba.nacos.client.remote.worker] INFO com.alibaba.nacos.common.remote.client - [273f78d6-13e7-4139-8881-97c0aa695254] Notify disconnected event to listeners

2024-01-11 11:11:53.261 [com.alibaba.nacos.client.remote.worker] INFO com.alibaba.nacos.common.remote.client - [273f78d6-13e7-4139-8881-97c0aa695254] Notify connected event to listeners.

2024-01-11 11:11:53.262 [nacos-grpc-client-executor-31] WARN c.a.nacos.common.remote.client.grpc.GrpcClient - [1704942699497_127.0.0.1_2701]Ignore error event,isRunning:true,isAbandon=true



参考答案:

Nacos 服务注册与发现的正常流程确实要求 Nacos 服务器必须先启动。根据你提供的日志,我们可以看出以下几个关键点:

  1. 微服务在尝试向 Nacos 服务器发送登录请求时,收到了 403 Forbidden 错误,错误信息提示“unknown user!”,这表明在 Nacos 未启动时,微服务试图与 Nacos 交互并验证身份,但由于 Nacos 服务尚未可用,所以认证失败。
  2. 微服务不断尝试重新连接 Nacos,最终成功连接到本地地址 127.0.0.1:8848
  3. 在 Nacos 启动后,微服务客户端似乎成功建立了连接。

基于这些信息,结论是:

  • 微服务在 Nacos 未启动时确实无法完成服务注册。
  • 微服务具有重连机制,一旦 Nacos 服务启动,它将尝试重新连接并完成服务注册。

为了避免这种情况对服务上线造成影响,建议在部署流程中确保 Nacos 服务先启动并稳定运行,然后再启动依赖 Nacos 的微服务。此外,还可以通过优化微服务的启动逻辑,使其在 Nacos 服务不可用时能够保持等待并反复尝试连接,直到 Nacos 成功启动并完成服务注册。



关于本问题的更多回答可点击进行查看:

https://developer.aliyun.com/ask/589392?spm=a2c6h.13066369.question.35.48ee7be1eapUsP



问题四:nacos1.4.1频繁的报未授权访问漏洞,有什么解决方法吗?

Nacos1.4.1频繁的报未授权访问漏洞,有什么解决方法吗?



参考答案:

升级版本。



关于本问题的更多回答可点击进行查看:

https://developer.aliyun.com/ask/589391?spm=a2c6h.13066369.question.34.48ee7be108UrNi



问题五:在Nacos中,服务一直在报token expired!这个问题怎么处理?

在将Nacos从单机服务改为由三个服务器组成的集群后,能够注册成功,但是服务一直在报token expired!怎么处理?



参考答案:

当你将Nacos从单机切换到集群模式后,出现服务注册成功但一直报“token expired”错误的情况,可能是由于Nacos集群环境下Token的有效期验证出现问题导致的。Token在这里是用来校验客户端请求合法性的,过期则会导致客户端请求失败。

处理这个问题,可以尝试以下步骤:

  1. 检查Nacos集群配置:
    确保集群内所有节点的配置一致,包括Nacos的安全模块配置(如是否开启了服务端鉴权、Token有效期等)。
  2. 客户端配置:
    检查客户端(微服务)在连接Nacos时是否正确配置了access key和secret key(如果开启了服务端鉴权),以及客户端是否具备刷新Token的能力。确保客户端获取Token的逻辑正确无误,能够在Token即将过期时及时刷新。
  3. Token有效期:
    查看Nacos服务端的Token有效期配置,确保其设置在一个合理的范围内,以免过快过期。若有必要,可以适当延长Token的有效期。
  4. 客户端重试逻辑:
    修改客户端重试逻辑,当接收到“token expired”错误时,主动触发Token的刷新流程,并重新尝试注册服务。
  5. 时钟同步:
    确保Nacos集群内所有节点的系统时间保持同步,时钟不一致可能导致Token过期判断出现偏差。
  6. 清除缓存或重启客户端:
    有时候客户端可能存在缓存的过期Token,尝试清除缓存或者重启客户端服务,确保使用最新的Token进行通信。



关于本问题的更多回答可点击进行查看:

https://developer.aliyun.com/ask/589390?spm=a2c6h.13066369.question.37.48ee7be1hoqpcC

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
安全 Linux Nacos
使用Docker运行Nacos并安装cpolar内网穿透工具实现远程访问
使用Docker运行Nacos并安装cpolar内网穿透工具实现远程访问
229 0
|
1天前
|
Kubernetes Nacos 微服务
探讨了在Kubernetes中使用Nacos v2.2.3时,强制删除Pod后Pod仍存在的常见问题
本文深入探讨了在Kubernetes中使用Nacos v2.2.3时,强制删除Pod后Pod仍存在的常见问题。通过检查Pod状态、事件、配置,调整Nacos和Kubernetes设置,以及手动干预等步骤,帮助开发者快速定位并解决问题,确保服务稳定运行。
11 2
|
6月前
|
安全 Linux Nacos
如何使用公网地址远程访问内网Nacos UI界面查看注册服务
如何使用公网地址远程访问内网Nacos UI界面查看注册服务
350 0
|
6月前
|
安全 Nacos 数据库
探索 Nacos反序列化漏洞CNVD-2023-45001
Nacos 2.1.0版本遭遇高危反序列化漏洞(CNVD-2023-45001),允许攻击者通过7848端口执行远程代码。影响1.4.0至1.4.6及2.0.0至2.2.3版本。建议用户升级至2.2.3,下载链接:https://github.com/alibaba/nacos/releases/tag/2.2.3。升级过程平滑,数据库无须调整,仅需按文档(https://nacos.io/zh-cn/docs/v2/guide/user/auth.html)配置鉴权。重视安全修复,确保系统安全。
723 7
 探索 Nacos反序列化漏洞CNVD-2023-45001
|
6月前
|
Dubbo Java Serverless
Serverless 应用引擎操作报错合集之Nacos中nacos启动正常,访问白页,启动日志显示正常如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
190 0
Serverless 应用引擎操作报错合集之Nacos中nacos启动正常,访问白页,启动日志显示正常如何解决
|
6月前
|
存储 SpringCloudAlibaba 安全
Nacos未授权访问复现及修复
Nacos未授权访问复现及修复
608 0
|
6月前
|
敏捷开发 API 持续交付
云效产品使用常见问题之把云效上的配置发到Nacos上面去如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2天前
|
负载均衡 应用服务中间件 Nacos
|
1天前
|
网络安全 Nacos 开发者
Nacos作为流行的微服务注册与配置中心,“节点提示暂时不可用”是常见的问题之一
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,“节点提示暂时不可用”是常见的问题之一。本文将探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务的正常运行。通过检查服务实例状态、网络连接、Nacos配置、调整健康检查策略等步骤,可以有效解决这一问题。
10 4
|
1天前
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,实际使用中常遇到“客户端不发送心跳检测”的问题。本文深入探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务正常运行。通过检查客户端配置、网络连接、日志、版本兼容性、心跳策略、注册状态、重启应用和环境变量等步骤,系统地排查和解决这一问题。
11 3