Nacos 源码启动异常 jmenv.tbsite.net 分析及解决

2024-09-06 18:36

本文主要是介绍Nacos 源码启动异常 jmenv.tbsite.net 分析及解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题描述

下载 Nacos 源码后,将源码导入 idea,并且在 console 模块的 application.properties 文件中正确配置数据源后,以执行 console 模块中 Nacos 类中 main 方法启动服务。

Nacos 默认以集群模式启动,会出现 jmenv.tbsite.net 相关错误,启动及错误截图如下所示:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

错误原因

1、nacos 启动时,会读取 nacos.core.member.lookup.type 配置,根据配置的值确定是 file 还是 address-server,该配置默认未配置,为空,nacos 通过检测本地是否存在 cluster.conf 配置文件来确定是哪一种方式。如下图所示的源码,从文件路径读取文件,如果读取成功,则认为是 lookup 类型是 file,否则为默认为 address-server。因为我们使用源码启动没有提前配置 cluster.conf 文件,所以默认使用 address-server 方式加载集群成员列表。

在这里插入图片描述

2、如下截图所示,在使用 address-server 方式获取集群成员列表时,默认的 http 接口地址为 http://jmenv.tbsite.net:8080/nacos/serverlist,程序会从这个 url 中获取集群成员列表,并同步保存到 cluster.conf 文件中,同时启动异步的方式来定时更新(默认5秒)。这样做的目的是可以通过一个外部的独立接口来控制对集群成员列表,可以应对集群的弹性热更新。

在这里插入图片描述
在这里插入图片描述

注:serverlist 和 env 环境变量均可以通过配置接口地址的方式来实现热更新。

3、因为 address.server.domain 的默认值是 jmenv.tbsite.net,所以程序调用接口无法正常解析这个 host,对应文初所述的 domain 解析异常。解决方法就是在配置文件中为 address.server.domain 配置一个有效的 domain,并保证该 domain 对应的 http://${domain}:${port}/nacos/serverlist 接口可以被正常调用。否则代码在执行多次重试调用仍旧失败后,抛出异常,程序启动失败!

在这里插入图片描述

解决方法

通过上述原因描述,能让我们正常启动 nacos 服务的方式一共有3种:

1、配置正确的 address.server.domainaddress.server.portaddress.server.url,并确保接口可以被正常调用返回结果。

2、创建 ${nacos.home}/conf/cluster.conf 配置文件,并配置集群成员列表,成员列表每行一个,由IP地址:端口组成。如下图所示:

在这里插入图片描述

#2024-09-06T14:13:41.151
192.168.49.11:8848
192.168.49.12:8848
192.168.49.13:8848

注:如果配置明确配置了 nacos.core.member.lookup.type=address-server,并且 cluster.conf 文件也存在,则以 nacos.core.member.lookup.type 配置优先。

3、通过启动变量设置 nacos 为单实例方式启动,如下图所示:

在这里插入图片描述

如此,即可正常启动服务。


(END)

这篇关于Nacos 源码启动异常 jmenv.tbsite.net 分析及解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1142796

相关文章

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

springboot报错Invalid bound statement (not found)的解决

《springboot报错Invalidboundstatement(notfound)的解决》本文主要介绍了springboot报错Invalidboundstatement(not... 目录一. 问题描述二.解决问题三. 添加配置项 四.其他的解决方案4.1 Mapper 接口与 XML 文件不匹配

Python中ModuleNotFoundError: No module named ‘timm’的错误解决

《Python中ModuleNotFoundError:Nomodulenamed‘timm’的错误解决》本文主要介绍了Python中ModuleNotFoundError:Nomodulen... 目录一、引言二、错误原因分析三、解决办法1.安装timm模块2. 检查python环境3. 解决安装路径问题

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错