Seata安装
Seata本地化部署
直接部署:
- 在RELEASE页面下载相应版本并解压
- 直接启动
在 Linux/Mac 下
$ sh ./bin/seata-server.sh
在 Windows 下
bin\seata-server.bat
高可用部署:
Seata的高可用依赖于注册中心、配置中心和数据库来实现。使用nacos和redis为例
解压seata-server-1.4.2安装包。
1、修改registry.conf
修改conf文件夹中registry.conf的注册中心和配置中心配置
需要修改的参数:
serverAddr: nacos的地址, 端口 可不设置,默认8848
namespace:nacos中的命名空间
dataId:nacos中添加的配置文件名称
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "nacos"
nacos {
application = "seata-server"
serverAddr = "127.0.0.1:8848"
group = "SEATA_GROUP"
namespace = "seata"
cluster = "default"
username = ""
password = ""
}
}
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos"
nacos {
serverAddr = "127.0.0.1:8848"
namespace = "seata"
group = "SEATA_GROUP"
username = ""
password = ""
dataId = "seataServer.properties"
}
}
2、Nacos中添加配置文件
- 新增seata命名空间
进入命名空间管理页面,新增命名空间,命名空间ID建议手写,配置文件中会用到。详细配置信息参考下图所示:
- nacos中添加配置文件
进入配置管理-配置列表,切换到新建的命名空间中,点击新建配置,DataId为seataServer.properties 分组为SEATA_GROUP
需要添加到配置中心的以下几个配置(含db与redis,二者选其一 注:redis需seata-server 1.3版本及以上)
service.vgroupMapping.my_tx_group=default
store.mode=redis
-----db-----
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true
store.db.user=root
store.db.password=root
----redis----
store.redis.host=127.0.0.1
store.redis.port=6379
store.redis.maxConn=10
store.redis.minConn=1
store.redis.database=0
store.redis.password=123456
store.redis.queryLimit=100
----client----
client.undo.logTable=undo_log
- db模式需要在数据库创建
- global_table、branch_table、lock_table表
建表sql资源目录: https://github.com/seata/seata/tree/1.4.0/script/server/db
3、启动
-
windows:bin目录下双击seata-server.bat启动
-
linux:命令行启动 seata-server.sh -h 127.0.0.1 -p 8091
启动参数:
-h: 注册到注册中心的ip
-p: Server rpc 监听端口
-m: 全局事务会话信息存储模式,file、db、redis,优先读取启动参数 (Seata-Server 1.3及以上版本支持redis)
-n: Server node,多个Server时,需区分各自节点,用于生成不同区间的transactionId,以免冲突
-e: 环境配置
Docker部署
拉取1.4.2版本镜像:
docker pull seataio/seata-server:1.4.2
直接部署:
docker run --name seata-server -p 8091:8091 seataio/seata-server:1.4.2
高可用部署:
依赖于注册中心、配置中心和数据库来实现。
存储模式:redis、注册中心:nacos、配置中心:nacos
1、自定义配置文件:
创建registry.conf
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "nacos"
nacos {
application = "seata-server"
serverAddr = "nacos:8848"
group = "SEATA_GROUP"
namespace = "SEATA"
cluster = "default"
username = ""
password = ""
}
}
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos"
nacos {
serverAddr = "nacos:8848"
namespace = "SEATA"
group = "SEATA_GROUP"
username = ""
password = ""
dataId = "seataServer.properties"
}
}
修改nacos的地址,而命名空间、分组、配置文件dataId使用默认即可。
上传 registry.conf 到服务器到自定义路径 如 /opt/seata/config
2、nacos中添加配置文件
- nacos中添加命名 seata
- 添加配置文件seataServer.properties
使用新建的seata命名空间,分组为SEATA_GROUP。
service.vgroupMapping.my_tx_group=default
store.mode=redis
-----db-----
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true
store.db.user=root
store.db.password=root
----redis----
store.redis.host=redis
store.redis.port=6379
store.redis.maxConn=10
store.redis.minConn=1
store.redis.database=0
store.redis.password=root
store.redis.queryLimit=100
----client----
client.undo.logTable=undo_log
修改redis/db的地址、密码等参数
3、启动seata
自定义配置文件需要通过挂载文件的方式实现,将宿主机上的 registry.conf 和 file.conf 挂载到容器中相应的目录
使用自定义配置文件时必须指定环境变量 SEATA_CONFIG_NAME, 并且值需要以file:开始, 如: file:/root/seata-config/registry
指定seata-server IP 为服务器IP,若服务器外部网络无法穿透服务器访问docker,将seata-server IP指定为服务器IP。该IP用于向注册中心注册时使用, 如nacos等
docker run -d --name seata-server \
-p 8091:8091 \
--link nacos:nacos \
--link redis:redis \
-e SEATA_CONFIG_NAME=file:/root/seata-config/registry \
-e SEATA_IP=192.168.127.48 \
-v /root/seata/config:/root/seata-config \
seataio/seata-server:1.4.2
其中 -e 用于配置环境变量, -v 用于挂载宿主机的目录
容器命令行及查看日志
$ docker exec -it seata-server sh
$ docker logs -f seata-server
seata在springboot项目的应用教程见此文章:分布式事务Seata详细使用教程