在部署一个开源项目时,本地调试遇到seata的服务一直没有找到,于是开始排查。
首先是将所有组件docker-compose发布到云服务器,接下来本地启动应用,控制台一直报错。
ERROR 2968 --- [eoutChecker_1_1] i.s.c.r.netty.NettyClientChannelManager : no available service found in cluster 'default', please make sure registry config correct and keep your seata server running
这个问题就是seata服务端没有正确启动,随即到服务器上查看启动日志,排查问题。
在部署时发现seata一直注册不到nacos上,然后导致了本地应用检测不到SEATA_GROUP而产生报错。
那首先定位问题就是服务端发布的有问题
然后就重新部署发布,使用命令
docker-compose up --build
查看启动日志,首先发现mysql的问题,Operation not permitted
,经过一番google,这个问题大概是因为mysql8的版本在docker上部署,会有安全校验,具体解决方法就是在docker-compose.yaml
中mysql服务添加参数
security_opt:
- seccomp:unconfined
重新启动后正常,但是这不是造成seata启动错误的原因,根本问题仍未解决
seata在启动之后,根据registry.conf的配置注册到nacos
mall4cloud-seata | 02:25:03.680 INFO --- [ main] i.s.core.rpc.netty.NettyServerBootstrap : Server started, listen port: 8091
mall4cloud-seata | 02:25:03.804 ERROR --- [ main] io.seata.server.Server : nettyServer init erro