首页 > 其他分享 >K8S 部署seata 1.6.x高可用集群

K8S 部署seata 1.6.x高可用集群

时间:2023-07-03 10:56:43浏览次数:44  
标签:1.6 ha seata db server K8S store name

写在之前

seata 1.6 无法注册到nacos 配置中心 下面有说原因。

2023年7月2日 gshelldon写的博客。

大于 1.4版本之后,配置文件就不是用registry.conf了所以按照官方的文档搭建都是坑。

默认使用application.yml的配置文件进行管理。

都是坑!!!害我排查了几天。

image

所以官方给出的yaml需要修改,如果使用官方的配置文件需要在iimage版本在1.4.x,我测试的是1.4.2可以正常注册并配置,dcoker镜像 seataio/seata-server:1.4.2

创建数据库配置

参考连接

创建数据库 seata

> create database seata;

创建seata-server需要的表

配置yaml

vim 01-cm.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: seata-ha-server-config
data:
  application.yml: |
    server:
      # web管理的端口
      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
    console:
      # web端管理的用户名和密码
      user:
        username: seata
        password: seata
    seata:
      config:
        type: nacos
        nacos:
          # nacos的地址 k8s内部域名需要在后面加端口号
          server-addr: 192.168.1.20:30848
          # namespace:  默认使用 public
          group: SEATA_GROUP
          username: nacos
          password: nacos
          # 创建的配置文件名称
          data-id: seataServer.properties
      registry:
        type: nacos
        nacos:
          application: seata-server
          server-addr: 192.168.1.20:30848
          group: SEATA_GROUP
          #namespace: 
          cluster: default
          username: nacos
          password: nacos
      #store:
      #  mode: db
      #  db:
      #    datasource: druid
      #    dbType: mysql
      #    driverClassName: com.mysql.jdbc.Driver 
      #    url: jdbc:mysql:/192.168.1.50:3306/seata?useUnicode=true&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
      #    user: root
      #    password: root
      # seata 服务暴露的地址
      server:
        service-port: 8091
      security:
        secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
        tokenValidityInMilliseconds: 1800000
        ignore:
          urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login

vim 02-deploy.yaml

apiVersion: v1
kind: Service
metadata:
  name: seata-ha-server
  labels:
    app.kubernetes.io/name: seata-ha-server
  #annotations:
  #  service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: lb-2zeabcdefghijklmn
  #  service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners: 'true'
spec:
  #type: LoadBalancer
  type: NodePort
  ports:
    - port: 8091
      protocol: TCP
      targetPort: 8091
      name: http
    - port: 7091
      protocol: TCP
      targetPort: 7091
      name: web
  selector:
    app.kubernetes.io/name: seata-ha-server
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: seata-ha-server
  labels:
    app.kubernetes.io/name: seata-ha-server
spec:
  serviceName: seata-ha-server
  replicas: 3
  selector:
    matchLabels:
      app.kubernetes.io/name: seata-ha-server
  template:
    metadata:
      labels:
        app.kubernetes.io/name: seata-ha-server
    spec:
      containers:
        - name: seata-ha-server
          image: docker.io/seataio/seata-server:1.6.0
          imagePullPolicy: IfNotPresent
          ports:
            - name: http
              containerPort: 8091
              protocol: TCP
            - name: web
              containerPort: 7091
              protocol: TCP
          volumeMounts:
          - mountPath: /seata-server/resources/application.yml
            name: seata-config
            subPath: application.yml
      volumes:
        - name: seata-config
          configMap:
            name: seata-ha-server-config

image

成功注册到注册中心

image

Nacos注册中心的配置

命名空间: namespace

组: SEATA_GROUP

配置名称:seataServer.properties

store.mode=db
#-----db-----
store.db.datasource=druid
store.db.dbType=mysql
# 需要根据mysql的版本调整driverClassName
# mysql8及以上版本对应的driver:com.mysql.cj.jdbc.Driver
# mysql8以下版本的driver:com.mysql.jdbc.Driver
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://192.168.1.50:3306/seata?useUnicode=true&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
store.db.user= root
store.db.password= root
# 数据库初始连接数
store.db.minConn=1
# 数据库最大连接数
store.db.maxConn=200
# 获取连接时最大等待时间 默认5000,单位毫秒
store.db.maxWait=5000
# 全局事务表名 默认global_table
store.db.globalTable=global_table
# 分支事务表名 默认branch_table
store.db.branchTable=branch_table
# 全局锁表名 默认lock_table
store.db.lockTable=lock_table
store.db.distributedLockTable=distributed_lock
# 查询全局事务一次的最大条数 默认100
store.db.queryLimit=100


