Seata部署(Centos和Docker)

Docker安装Seata 启动一个临时容器【通过创建一个临时的测试容器,用来复制配置文件,来反推配置】 Seata运行在docker容器中对应的目录如下: 移除临时容器 配置数据源 Seata-Server端存储模式(store.mode)现有file、db、redis三种,file模式无需改动,直接启动即可。 注: file模式为单机模式,全局事务会话信息内存中读写并持久化本地文件root.data,性能较高;如果是seata分布式集群时推荐使用Redis或者DB模式,,步骤如下: 在库中运行脚本:【Seata提供的MySQ 阅读详情

一、简介

Seata 是一款开源的分布式事务框架。致力于在微服务架构下提供高性能和简单易用的分布式事务服 务。在 Seata 开源之前,Seata 对应的内部版本在阿里经济体内部一直扮演着分布式一致性中间件的⻆ 色,帮助经济体平稳的度过历年的双11,对各业务单元业务进行了有力的支撑。经过多年沉淀与积累, 商业化产品先后在阿里云、金融云进行售卖。2019.1 为了打造更加完善的技术生态和普惠技术成果, Seata 正式宣布对外开源,未来 Seata 将以社区共建的形式帮助其技术更加可靠与完备。

Seata:https://seata.io/zh-cn/index.html

seata的github地址:https://github.com/seata/seata

Seata产品模块

Seata 中有三大模块,分别是 TM、RM 和 TC。其中 TM 和 RM 是作为 Seata 的客户端与业务系统集成在一起,TC 作为 Seata 的服务端独立部署。

  • TC (Transaction Coordinator) - 事务协调者维护全局和分支事务的状态,驱动全局事务提交或回滚。

  • TM (Transaction Manager) - 事务管理器 定义全局事务的范围:开始全局事务、提交或回滚全局事务。

  • RM (Resource Manager) - 资源管理器 管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

二、部署

1. Centos部署Seata

1)下载

Seata Server 就是 TC,直接从官方仓库下载启动即可,下载地址:https://github.com/seata/seata/releases

下载后将安装包解压到CENTOS的目录下。

[root@docker_124 seata]# ls
bin  conf  Dockerfile  ext  lib  LICENSE  logs  script  target
2)准备数据库

此处使用MySQL,表初始化脚本在安装包的/script/server/db目录下,对应脚本是mysql.sql

[root@docker_124 db]# pwd
/data/seata/script/server/db
[root@docker_124 db]# ls
mysql.sql  oracle.sql  postgresql.sql
[root@docker_124 db]#

创建数据库seata并执行脚本 ,步骤略。

3)配置NACOS

创建nacos配置,dataId seataserver.properties,Group SEATA_GROUP

修改配置,填入存储配置,因为我即将配置的存储是Mysql,所以只需要复制数据库配置,配置在 https://github.com/seata/seata/blob/develop/script/config-center/config.txt 文本中复制

#These configurations are required if the `store mode` is `db`. If `store.mode,store.lock.mode,store.session.mode` are not equal to `db`, you can remove the configuration block.
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&rewriteBatchedStatements=true
store.db.user=username
store.db.password=password
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.distributedLockTable=distributed_lock
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000

每一项配置的介绍参考文档链接 https://seata.io/zh-cn/docs/user/configurations.html

4)修改配置文件

修改软件conf目录下的application.yml配置(旧版的配置可能是类似json的配置,我这新版的是yaml),同目录中提供了application.example.yml 样例以供参考

#  Copyright 1999-2019 Seata.io Group.
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#  http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

# 服务商品
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
# 控制台的用户名密码,类似nacos
console:
  user:
    username: seata
    password: seata
seata:
	# 配置中心,使用nacos,并配置nacos的地址等
  config:
    # support: nacos, consul, apollo, zk, etcd3
    type: nacos
    nacos:
      server-addr: http://10.4.7.1:8848
      # namespace: 7392baed-d98b-48a4-8676-34e1b38eade6
      namespace: e2df44d5-bd8e-4135-9314-7315f633077e
      group: SEATA_GROUP
      username: nacos
      password: nacos
      ##if use MSE Nacos with auth, mutex with username/password attribute
      #access-key: ""
      #secret-key: ""
      data-id: seataServer.properties
  # 注册中心,使用nacos,并配置
  registry:
    # support: nacos, eureka, redis, zk, consul, etcd3, sofa
    type: nacos
    nacos:
      server-addr: http://10.4.7.1:8848
      # namespace: 7392baed-d98b-48a4-8676-34e1b38eade6
      namespace: e2df44d5-bd8e-4135-9314-7315f633077e
      group: SEATA_GROUP
      username: nacos
      password: nacos
      ##if use MSE Nacos with auth, mutex with username/password attribute
      #access-key: ""
      #secret-key: ""
      data-id: seataServer.properties
  # 存储,使用db,在nacos中配置了数据库的信息
  store:
    # support: file 、 db 、 redis
    mode: db
