开发者社区 > 云原生 > 微服务 > 正文

在Nacos中应用启动时,仍报9848端口不可用,如何排查?

在Nacos中centos系统无外网网络,nacos运行无报错,2.0.4和2.3.2和1.4.2版本都尝试过,8848和9848端口运行中,本地防火墙端口已开放,但应用启动时,仍报9848端口不可用,如何排查?

展开
收起
花开富贵111 2024-08-05 15:12:48 936 0
1 条回答
写回答
取消 提交回答
  • 问题分析:

    确认端口状态: 您提到Nacos在CentOS系统上运行时,8848和9848端口正在运行中,且本地防火墙已开放这些端口。这意味着从系统层面看,端口应该是可以被访问的。

    应用启动报错详情: 应用启动时报9848端口不可用,这通常意味着应用尝试通过gRPC连接到Nacos服务端时失败了。考虑到您已经尝试了Nacos的多个版本(2.0.4、2.3.2和1.4.2),并且确认了系统层面的端口开放情况,问题可能出在以下几个方面:

    网络配置: 虽然您说系统无外网网络,但gRPC通信是在内网环境下进行的,理论上不应受此影响。不过,需要确认内部网络配置(如网络策略、路由规则)是否允许应用与Nacos服务间的通信。
    Nacos配置: 需要检查Nacos的配置文件,确保server.port正确设置,并且gRPC端口(默认为9848)没有被意外更改或冲突。
    客户端配置: 应用作为Nacos客户端,其配置也需要检查,确保它指向正确的Nacos服务地址和端口,且没有错误地设置了gRPC端口偏移量导致连接错误。
    防火墙与SELinux: 除了基本的iptables防火墙,还需要考虑SELinux的规则,它可能对进程访问特定端口有所限制。

    排查步骤:

    检查Nacos服务端日志: 查看Nacos服务端的日志文件,特别是启动阶段和接收请求时的记录,看是否有任何关于9848端口的异常信息。

    确认网络连通性: 在Nacos服务端主机上,使用telnet localhost 9848或nc -zv localhost 9848命令,测试9848端口是否真的可由本地访问。如果成功,再从应用所在的主机尝试访问Nacos主机的9848端口,以排除网络路由问题。

    审查Nacos配置: 打开Nacos的配置文件(通常是application.properties或nacos.conf),验证server.port的设置,并确认没有手动修改gRPC端口偏移量导致的端口不匹配。

    检查客户端配置: 在应用的启动脚本或配置文件中,检查Nacos客户端的配置是否正确,尤其是服务地址(serverAddr)和端口,确保它们与Nacos服务端实际开放的端口一致。如果有自定义gRPC端口偏移量,请确保服务端的网络设备做了相应的端口映射。

    检查SELinux设置: 运行sestatus查看SELinux的状态。如果它是启用的,尝试临时将其设置为宽容模式(setenforce 0),重新启动应用,看是否还存在同样的问题。这有助于判断SELinux是否为问题根源。此回答整理来自钉群“Nacos社区群2(已满,欢迎加4群:12810027056)”。

    2024-08-05 17:35:59
    赞同 66 展开评论 打赏

为微服务建设降本增效,为微服务落地保驾护航。

相关电子书

更多
Nacos架构&原理 立即下载
workshop专场-微服务专场-开发者动手实践营-微服务-使用Nacos进行服务的动态发现和流量调度 立即下载
Nacos 启航,发布第一个版本, 云原生时代助力用户微服务平台建设 立即下载