本文主要是介绍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.domain
、 address.server.port
和 address.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 分析及解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!