一、下载seata服务包,这里通过GitHub下载,本文下载1.1.0版本
https://github.com/seata/seata/releases/download/v1.1.0/seata-server-1.1.0.tar.gz
解压后目录结构如下:
二、修改conf下的两个配置文件 ,TC服务分单机和集群模式,默认单机 file类型模式,我们需要配置成集群多节点,和集成nacos,所以修改其两个配置文件。
1. 修改file.conf文件如下,mode 改为 db模式
2. 修改注册中心配置,文件为 registry.conf ,如下有两个地方需要修改,一个是registry和config
三、因为要使用到nacos作为配置中心并且使用db的集群模式,那么就不会用到2.1中file.conf中的配置,需要手动把TC服务中的配置初始化到nacos中,那么初始化配置文件从哪里来,参考如下:
1. 从GitHub上面下载一份1.1.0版本的源码,download Zip包就行
2. 解压后进入 \seata-1.1.0\script\config-center 目录结构如下:
我们使用的nacos,初始化脚本命令 都在nacos目录下,进入nacos目录下 ,运行下面命令即可。
sh nacos-config.sh localhost:8848
我的nacos安装在同一台机器,所以用的localhost, 其他请做修改。
四、配置存入配置中心nacos后,进入nacos,修改其中的默认配置,主要是修改 store. 开头的配置项,
比如存储模式:store.mode
数据库连接信息:store.db.url store.db.user store.db.password
对应的信息在上面第二点中都有配置过,请仔细核对。
五、创建Seata TC数据库(这一步可以放到之前的任何地方做),数据库名称 seata
DROP TABLE IF EXISTS `branch_table`;
CREATE TABLE `branch_table` (
`branch_id` bigint(20) NOT NULL,
`xid` varchar(128) NOT NULL,
`transaction_id` bigint(20) DEFAULT NULL,
`resource_group_id` varchar(32) DEFAULT NULL,
`resource_id` varchar(256) DEFAULT NULL,
`branch_type` varchar(8) DEFAULT NULL,
`status` tinyint(4) DEFAULT NULL,
`client_id` varchar(64) DEFAULT NULL,
`application_data` varchar(2000) DEFAULT NULL,
`gmt_create` datetime(6) DEFAULT NULL,
`gmt_modified` datetime(6) DEFAULT NULL,
PRIMARY KEY (`branch_id`),
KEY `idx_xid` (`xid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for global_table
-- ----------------------------
DROP TABLE IF EXISTS `global_table`;
CREATE TABLE `global_table` (
`xid` varchar(128) NOT NULL,
`transaction_id` bigint(20) DEFAULT NULL,
`status` tinyint(4) NOT NULL,
`application_id` varchar(32) DEFAULT NULL,
`transaction_service_group` varchar(32) DEFAULT NULL,
`transaction_name` varchar(128) DEFAULT NULL,
`timeout` int(11) DEFAULT NULL,
`begin_time` bigint(20) DEFAULT NULL,
`application_data` varchar(2000) DEFAULT NULL,
`gmt_create` datetime DEFAULT NULL,
`gmt_modified` datetime DEFAULT NULL,
PRIMARY KEY (`xid`),
KEY `idx_gmt_modified_status` (`gmt_modified`,`status`),
KEY `idx_transaction_id` (`transaction_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for lock_table
-- ----------------------------
DROP TABLE IF EXISTS `lock_table`;
CREATE TABLE `lock_table` (
`row_key` varchar(128) NOT NULL,
`xid` varchar(96) DEFAULT NULL,
`transaction_id` bigint(20) DEFAULT NULL,
`branch_id` bigint(20) NOT NULL,
`resource_id` varchar(256) DEFAULT NULL,
`table_name` varchar(32) DEFAULT NULL,
`pk` varchar(36) DEFAULT NULL,
`gmt_create` datetime DEFAULT NULL,
`gmt_modified` datetime DEFAULT NULL,
PRIMARY KEY (`row_key`),
KEY `idx_branch_id` (`branch_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
六、集群启动,进入Linux seata解压目录下,也就是第一点目录下
1. 启动第一个节点
[root@localhost seata]# nohup sh bin/seata-server.sh -p 18091 -n 1 &
执行 nohup sh bin/seata-server.sh -p 18091 -n 1 & 命令,启动第一个 TC Server 在后台。
-p:Seata TC Server 监听的端口。
-n:Server node。在多个 TC Server 时,需区分各自节点,用于生成不同区间的 transactionId 事务编号,以免冲突
2. 启动第二个节点
执行 nohup sh bin/seata-server.sh -p 28091 -n 2 & 命令,启动第二个 TC Server 在后台
七、验证集群是否成功
去nacos控制页面查询服务列表,是否有两个健康节点
至此,seata 集群模式部署完毕。欢迎指正!