#  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,/**/*.jpeg,/**/*.ico,/api/v1/auth/login
5)启动

配置好后就可以执行bin目录下的seata-server.sh脚本进行启动了。启动好以后访问http://ip:7091使用seata/seata即可进行登录

如果 启动有问题,可以查看 seata/logs/start.out进行排查

本次配置和启动的过程中遇到了一些问题:

  • mysql 因为dockerhub突然的失灵所以必须重新安装,重新配置远程访问权限,导致一些连不上mysql的问题
  • 配置application.yml时,config配置了nacos以及nacos相关的配置,但是registry虽然type配置了nacos,但是并没有配置nacos的详细配置信息,导致日志中报localhost:8848无法访问的问题。

2. Docker部署Seata

官方文档在这里,也很详细

http://seata.io/zh-cn/docs/ops/deploy-by-docker.html

1)准备数据库与nacos

这部分与centos相同,步骤省略

2)下载镜像及启动

下载镜像,可以在docker hub上搜索镜像,不要用默认的latest,有可能不是release版本,jdk也可能不一样。

我选择的是 1.6.1版本

[root@docker_124 conf]# docker pull seataio/seata-server:1.6.1
1.6.1: Pulling from seataio/seata-server
001c52e26ad5: Pull complete
d9d4b9b6e964: Pull complete
2068746827ec: Pull complete
9daef329d350: Pull complete
d85151f15b66: Pull complete
52a8c426d30b: Pull complete
8754a66e0050: Pull complete
5ed2ec2d6ee2: Pull complete
b71086c56a63: Pull complete
1181f8e565af: Pull complete
6d058363682a: Pull complete
adc1f51855c8: Pull complete
5b571cda842d: Pull complete
Digest: sha256:07796d3dff51cc34f4980d55ecde87c5271a34824fe1eeea9ddb57dbfee6b9e6
Status: Downloaded newer image for seataio/seata-server:1.6.1
docker.io/seataio/seata-server:1.6.1

ps: 我在mac上面下载镜像时还出了一点小插曲,我的vmware中可以正常docker pull镜像,但是在mac中总是retry,不知道为什么,于是我使用docker save -o seata-server-1.6.1.tar seataio/seata-server:1.6.1命令把镜像从虚拟机中导出,然后在mac中使用docker import seata-server-1.6.1.tar seataio/seata-server:1.6.1进行镜像导入。

启动一个临时的seata容器然后将配置文件从容器中拷贝到本机目录中

# 启动临时seata容器
docker run -d --name seata-serve seataio/seata-server:latest
# 导出配置文件
docker cp seata-serve:/seata-server/resources /Users/jiangwujie/files/docker-data/seata/config/resources

修改application.yml,修改nacos和db配置与centos配置相同

使用本地目录映射seata容器的配置目录,启动seata 容器

docker run -d --name seata-server -p 8091:8091 -p 7091:7091 -v /Users/jiangwujie/files/docker-data/seata/config/resources:/seata-server/resources seataio/seata-server:1.6.1

如果未启动成功,则可以通过docker logs containerId 查看日志。

我这由于 nacos 和 mysql都是在docker中启动的,而seata容器中要连接另外两个docker容器中的 nacos和mysql,需要知道nacos和mysql在docker 通信中的ip是多少,有一个简单的方法:在容器内执行 ip route 命令,default via 后面跟着的 IP 就是宿主机的 IP。

docker run --rm busybox ip route
default via 172.17.0.1 dev eth0
172.17.0.0/16 dev eth0 scope link  src 172.17.0.6

这样,在seata中配置的nacos和mysql的地址就分别为 172.17.0.1:8848 和172.17.0.1:3306了。

docker正常启动以后,即可通过 http://localhost:7091访问seata控制台。

参考文档:

  • docker 部署seata

    http://seata.io/zh-cn/docs/ops/deploy-by-docker.html

  • 导入导出镜像容器

    https://blog.youkuaiyun.com/u010797364/article/details/120430270

  • Docker下Nacos通过MySQL实现持久化

    https://blog.youkuaiyun.com/Fyf_010316/article/details/103816599

  • docker 连接宿主机的 MySQL

    https://blog.youkuaiyun.com/xs18952904/article/details/106518424

centos安装seata1.7教程 centos安装seata1.7 阅读详情

