seata(6):nacos

2023年 9月 25日 50.7k 0

   seata除了使用文件作为默认的配置中心和服务发现外,还可以使用nacos,我们学习下如何配置:首先启动mysql、nacos、seata,然后copy默认配置进行修改

    # docker run -d --name nacos -p 8848:8848 -e MODE=standalone -e MYSQL_MASTER_SERVICE_HOST=你的mysql所在ip -e MYSQL_MASTER_SERVICE_DB_NAME=nacos -e MYSQL_MASTER_SERVICE_USER=root -e MYSQL_MASTER_SERVICE_PASSWORD=mysql密码 -e MYSQL_SLAVE_SERVICE_HOST=你的mysql所在ip -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_DATABASE_NUM=1 nacos/nacos-server:latest


    # docker run -d --name seata -p 8091:8091 -e SEATA_IP=你想指定的ip -e SEATA_PORT=8091 seataio/seata-server:1.4.2




    version: "3.1"
    services:
    mysql:
    image: mysql:5.7
    container_name: mysql
    environment:
    - MYSQL_ROOT_PASSWORD=123456
    command: --default-authentication-plugin=mysql_native_password --default-time-zone='+08:00'
    volumes:
    - ./mysql:/docker-entrypoint-initdb.d
    - ./mysql/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
    ports:
    - "3306:3306"
    extra_hosts:
    - host.docker.internal:host-gateway


    seata-server:
    image: seataio/seata-server:1.5.2
    ports:
    - "7091:7091"
    - "8091:8091"
    environment:
    - STORE_MODE=db
    # 以SEATA_IP作为host注册seata server
    # - SEATA_IP=host.docker.internal
    # - SEATA_PORT=8091
    volumes:
    # - "/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime" #设置系统时区
    # - "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone" #设置时区
    # 假设我们通过docker cp命令把资源文件拷贝到相对路径`./seata-server/resources`中
    # 如有问题,请阅读上面的[注意事项]以及[使用自定义配置文件]
    - /Users/xiazemin//resources:/seata-server/resources
    - /Users/xiazemin/logs:/root/logs/seata/
    depends_on:
    - mysql
          - nacos
    extra_hosts:
    - host.docker.internal:host-gateway
    nacos:
    image: nacos/nacos-server:2.0.2
    ports:
    - "8848:8848"
    environment:
    - MODE=standalone
    - MYSQL_MASTER_SERVICE_HOST=host.docker.internal
    - MYSQL_MASTER_SERVICE_DB_NAME=nacos
    - MYSQL_SERVICE_HOST=host.docker.internal
    - MYSQL_SERVICE_DB_NAME=nacos
    - MYSQL_SERVICE_USER=root
    - MYSQL_SERVICE_PASSWORD=123456
    - MYSQL_MASTER_SERVICE_USER=root
    - MYSQL_MASTER_SERVICE_PASSWORD=123456
    - MYSQL_SLAVE_SERVICE_HOST=host.docker.internal
    - SPRING_DATASOURCE_PLATFORM=mysql
    - MYSQL_DATABASE_NUM=1
    - NACOS_AUTH_SYSTEM_TYPE=nacos
    volumes:
    - /Users/xiazemin/nacos/conf:/home/nacos/conf
         - /Users/xiazemin/nacos/data:/home/nacos/data
    depends_on:
    - mysql
    extra_hosts:
    - host.docker.internal:host-gateway

    然后,首先修改nacos的配置文件/nacos/conf/application.properties

      # spring
      server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
      server.contextPath=/nacos
      server.port=${NACOS_APPLICATION_PORT:8848}
      spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:""}
      nacos.cmdb.dumpTaskInterval=3600
      nacos.cmdb.eventTaskInterval=10
      nacos.cmdb.labelTaskInterval=300
      nacos.cmdb.loadDataAtStart=false
      db.num=${MYSQL_DATABASE_NUM:1}
      db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}&serverTimezone=UTC
      db.url.1=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}&serverTimezone=UTC
      db.user=${MYSQL_SERVICE_USER}
      db.password=${MYSQL_SERVICE_PASSWORD}
      ### The auth system to use, currently only 'nacos' is supported:
      nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}




      ### The token expiration in seconds:
      nacos.core.auth.default.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}


      ### The default token:
      nacos.core.auth.default.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey012345678901234567890123456789012345678901234567890123456789}


      ### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
      nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
      nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
      nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:serverIdentity}
      nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:security}
      server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
      server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D
      # default current work dir
      server.tomcat.basedir=
      ## spring security config
      ### turn off security
      nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
      # metrics for elastic search
      management.metrics.export.elastic.enabled=false
      management.metrics.export.influx.enabled=false


      nacos.naming.distro.taskDispatchThreadCount=10
      nacos.naming.distro.taskDispatchPeriod=200
      nacos.naming.distro.batchSyncKeyCount=1000
      nacos.naming.distro.initDataRatio=0.9
      nacos.naming.distro.syncRetryDelay=5000
      nacos.naming.data.warmup=true


      service.vgroupMapping.default_tx_group=default
      ### Security ###
      nacos.core.auth.enabled=true
      nacos.core.auth.username=nacos
      nacos.core.auth.password=nacos

      然后修改seata的配置文件/resources/application.yml

        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


        console:
        user:
        username: seata
        password: seata


        seata:
        config:
        # support: nacos, consul, apollo, zk, etcd3
        type: nacos #file
        nacos:
        server-addr: host.docker.internal:8848
        namespace:
        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
        registry:
        # support: nacos, eureka, redis, zk, consul, etcd3, sofa
        type: nacos #file
        nacos:
        application: seata-server
        server-addr: host.docker.internal:8848
        group: SEATA_GROUP
        namespace:
        cluster: default
        username: nacos
        password: nacos
        ##if use MSE Nacos with auth, mutex with username/password attribute
        #access-key: ""
        #secret-key: ""
        store:
        # support: file 、 db 、 redis
        mode: db
        db:
        datasource: druid
        dbType: mysql
        # 需要根据mysql的版本调整driverClassName
        # mysql8及以上版本对应的driver:com.mysql.cj.jdbc.Driver
        # mysql8以下版本的driver:com.mysql.jdbc.Driver
        driverClassName: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://host.docker.internal:3306/seata_server?useUnicode=true&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
        user: root
        password: 123456
        min-conn: 5
        max-conn: 100
        global-table: global_table
        branch-table: branch_table
        lock-table: lock_table
        distributed-lock-table: distributed_lock
        query-limit: 100
        max-wait: 5000

        # 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

        尝试启动

          % docker compose -f ./seata/exp4/docker-compose.yaml up

          查看效果,首先登录nacos的控制端

          http://127.0.0.1:8848/nacos/#/login,输入用户名:nacos,密码:nacos可以看到下面界面

          至此配置中心启动成功

          相关文章

          pt-kill工具的使用
          pt-ioprofile工具包的使用
          数据库管理-第216期 Oracle的高可用-01(20240703)
          DBMS_REPAIR EXAMPLE SCRIPT WITH PARTITION
          数据库事务的四大特性: ACID 
          使用BBED修复损坏的SYSTEM文件头

          发布评论