Docker 安装 Seata
Seata 官网:https://seata.io/zh-cn/index.html
Docker Hub 镜像仓库:https://hub.docker.com/r/seataio/seata-server
拉取 seataio/seata-server:latest 镜像
docker pull seataio/seata-server
快速运行
docker run --name seata-server -p 8091:8091 -d seataio/seata-server:latest
配置Nacos
拷贝配置YAML
docker cp seata-server:/seata-server/resources /usr/local/workspace/seata/resources
修改配置YAML
server:
port: 7091
spring:
application:
name: 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: admin
password: admin
seata:
config:
# support: nacos, consul, apollo, zk, etcd3
type: nacos
nacos:
server-addr: IP:8848
group: SEATA_GROUP
namespace: namespaceId
username: nacos
password: nacos
registry:
# support: nacos, eureka, redis, zk, consul, etcd3, sofa
type: nacos
nacos:
application: seata-server
server-addr: IP:8848
group: SEATA_GROUP
namespace: namespaceId
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
初始化 Nacos 的 Seata 配置
下载源码:https://github.com/seata/seata
参考:https://github.com/seata/seata/tree/develop/script/config-center
sh ${SEATAPATH}/script/config-center/nacos/nacos-config-interactive.sh
提示1:缺少配置项:service.vgroupMapping.default,自行增加到nacos中。
Data id: service.vgroupMapping.default
Group: SEATA_GROUP
配置内容: default
提示2:我这里出现了序列化问题,修改配置:client.undo.logSerialization
Data id: client.undo.logSerialization
Group: SEATA_GROUP
配置内容: kryo
项目引用 kryo 依赖包。注意版本号对应,避免依赖包包冲突。我这里使用的是 seata-server-1.4.2
<dependency>
<groupId>com.esotericsoftware</groupId>
<artifactId>kryo</artifactId>
<version>4.0.2</version>
</dependency>
<dependency>
<groupId>de.javakaffee</groupId>
<artifactId>kryo-serializers</artifactId>
<version>0.42</version>
</dependency>
运行Seata注册到Nacos
docker run -d --name seata -p 8091:8091 \
-e SEATA_CONFIG_NAME=file:/seata-server/registry.conf \
-e SEATA_IP=IP \
-e SEATA_PORT=8091 \
-v /usr/local/workspace/seata/resources:/seata-server/resources \
--restart always seataio/seata-server
业务数据库增加表
CREATE TABLE `undo_log`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`branch_id` bigint(20) NOT NULL,
`xid` varchar(100) NOT NULL,
`context` varchar(128) NOT NULL,
`rollback_info` longblob NOT NULL,
`log_status` int(11) NOT NULL,
`log_created` datetime NOT NULL,
`log_modified` datetime NOT NULL,
`ext` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ux_undo_log` (`xid`, `branch_id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1
DEFAULT CHARSET = utf8;