相关推荐

seata部署与分布式事务配置

seata部署与分布式事务配置seata-server服务端下载服务端持久化配置服务端注册中心配置二级目录三级目录 seata-server 服务端下载 在官网下载server端:https://github.com/seata/seata/releases 解压后得到seata-server-1.4.2文件夹,需要首先配置相关参数,配置文件位于conf文件夹下,分别需配置两个配置文件: file.conf和register.conf 服务端持久化配置 本文选择MySQL数据库作为持久化方案,新建seat

yorao4565的博客 479

Docker 部署 Seata (图文并茂超详细)

拉取 Seata 镜像:首先,从 Docker Hub 拉取 Seata 的官方镜像。 启动 Seata Server 容器:通过命令行启动 Seata Server 容器。可以配置端口、日志存储路径以及事务管理模式等参数。通常,Seata 需要与数据库结合使用,因此在启动时需要指定数据库连接信息。 配置持久化:为了确保事务日志的持久性,可以将 Seata 的日志目录挂载到主机文件系统中。这样,即使容器重启或删除,事务数据也不会丢失。 集成到微服务:将 Seata Server 的地址配置到各个微服务

人生需要动态规划 学习需要贪心算法 6153

CentOS安装Docker,及Docker部署常见容器

[目标位置]/seata/application.ymlseata:# 配置中心-nacosconfig:nacos:server-addr: [nacos地址]:8848namespace:# 注册中心-nacosregistry:nacos:server-addr: [nacos地址]:8848namespace:cluster: default # TC 集群名称,下文 Seata 客户端中配置事务分组名和集群名映射使用。

weixin_71639702的博客 2805

手把手教你,docker安装seata

docker安装seata

qq_31671187的博客 8728

docker部署安装Seata服务

该文件 application.yml 在 seata 项目的 seata\conf\application.yml 目录下,以及配置案例文件(application.example.yml)2、在nacos配置中心,创建 seata-server.properties 或 seata-server.yml 配置文件。【1】脚本可以在我们前面下载的seata项目包的 seata\script\server\db\mysql.sql 找到。【2】SEATA_IP:用于注册中心seata实例的ip。

hkl_Forever的博客 685

SpringCloud Alibaba系列——16Seata原理及应用

什么是分布式事务?分布式事务出现的背景是什么?分布式事务的理论基础是什么?什么是2PC理论和3PC理论?Seata中的核心概念是什么?Seata中的4种模式的区别?Seata server端的部署

Eclipse_2019的博客 504

docker-compose服务编排(mysql、redis、mongo、nacos、rabbitmq、kafka、fastdfs、minio、es、seata、yapi、jenkins)

docker-compose服务编排(mysql、redis、mongo、nacos、rabbitmq、kafka、fastdfs、minio、es、seata、yapi、jenkins)

一名小白的博客 1636

自动驾驶关键技术(一):时间敏感网络TSN

时间敏感网络TSN的基本概念、协议族介绍和开发流程。

3080

docker部署开发环境

使用docker部署应用

qq_44306975的博客 1174

告别枯燥的Unity编辑器脚本:Odin插件如何让游戏数据配置变得像搭积木一样简单?

本文详细介绍了Odin插件如何简化Unity编辑器脚本开发,使游戏数据配置变得直观高效。通过声明式特性和丰富的可视化工具,Odin让开发者告别繁琐的OnGUI代码,实现所见即所得的开发体验。文章重点展示了Odin的核心优势、魔法特性及实战案例,帮助Unity开发者提升工作效率。

weixin_28717411的博客 345

智能汽车竞赛摄像头处理(4)——摄像头循迹思路讲解

智能汽车竞赛摄像头处理(4)对摄像头循迹思路进行讲解。

weixin_62261692的博客 7059

docker_centos8 java开发环境镜像制作

获取centos镜像 docker pull centos 创建容器 docker run -itd --privileged -p 20010:22 --name="centos" centos /usr/sbin/init 运行容器 docker start centos/docker start c2318d020e8c 进入容器 docker exec -it --user root c2318d020e8c /bin/bash 工具安装 yum install vim yum instal...

CTLLIN的专栏 1696

C# 实现 Modbus 通信全教程(支持 TCP 和 RTU,含完整错误处理)

环境准备:安装 NModbus4 库,明确设备参数(IP/串口、地址、数据类型);连接设备:TCP 用 TcpClient,RTU 用 SerialPort,注意超时和参数匹配;读写数据:根据数据类型调用对应方法(读保持寄存器用 ReadHoldingRegisters);错误处理:捕获连接、超时、协议等异常,针对性排查问题。掌握这些后,即可轻松实现与工业设备的 Modbus 通信,为上位机开发提供稳定的数据交互能力。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 2068

