seata闪退、连接不上nacos的问题

368 阅读1分钟

最近在学习使用seata处理分布式事务,在启动过程中遇到了问题:

我在虚拟机上配置的docker,配置了mysql、nacos都没有问题,但是在启动seata时会出现闪退的情况,查看了seata的日志,显示连接不上nacos,报错如下:

Caused by: com.alibaba.nacos.api.exception.NacosException: failed to req API:/nacos/v1/ns/instance after all servers([nacos:8848]) tried: java.net.UnknownHostException: nacos

这里的nacos:8848是配置文件指定的nacos访问名和访问端口

问题分析:seata和nacos所在的网络不一致

由于我在配置nacos的时候没有配置网络,导致nacos连接的是默认的网络bridge,而seata和Mysql连接的是后来自定义的网络,所以seata就不能直接通过容器的网络名称nacos进行连接因为他们不在同一个网络上。

那么问题来了:我可不可以修改seata的配置文件,直接通过ip+指定端口的方式访问nacos呢?

这我也试过了,报错nacos拒绝连接

问题解决:删除了nacos容器,并重新配置了nacos和seata所在的网路均为自定义的网络,依次启动后问题解决。

【注意】在启动顺序上,最好按照mysql->nacos->seata的顺序进行启动