今天跟着PDF文档和一些博文来搭建Eureka的高可用基础项目,在启动服务端项目时提示该错误: com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
如下图所示:
(一)解决方法1
根据笔者所寻找的答案,有一些博主的文章是说修改配置文件的下划线为驼峰形式就行,因为存在SpringBoot版本的问题,如下所示:
改为:
即可。
(二)解决方法2
不过笔者在尝试以上方法发现还是出现这个问题,然后就从配置文件的属性开始查找问题,我根据博文配置的属性,发现把下图的两个属性修改为false就可以正常启动服务端项目:
(三)后话
笔者接着测试两个properties文件一起运行,发现第一个启动的项目如果把上面提及的两个属性设置为true,就会出现这个错误,如下图(启动顺序是peer1->peer2)
如果反过来启动(启动顺序是peer2->peer1),则正常运行,没有其他的报错,如下所示:
于是就查找这两个属性的相关说明,从这篇博文的解释可以看到:
(1)eureka.client.registerWithEureka :表示是否将自己注册到Eureka Server,默认为true。由于当前这个应用就是Eureka Server,故而设为false。
(2)eureka.client.fetchRegistry :表示是否从Eureka Server获取注册信息,默认为true。因为这是一个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,故而设为false。
最后笔者结合Cannot execute request on any known server(无法在任何已知服务器上执行请求)这个错误和以上两个属性的含义,猜测该错误可能是由于第一个启动的项目如果是设置为true时,会把自己注册到Eureka Server中,但是此时服务还没有启动,从而导致这个错误。
(四)后续
经过刚才的测试,我发现我在纠结一个不是问题的问题,实属大惊小怪,哈哈。该问题正确的用法本来就是要设置为true的,只不过我可能有哪一步操作失误,导致访问不了Euraka服务中心的界面。也让我重新认识到服务端的相关配置和操作。
该文章仅用于记录笔者在学习过程中遇到的问题并且解决,如果存在其他问题或疑问,请各位读者多多指出,大家相互学习,谢谢!