docker 部署 Seata 分布式事务
在使用 Docker 部署 Seata 并与 Nacos 配置中心结合时,你可以通过以下步骤来实现。Seata 是一个开源的分布式事务解决方案,而 Nacos 是阿里巴巴开源的一个动态服务发现、配置和服务管理平台。
一、环境准备
- 部署好 mysql 服务
- 部署好 nacos 服务
二、部署 Seata
示例使用 Seata 版本 1.5.2
。由于 docker 官方仓库在国内已经无法使用,所以基础镜像使用了阿里云的。
2.1 创建配置
有两个方法可以拿到默认的配置文件:
2.1.1 从 Seata 开源仓库获取
可以克隆 https://gitee.com/seata-io/seata
(这是国内的镜像仓库)到本地,配置文件目录在 server/src/main/resources
中。
2.1.2 从容器中获取
- 拉取镜像
docker pull ccr.ccs.tencentyun.com/shc-infrastructure/seata-server:1.5.2
- 启动容器 (只是为了拿配置)
docker run -d -p 8091:8091 -p 7091:7091 --name seata-server ccr.ccs.tencentyun.com/shc-infrastructure/seata-server:1.5.2
mkdir -p /docker-app/seata/config
docker cp seata-server:/seata-server/resources /docker-app/seata/config
这里就可以在宿主机的 /docker-app/seata/config
有以下文件了:
application.example.yml application.yml banner.txt io logback logback-spring.xml lua META-INF README.md README-zh.md
2.2 获取 Seata 配置集并存入 nacos
我们从 seata
仓库中获取 config.txt
,并修改其中 mysql
数据库配置。
https://gitee.com/seata-io/seata/blob/develop/script/config-center/config.txt
如果之前是使用 2.1.1
方式,可以直接在相应目录找到这个文件。
2.2.1 在 nacos 中创建命名空间
在 nacos 中创建命名空间 seata
。
2.2.2 在 nacos 中创建配置
修改 config.txt 中的数据库配置。
...
# 使用db而不是默认的file
store.mode=db
# 修改数据库配置信息,这里的数据库后面会导入 (将数据库的账号密码及名字改对)
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://172.17.0.1:3306/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.user=root
store.db.password=123456
...
在 nacos 配置管理中,给命名空间 seata
中添加配置 seataServer.properties
, Group 设置为 SEATA_GROUP
,并将 config.txt 的内容全部复制进来:
2.3 数据库初始化
在上面的 2.2.2
中我们指定了数据库,所以我们需要创建一个 seata
的数据库:
https://gitee.com/seata-io/seata/blob/develop/script/server/db/mysql.sql
执行这个 sql 脚本进行数据库初始化。
2.3 配置 application.yml
server:
port: 7091
spring:
application:
name: seata-server # 在nacos中配置的seata-server的名称
logging:
config: classpath:logback-spring.xml
file:
path: ${user.home}/logs/seata
extend:
logstash-appender:
destination: 127.0.0.1:4560
kafka-appender:
bootstrap-servers: 127.0.0.1:9092
topic: logback_to_logstash
console:
user:
username: seata
password: seata
seata:
config:
# support: nacos, consul, apollo, zk, etcd3
type: nacos # 使用nacos作为配置中心
nacos:
server-addr: 172.17.0.1:8848 # seata访问nacos ,属于容器与容器的访问
group: SEATA_GROUP # 指定配置文件在 nacos 中所属的分组
namespace: seata # 指定配置文件在 nacos 中的命名空间
username: nacos
password: nacos
data-id: seataServer.properties # 指定配置文件在 nacos 中的名称
registry:
# support: nacos, eureka, redis, zk, consul, etcd3, sofa
type: nacos
nacos: # 同register
application: seata-server
server-addr: 172.17.0.1:8848
group: SEATA_GROUP
namespace: seata
cluster: default
username: nacos
password: nacos
store:
# support: file 、 db 、 redis
mode: file
# server:
# service-port: 8091 #If not configured, the default is '${server.port} + 1000'
security:
secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
tokenValidityInMilliseconds: 1800000
ignore:
urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login
修改好配置文件后待用。
标签:seata,nacos,server,docker,分布式,config,Seata From: https://www.cnblogs.com/yangyxd/p/18684284