# undo保留天数 默认7天,log_status=1(附录3)和未正常清理的undo
server.undo.logSaveDays=7
# undo清理线程间隔时间 默认86400000,单位毫秒
server.undo.logDeletePeriod=86400000
# 二阶段提交重试超时时长 单位ms,s,m,h,d,对应毫秒,秒,分,小时,天,默认毫秒。默认值-1表示无限重试
# 公式: timeout>=now-globalTransactionBeginTime,true表示超时则不再重试
# 注: 达到超时时间后将不会做任何重试,有数据不一致风险,除非业务自行可校准数据,否者慎用
server.maxCommitRetryTimeout=-1
# 二阶段回滚重试超时时长
server.maxRollbackRetryTimeout=-1
# 二阶段提交未完成状态全局事务重试提交线程间隔时间 默认1000,单位毫秒
server.recovery.committingRetryPeriod=1000
# 二阶段异步提交状态重试提交线程间隔时间 默认1000,单位毫秒
server.recovery.asynCommittingRetryPeriod=1000
# 二阶段回滚状态重试回滚线程间隔时间  默认1000,单位毫秒
server.recovery.rollbackingRetryPeriod=1000
# 超时状态检测重试线程间隔时间 默认1000,单位毫秒,检测出超时将全局事务置入回滚会话管理器
server.recovery.timeoutRetryPeriod=1000

image

NodePort访问

image

标签:1.6,ha,seata,db,server,K8S,store,name
From: https://www.cnblogs.com/gshelldon/p/17522233.html

相关文章

  • k8s部署
    1、下载并解压sealostarzxvfsealos_4.1.3_linux_amd64.tar.gzcpsealos/usr/bin/2、导入镜像,只在节点master1上导入即可sealosload-i/app/k8s-1.21/k8s-1.21.0.tarsealosload-i/app/k8s-1.21/calico-3.22.1.tar3、部署k8s集群方式一:sealosrunlabring/kubernetes:v1......
  • javac: invalid target release: 1.6
    Itriedtobuildaprojectonnetbeanswhenthiserrorcameup:javac:invalidtargetrelease:1.6Usage:javac<options><sourcefiles>wherepossibleoptionsinclude:-gGeneratealldebugginginfo-g:noneGeneratenodebugginginfo-......
  • 11.6 throw 关键词
    demopublicclassJavaDemo{ publicstaticvoidmain(Stringargs[]){ try{ thrownewException("自己抛着玩的"); }catch(Exceptione){ e.printStackTrace(); } }}面试题:请解释throw,throws的区别?1.throw是在代码块中使用的,主要是进行手工异常对象......
  • k8s进阶7-initContainer的场景灵活应用
    一、initContainer工作原理初始化容器是在pod的主容器启动之前要运行的容器,主要是做一些主容器的前置工作,它具有两大特征:1、初始化容器必须运行完成直至结束,若某初始化容器运行失败,那么kubernetes需要重启它直到成功完成;2、初始化容器必须按照定义的顺序执行,当且仅当前一个成功之......
  • Media Player Classic - BE MPC-BE 1.6.8 2023.7.1
    MediaPlayerClassic-BEMediaPlayerClassic-BE是一个免费的多媒体播放器,是MediaPlayerClassic(MPC)的一个分支。它提供了许多功能和改进,以增强用户体验和播放器的性能。以下是MediaPlayerClassic-BE的一些特点和功能:多种音视频格式支持:它支持许多常见的音频和......
  • 在 Kubernetes(k8s) 上部署 Spring Boot 应用程序:应用程序使用环境变量中的错误端口属
    如果我使用此配置启动部署(即先启动服务,然后启动部署)则pod在启动期间会失败。在日志中,我可以找到以下消息:***************************APPLICATIONFAILEDTOSTART***************************Description:Bindingtotargetorg.springframework.boot.autoconfigu......
  • CentOS安装k8s
    1.系统配置硬件配置基本要求资源大小硬盘>=20Gcpu>=2核内存>=2G本教程配置主机名IP配置master192.168.10.1553核+2G+20Gworker1192.168.10.2343核+2G+20Gworker2192.168.10.1473核+2G+20G2.安装必要软件所有机器都要......
  • kubeskoop 阿里开源的k8s 网络分析工具
    kubeskoop是阿里开源的k8s网络分析工具,提供了一个完整的k8s网络分析工具集,可以快速帮助我们分析容器网络问题,支持不少cni插件参考图 说明kubeskoop技术上利用了ebpf,功能还是很强大的,同时提供了可视化ui工具,是一个很不错的k8s网络分析工具,很值得使用下参考资料https:......
  • k8s安装环境准备:Virtualbox安装CentOS;复制多个CentOS虚拟机
    1.安装virtualbox下载virtualboxhttps://www.virtualbox.org/wiki/Downloads安装(windows)双击VirtualBox-7.0.8-156879-Win.exe选择安装目录安装完成后,打开virtualbox2.下载CentOS下载CentOS-7-x86_64-DVD-2009.isohttp://isoredirect.centos.org/centos/7/isos/......
  • k8s使用docker无法加载镜像Error response from daem
    1、报错信息:无法使用docker下载k8s镜像的解决办法,参考https://www.jianshu.com/p/70efa1b853f5目前国内的各大云计算厂商都提供了kubernetes的镜像服务,比如阿里云,我可以通过dockerpullregistry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.2.24  修改为:[root@master~]......