准备工作:
查看版本对应关系,地址:spring-cloud-alibaba版本说明
下载对应版本seata安装包,地址:seata的github
下载对应版本seata的相关脚本文件,地址:github
修改seata安装包中conf文件夹的内容
vim conf/file.conf
## transaction log store, only used in seata-server
store {
## store mode: file、db、redis
mode = "db"
## database store property
db {
## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp)/HikariDataSource(hikari) etc.
datasource = "druid"
## mysql/oracle/postgresql/h2/oceanbase etc.
dbType = "mysql"
driverClassName = "com.mysql.cj.jdbc.Driver"
url = "jdbc:mysql://mysql:3306/seata"
user = "root"
password = "123456"
minConn = 5
maxConn = 30
globalTable = "global_table"
branchTable = "branch_table"
lockTable = "lock_table"
queryLimit = 100
maxWait = 5000
}
}
vim conf/registry.conf
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "nacos"
nacos {
application = "seata-server"
serverAddr = "nacos:8848"
group = "SEATA_GROUP"
namespace = "fd-seata"
cluster = "default"
username = "nacos"
password = "123456"
}
}
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos"
nacos {
serverAddr = "nacos:8848"
namespace = "fd-seata"
group = "SEATA_GROUP"
username = "nacos"
password = "123456"
}
}
导入seata配置文件到nacos
vim script/config-center/config.txt
store.db相关进行配置
transport.type=TCP
transport.server=NIO
transport.heartbeat=true
transport.enableClientBatchSendRequest=false
transport.threadFactory.bossThreadPrefix=NettyBoss
transport.threadFactory.workerThreadPrefix=NettyServerNIOWorker
transport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandler
transport.threadFactory.shareBossWorker=false
transport.threadFactory.clientSelectorThreadPrefix=NettyClientSelector
transport.threadFactory.clientSelectorThreadSize=1
transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThread
transport.threadFactory.bossThreadSize=1
transport.threadFactory.workerThreadSize=default
transport.shutdown.wait=3
service.vgroupMapping.shandong=default
service.default.grouplist=127.0.0.1:8091
service.enableDegrade=false
service.disableGlobalTransaction=false
client.rm.asyncCommitBufferLimit=10000
client.rm.lock.retryInterval=10
client.rm.lock.retryTimes=30
client.rm.lock.retryPolicyBranchRollbackOnConflict=true
client.rm.reportRetryCount=5
client.rm.tableMetaCheckEnable=false
client.rm.sqlParserType=druid
client.rm.reportSuccessEnable=false
client.rm.sagaBranchRegisterEnable=false
client.tm.commitRetryCount=5
client.tm.rollbackRetryCount=5
client.tm.degradeCheck=false
client.tm.degradeCheckAllowTimes=10
client.tm.degradeCheckPeriod=2000
store.mode=db
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://mysql:3306/seata?useUnicode=true
store.db.user=root
store.db.password=123456
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000
server.recovery.committingRetryPeriod=1000
server.recovery.asynCommittingRetryPeriod=1000
server.recovery.rollbackingRetryPeriod=1000
server.recovery.timeoutRetryPeriod=1000
server.maxCommitRetryTimeout=-1
server.maxRollbackRetryTimeout=-1
server.rollbackRetryTimeoutUnlockEnable=false
client.undo.dataValidation=true
client.undo.logSerialization=jackson
client.undo.onlyCareUpdateColumns=true
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000
client.undo.logTable=undo_log
client.log.exceptionRate=100
transport.serialization=seata
transport.compressor=none
metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898
-t 指定命名空间,修改成你自己的
sh ${SEATAPATH}/script/config-center/nacos/nacos-config.sh -h nacos -p 8848 -g SEATA_GROUP -t fd-seata -u nacos -w 123456
初始化mysql数据库表结构
建表语句在scrept/server/db/mysql.sql
将seata安装包中conf文件夹的内容复制到挂在目录/home/nfs/seata/conf
Dockerfile
#基础镜像
FROM seataio/seata-server:1.3.0
EXPOSE 8091
deploy.yaml
#命名空间
apiVersion: v1
kind: Namespace
metadata:
name: fandai
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: seata
namespace: fandai
spec:
replicas: 1
selector:
matchLabels:
app: seata
template:
metadata:
labels:
app: seata
spec:
containers:
- name: seata
image: seataio/seata-server:1.3.0
env:
- name: SEATA_CONFIG_NAME
value: "file:/root/seata-config/registry"
- name: SEATA_IP
value: "seata"
- name: SEATA_PORT
value: "8091"
volumeMounts:
- name: seata
mountPath: /root/seata-config
volumes:
- name: seata
nfs:
server: fandai-nfs
path: /home/nfs/seata/conf
---
apiVersion: v1 # 资源版本
kind: Service # 资源类型
metadata: # 元数据
name: seata # 资源名称
namespace: fandai # 命名空间
spec: # 描述
selector: # 标签选择器,用于确定当前service代理哪些pod
app: seata
type: NodePort # service类型
ports: # 端口信息
- protocol: TCP
name: seata
port: 8091 # service端口
targetPort: 8091 # pod端口