1. 问题阐述
在使用Kubernetes(K8s)环境进行Seata-Server服务部署的过程中,出现了一个重要问题:在Nacos上注册的IP地址实际为K8s实例的地址,而非预期的负载地址。此种配置误差导致客户端在尝试连接服务端时,会错误地访问到实例地址,而不是预期的服务端,从而出现Seata无法连接服务端的问题。
2. 初步解决尝试与遭遇的挑战
在最初使用Seata 1.4.2版本的过程中,根据官方提供的建议,尝试在启动命令行中添加-h
参数以及其后的IP地址,以便改变注册中心的注册IP地址。虽然这种解决方案在本地环境测试时表现良好,但在将服务部署到K8s环境时,发现Nacos的IP地址并未发生改变。
3. 解决方案及实施步骤
为解决此问题,采取了新的策略,即使用了一个官方提供的高版本Docker镜像,版本号为1.7-SNAPSHOT-slim。根据官方文档,此版本镜像允许通过环境变量SEATA_IP
来改变注册中心的IP地址。
然而,此Docker镜像在启动时默认加载官方预设的配置文件,这并不能适用于所有用户需求。因此,依据官方的自定义配置建议,进行了以下步骤:
-
将Docker镜像中的
/seata-server/resources
文件夹复制出来 -
对其中的
application.yml
文件进行修改server: port: 7091 spring: application: name: seata-server logging: config: classpath:logback-spring.xml file: path: ${user.hom