微服务系统架构搭建一:环境搭建

微服务系统搭建一:环境搭建

qq_34790227的博客 816

【QT开发教程】Qt中的跨平台文件系统操作

文件系统操作是应用程序开发中经常需要处理的任务。Qt提供了一套跨平台的文件系统操作API,使开发者能够在不同操作系统上无缝地进行文件和目录操作。本文将介绍Qt中的跨平台文件系统操作,包括基本概念、常用类和方法以及实际示例。

科技改变人类,技术成就未来 981

【x265编码器】章节1——x265的lookahead模块分析

目录一、模块功能二、lookahead模块分析1.调用流程2.代码分析Lookahead::addPicture()Lookahead::checkLookaheadQueue()Lookahead::getDecidedPicture()Lookahead::findJob()Lookahead::slicetypeDecide()PreLookaheadGroup::processTasksLookaheadTLD::lowresIntraEstimate()Lookahead::slicetypeAn

vcvdv123的博客 4万+

微服务架构从0到1,搭建全过程记录,手把手教学,连载中...

准备Linux主机 centos7.9虚拟机安装,设置磁盘挂载 架构设计 微服务高性能高可用架构设计 安装Keepalived 如需关闭防火墙(不建议): # 关闭 systemctl stop firewalld # 禁止开机启动防火墙 systemctl disable firewalld 用yum的方式安装 yum install keepalived 配置主主机 使用yum安装后配置文件在 /etc/keepalived/keepalived.conf 配置文件内容很多,全部删掉替换成下面的,

学过的东西,讲不出来等于没学。 1426

Onnxruntime之YOLOP部署过程记录

魔改YoloP部署过程记录

如果想成为中心,那么就到中心去吧。 1927

centos7 docker部署seata整合nacos(配置及服务注册均在nacos)

注意事项 seata不能在nacos创建命名空间,需手动在nacos创建命名空间, 修改seata的配置文件,因直接在nacos读取配置,file相关无需修改。 Seata服务注册配置 seata配置 github复制seata建表语句,seata的config.txt以及相应脚本,若配置持久化到DB修改config.txt中DB等信息。执行 sh nacos-config.sh -h localhost -p 8848 -t命名空间ID -u nacos -w na...

俗语的博客 494

2023年全国青少年信息素养大赛复赛真题(C++智能算法复赛真题:带解析)

2023年全国青少年信息素养大赛复赛真题(C++智能算法复赛真题:带解析)

王老师青少年编程 2114

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

快速开发平台技术栈

Lgls快速开发平台以分布式微服务架构为基础,以表单引擎、流程引擎、报表引擎、报表引擎为核心实现快速开发平台。

模界 | AI工程化实践者 964

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Centos7 Docker部署seata-2.2.0

小子是一个小白,最近在学微服务,尝试手写教程。

2301_81991585的博客 1183

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

seata多版本下载地址以及docker安装docker

s​​​​​​​seata多版本下载地址https://sourceforge.net/projects/seata.mirror/files/v0.7.1/seata-server-0.7.1.zip/download

cm_pq的博客 1746

M1 Mac使用docker部署seata

配置文件复制出来后,修改其中的applilcation.yml文件,地址,密码,用户都改好,如图所示。随后停掉容器,移除掉重新启动容器,挂载好配置文件。如此seata便顺利启动了。

mengxin123454的博客 580

centos7-docker部署分布式事务服务seata1.2.0整合到nacos注册中心

前言:最近几天在捣鼓分布式事务的服务,最终发现阿里的seata分布式方案比较好,于是自己搭建,发现网上很多文章鱼龙混杂,甚至有点误人子弟,然后也根据官网配置参考了一下,自己作次记录方面以后查阅,顺便也让同好们,少踩点坑 seata官方文档链接 http://seata.io/zh-cn/docs/ops/deploy-guide-beginner.html 1.拉取官网最新的1.2.0版本的seata镜像,如果发现拉取速度贼慢,可以参考我以往解决方法 https://mp.youkuaiyun.com/co..

VincentGTX_huang的博客 1644

docker部署Elasticsearch、kibana、Nacos、Sentinel、seata、skywalking环境命令

docker部署Elasticsearch、kibana、Nacos、Sentinel、seata、skywalking环境命令

www_manong_com的博客 1102
上一篇: SpringMVC拦截器Interceptor导致跨越cors失效,Header获取不到
下一篇: Docker + MYSQL 启动nacos
不与天斗8866
博客等级 码龄18年 651粉丝 196原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值