首页 > 其他分享 >[docker] 部署 Seata 分布式事务

[docker] 部署 Seata 分布式事务

时间:2025-01-21 19:37:48浏览次数:1  
标签:seata nacos server docker 分布式 config Seata

docker 部署 Seata 分布式事务


在使用 Docker 部署 Seata 并与 Nacos 配置中心结合时,你可以通过以下步骤来实现。Seata 是一个开源的分布式事务解决方案,而 Nacos 是阿里巴巴开源的一个动态服务发现、配置和服务管理平台。

一、环境准备

  • 部署好 mysql 服务
  • 部署好 nacos 服务

二、部署 Seata

示例使用 Seata 版本 1.5.2。由于 docker 官方仓库在国内已经无法使用,所以基础镜像使用了阿里云的。

2.1 创建配置

有两个方法可以拿到默认的配置文件:

2.1.1 从 Seata 开源仓库获取

可以克隆 https://gitee.com/seata-io/seata (这是国内的镜像仓库)到本地,配置文件目录在 server/src/main/resources 中。

2.1.2 从容器中获取

  • 拉取镜像
docker pull ccr.ccs.tencentyun.com/shc-infrastructure/seata-server:1.5.2
  • 启动容器 (只是为了拿配置)
docker run -d -p 8091:8091 -p 7091:7091  --name seata-server ccr.ccs.tencentyun.com/shc-infrastructure/seata-server:1.5.2
mkdir -p /docker-app/seata/config
docker cp seata-server:/seata-server/resources /docker-app/seata/config

这里就可以在宿主机的 /docker-app/seata/config 有以下文件了:

application.example.yml  application.yml  banner.txt  io  logback  logback-spring.xml  lua  META-INF  README.md  README-zh.md

2.2 获取 Seata 配置集并存入 nacos

我们从 seata 仓库中获取 config.txt,并修改其中 mysql 数据库配置。

https://gitee.com/seata-io/seata/blob/develop/script/config-center/config.txt

如果之前是使用 2.1.1 方式,可以直接在相应目录找到这个文件。

2.2.1 在 nacos 中创建命名空间

在 nacos 中创建命名空间 seata

2.2.2 在 nacos 中创建配置

修改 config.txt 中的数据库配置。

...
# 使用db而不是默认的file
store.mode=db
# 修改数据库配置信息,这里的数据库后面会导入 (将数据库的账号密码及名字改对)
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://172.17.0.1:3306/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.user=root
store.db.password=123456
...

在 nacos 配置管理中,给命名空间 seata 中添加配置 seataServer.properties , Group 设置为 SEATA_GROUP,并将 config.txt 的内容全部复制进来:

2.3 数据库初始化

在上面的 2.2.2 中我们指定了数据库,所以我们需要创建一个 seata 的数据库:

https://gitee.com/seata-io/seata/blob/develop/script/server/db/mysql.sql

执行这个 sql 脚本进行数据库初始化。

2.3 配置 application.yml

server:
  port: 7091

spring:
  application:
    name: seata-server  # 在nacos中配置的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: seata
    password: seata

seata:
  config:
    # support: nacos, consul, apollo, zk, etcd3
    type: nacos  # 使用nacos作为配置中心
    nacos:
      server-addr: 172.17.0.1:8848  # seata访问nacos ,属于容器与容器的访问
      group: SEATA_GROUP # 指定配置文件在 nacos 中所属的分组
      namespace: seata # 指定配置文件在 nacos 中的命名空间
      username: nacos
      password: nacos
      data-id: seataServer.properties   # 指定配置文件在 nacos 中的名称
  registry:
    # support: nacos, eureka, redis, zk, consul, etcd3, sofa
    type: nacos
    nacos:  # 同register
      application: seata-server
      server-addr: 172.17.0.1:8848
      group: SEATA_GROUP
      namespace: seata
      cluster: default
      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

修改好配置文件后待用。

标签:seata,nacos,server,docker,分布式,config,Seata
From: https://www.cnblogs.com/yangyxd/p/18684284

