docker安装seata

本文介绍了如何在Docker中安装和配置Seata分布式事务管理器,包括获取镜像、运行容器、修改配置并启动服务,重点在于配置文件的调整和启动流程。

docker中安装seata

1.获取镜像

## 使用下面命令获取最新版本的镜像,此时我的最新版本是1.3.0 
## 或者可以使用docker pull seataio/seata-server:1.3.0t获取指定版本的镜像
docker pull seataio/seata-server:latest

2.运行容器并获取配置

为方便我们对seata配置修改我们需要先运行下seata-server,然后将配置拷贝到宿主机中,完成之后删除之前配置并通过宿主机运行容器

## 运行容器
docker run --name seata-server -p 8091:8091 -d  seataio/seata-server:latest
## 将容器中的配置拷贝到/usr/local/seata-1.3.0
docker cp seata-server:/seata-server /usr/local/seata-1.3.0
## 完成后就会在/usr/local/seata-1.3.0出现容器的配置,我们现在可以将原来容器停止并删除
docker stop seata-server
docekr rm seata-server

3.修改配置文件

进入目录/usr/local/seata-1.3.0/resources中修改file.conf和registry.conf中的内容
file.conf中的内容:

## transaction log store, only used in seata-server
store {
  ## store mode: file、db、redis
  mode = "db" ## 原来为file
 
  ## file store property
  file {
    ## store location dir
    dir = "sessionStore"
    # branch session size , if exceeded first try compress lockkey, still exceeded throws exceptions
    maxBranchSessionSize = 16384
    # globe session size , if exceeded throws exceptions
    maxGlobalSessionSize = 512
    # file buffer size , if exceeded allocate new buffer
    fileWriteBufferCacheSize = 16384
    # when recover batch read size
    sessionReloadReadSize = 100
    # async, sync
    flushDiskMode = async
  }

  ## 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.jdbc.Driver"
    ## 因为设置为db,所以需要选择数据库,这里设置数据库及密码,seata是需要创建的,默认的表是通过脚本运行得到的
    url = "jdbc:mysql://192.168.1.23:3306/seata"
    user = "root"
    password = "123456"
    minConn = 5
    maxConn = 30
    globalTable = "global_table"
    branchTable = "branch_table"
    lockTable = "lock_table"
    queryLimit = 100
    maxWait = 5000
  }

  ## redis store property
  redis {
    host = "127.0.0.1"
    port = "6379"
    password = ""
    database = "0"
    minConn = 1
    maxConn = 10
    queryLimit = 100
  }

registry.conf内容:

registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
  ## 我们这里使用nacos作为注册中心,所以需要设置type为nacos并设置nacos的属性
  type = "nacos"
  nacos {
    application = "seata-server"
    serverAddr = "192.168.1.23:8848"
    group = "SEATA_GROUP"
    ## 这里的namespace是你nacos服务的namespace的data-id,设置那里,到时就会在那个namespace中
    namespace = "a1493ff3-a94b-4f76-91af-7999fabff7d5"
    cluster = "default"
    username = "nacos"
    password = "nacos"
  }
}

config {
  # file、nacos 、apollo、zk、consul、etcd3
  type = "file"

  file {
    name = "file.conf"
  }
}

3.启动seata

docker run -d --restart always  --name  seata-server -p 8091:8091  -v /usr/local/seata-1.3.0:/seata-server -e SEATA_IP=192.168.1.23 -e SEATA_PORT=8091 seataio/seata-server:latest
### 使用 Docker 安装 Seata 分布式事务中间件 #### 单节点安装 可以通过 `docker run` 命令快速启动单节点的 Seata Server。以下是具体的命令: ```bash docker run --name seata-server -p 8091:8091 -d \ -e SEATA_IP=192.168.200.200 \ -e SEATA_PORT=8091 \ --restart=on-failure \ seataio/seata-server:1.3.0 ``` 上述命令中: - `-p 8091:8091` 将容器内的 8091 端口映射到主机的 8091 端口。 - `-e SEATA_IP=192.168.200.200` 设置 Seata Server 的 IP 地址。 - `-e SEATA_PORT=8091` 设置 Seata Server 的端口号。 - `--restart=on-failure` 表示当容器失败时自动重启。 此方法适用于测试环境,但在生产环境中不推荐使用单节点部署[^2]。 --- #### 高可用集群安装 为了提高系统的高可用性和性能,在生产环境中通常采用多节点集群的方式部署 Seata Server。具体步骤如下: ##### 准备工作 1. **选择会话共享模式** 默认情况下,Seata Server 使用文件存储 (`file`) 来保存会话数据。然而,这种模式不适合集群场景。可以选择 Redis 或数据库来实现会话共享。这里以 Redis 为例说明配置过程[^3]。 2. **修改配置文件** 编辑 Seata Server 的 `file.conf` 文件,将存储模式改为 Redis 并设置相关参数: ```properties store { mode = "redis" redis { host = "192.168.211.145" port = "6379" password = "" database = "0" minConn = 1 maxConn = 10 queryLimit = 100 } } ``` 如果选择数据库作为存储方式,则需要执行官方提供的 SQL 脚本来初始化数据库表结构。SQL 脚本位于 `\seata-server-1.6.0\seata\script\server\db` 目录下[^4]。 ##### 启动多个 Seata Server 实例 可以运行两个或更多 Seata Server 容器实例,并确保它们连接到同一个 Redis 数据库或其他共享存储介质上。例如: ```bash docker run --name seata-server-1 -p 8091:8091 -d \ -e SEATA_IP=192.168.200.201 \ -e SEATA_PORT=8091 \ -e STORE_MODE="redis" \ -e REDIS_HOST="192.168.211.145" \ -e REDIS_PORT="6379" \ --restart=on-failure \ seataio/seata-server:1.3.0 docker run --name seata-server-2 -p 8092:8091 -d \ -e SEATA_IP=192.168.200.202 \ -e SEATA_PORT=8091 \ -e STORE_MODE="redis" \ -e REDIS_HOST="192.168.211.145" \ -e REDIS_PORT="6379" \ --restart=on-failure \ seataio/seata-server:1.3.0 ``` 注意:每个容器的宿主机端口应不同(如第一个绑定 8091,第二个绑定 8092),但内部服务监听端口保持一致(默认为 8091)。这样客户端可以根据负载均衡策略访问任意一个 Seata Server 实例。 --- #### 关键组件介绍 Seata 是分布式事务解决方案的核心框架,其主要由以下三个部分组成: 1. **TC (Transaction Coordinator)** - 事务协调者,负责维护全局和分支事务的状态,驱动全局事务提交或回滚。 2. **TM (Transaction Manager)** - 事务管理器,定义全局事务的范围,控制全局事务的生命周期。 3. **RM (Resource Manager)** - 资源管理器,管理和注册分支事务,与 TC 进行通信以完成事务状态同步[^5]。 了解这些核心概念有助于更好地设计和调试基于 Seata 的分布式系统架构。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值