相关文章

  • 图解Git——分布式Git《Pro Git》
    ​分布式工作流程CentralizedWorkflow(集中式工作流)​编辑所有开发者都与同一个中央仓库同步代码,每个人通过拉取、提交来合作。如果两个开发者同时修改了相同的文件,后一个开发者必须在推送之前合并其他人的更改。Integration-ManagerWorkflow(集成管理者工作流)​编辑......
  • 关于Redisson分布式锁的用法
    一、前言在分布式系统中,多个节点可能会同时访问共享资源,导致数据不一致的问题。分布式锁是解决这些问题的一种有效机制。Redisson是一个基于Redis的Java客户端,不仅提供了丰富的分布式数据结构,还实现了分布式锁功能。本文将详细介绍Redisson分布式锁的用法,包括其配置、基本用法和......
  • 【docker】如何运行没有Root权限的Docker?
    以下文章来源于运维自习室,作者运维自习室Rootless模式的目的是让Docker守护进程以非root用户身份运行。该方案以实验特性的方式在v19.03版本引入,并在v20.10版本成为正式功能。实践官方文档已经做了详细的介绍,这里仅仅做一下实践复现。具体实践环境为:CentOS7.2docker-ce23......
  • Ubuntu22.04上Docker的安装
    在Ubuntu22.04上安装Docker可以帮助您快速构建、测试和部署应用程序。Docker是一个开源的容器化平台,它使开发人员能够将应用程序及其依赖项打包到一个标准化的单元中。本文将详细介绍如何在Ubuntu22.04上安装和配置Docker。一、更新系统首先,确保您的系统软件包是最新的。这有......
  • [docker] 部署 nacos-server
    拉取nacosserver镜像dockerpullnacos/nacos-server:v2.4.3如果失败(网络问题),可以使用国内的镜像:dockerpullnacos-registry.cn-hangzhou.cr.aliyuncs.com/nacos/nacos-server:v2.4.3#其它版本nacos-registry.cn-hangzhou.cr.aliyuncs.com/nacos/nacos-server:v2.3......
  • Seata 源码
    作者:京东物流张士欣核心接口和类ResourceManagerResourceManager是seata的重要组件之一,RM负责管理分支数据资源的事务。  AbstractResourceManager实现ResourceManager提供模板方法。DefaultResourceManager适配所有的ResourceManager,所有方法调用都委派给对应......
  • 分布式日志追踪ID实战
    作者:京东物流张小龙本文通过介绍分布式应用下各个场景的全局日志ID透传思路,以及介绍分布式日志追踪ID简单实现原理和实战效果,从而达到通过提高日志查询排查问题的效率。背景开发排查系统问题用得最多的手段就是查看系统日志,相信不少人都值过班当过小秘吧:给下接口和出入参吧,麻......
  • 分布式系统架构8:分布式缓存
    这是小卷对分布式系统架构学习的第11篇文章,今天了解分布式缓存的理论知识以及Redis集群。分布式缓存也是面试常见的问题,通常面试官会问为什么要用缓存,以及用的Redis是哪种模式,用的过程中遇到哪些问题这些1.AP还是CPRedis集群就是典型的AP式,它具有高性能、高可用等特点,但......
  • docker在网桥模式下主机端口映射到容器端口的原理
    前置知识iptables:捕获并控制容器和主机之间的流量,可以通过iptables-tnat-nL命令查看iptables的(S/D)NAT规则docker0:虚拟交换机veth1b62ff4@if56:虚拟交换机的虚拟接口上下两个虚拟接口成对出现eth0@if57:容器的虚拟接口网络环境CentOS:ens33->192.168.40.180/24、docker......
  • docker-compose部署clickhouse
    创建目录mkdir-p/usr/local/docker/clickhouse/conf/usr/local/docker/clickhouse/data/usr/lcoal/docker/clickhouse/log启动临时容器获取配置文件dockerrun--rm-d--name=temp-clickhouse-serverclickhouse/clickhouse-server:latest复制配置文件到宿主机doc......