Déployez Seata1.6.1 basé sur la plate-forme CentOS Stream 9 et utilisez NaocsConfig pour obtenir des enregistrements de source de données

Recommandations associées :
Configuration IP statique CentOS Stream 9
Génération CentOS Stream 9 Cluster Nacos2.2.0 et configuration du proxy inverse OpenResty et du protocole GRPC


1. Télécharger

GitHub officiel : https://github.com/seata/seata/releases/tag/v1.6.1
Téléchargement en ligne :

cd /usr/local
wget https://github.com/seata/seata/releases/download/v1.6.1/seata-server-1.6.1.tar.gz

Ou télécharger manuellement localement et télécharger


2. Décompressez

tar -zxvf seata-server-1.6.1.tar.gz 


3. Configurer le mode de stockage

  • file : (par défaut) mode autonome, les informations de session de transaction globales lisent et écrivent en mémoire et conservent le fichier local root.data, avec des performances élevées (par défaut)
  • db : (5.7+) mode haute disponibilité, les informations de session de transaction globale sont partagées via db et les performances correspondantes sont médiocres

3.1 Créez le siège de la base de données, téléchargez d'abord SQL, puis importez-le avec des outils

https://github.com/seata/seata/tree/1.6.1/script/server/db
sql
La déclaration est la suivante :

-- the table to store GlobalSession data
CREATE TABLE IF NOT EXISTS `global_table`
(
    `xid`                       VARCHAR(128) NOT NULL,
    `transaction_id`            BIGINT,
    `status`                    TINYINT      NOT NULL,
    `application_id`            VARCHAR(32),
    `transaction_service_group` VARCHAR(32),
    `transaction_name`          VARCHAR(128),
    `timeout`                   INT,
    `begin_time`                BIGINT,
    `application_data`          VARCHAR(2000),
    `gmt_create`                DATETIME,
    `gmt_modified`              DATETIME,
    PRIMARY KEY (`xid`),
    KEY `idx_status_gmt_modified` (`status` , `gmt_modified`),
    KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- the table to store BranchSession data
CREATE TABLE IF NOT EXISTS `branch_table`
(
    `branch_id`         BIGINT       NOT NULL,
    `xid`               VARCHAR(128) NOT NULL,
    `transaction_id`    BIGINT,
    `resource_group_id` VARCHAR(32),
    `resource_id`       VARCHAR(256),
    `branch_type`       VARCHAR(8),
    `status`            TINYINT,
    `client_id`         VARCHAR(64),
    `application_data`  VARCHAR(2000),
    `gmt_create`        DATETIME(6),
    `gmt_modified`      DATETIME(6),
    PRIMARY KEY (`branch_id`),
    KEY `idx_xid` (`xid`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- the table to store lock data
CREATE TABLE IF NOT EXISTS `lock_table`
(
    `row_key`        VARCHAR(128) NOT NULL,
    `xid`            VARCHAR(128),
    `transaction_id` BIGINT,
    `branch_id`      BIGINT       NOT NULL,
    `resource_id`    VARCHAR(256),
    `table_name`     VARCHAR(32),
    `pk`             VARCHAR(36),
    `status`         TINYINT      NOT NULL DEFAULT '0' COMMENT '0:locked ,1:rollbacking',
    `gmt_create`     DATETIME,
    `gmt_modified`   DATETIME,
    PRIMARY KEY (`row_key`),
    KEY `idx_status` (`status`),
    KEY `idx_branch_id` (`branch_id`),
    KEY `idx_xid` (`xid`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

CREATE TABLE IF NOT EXISTS `distributed_lock`
(
    `lock_key`       CHAR(20) NOT NULL,
    `lock_value`     VARCHAR(20) NOT NULL,
    `expire`         BIGINT,
    primary key (`lock_key`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('AsyncCommitting', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryCommitting', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryRollbacking', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('TxTimeoutCheck', ' ', 0);

nouveau tableau

3.2 Deux manières de configurer les sources de données (①configuration directe et ②obtenir la configuration de nacosConfig)

Ouvrez config/application.yml
et modifiez-le 47行commedb

①Configuration directe

vi seata/conf/application.yml

Ajouter à

    mode: db
    db:
      datasource: druid
      db-type: mysql
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://127.0.0.1:3306/seata?rewriteBatchedStatements=true&useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
      user: root
      password: 123456
      min-conn: 10
      max-conn: 100
      global-table: global_table
      branch-table: branch_table
      lock-table: lock_table
      distributed-lock-table: distributed_lock
      query-limit: 1000
      max-wait: 500

Modifier le journal de stockage de la base de données

3.3 Configurer le centre d'enregistrement Nacos

Enregistrez le service dans Nacos

Modifier le paragraphe 44行à type: nacos
ajouter ;

	type: nacos
    nacos:
      application: seata-server
      server-addr: 127.0.0.1:8848
      group: SEATA_GROUP
      namespace:
      cluster: default
      username: nacos
      password: nacos
      context-path:
      ##if use MSE Nacos with auth, mutex with username/password attribute
      #access-key:
      #secret-key:

nacos

② Obtenir la configuration de NacosConfig pour faciliter la maintenance des sources de données

Choisir d'obtenir la configuration depuis NacosConfig, 上面db配置了,这一步可以不用配置, prendre la configuration de la base de données comme exemple,
modifier la ligne 41 type : nacos

vi seata/conf/application.yml

Ajouter à:

  type: nacos
  nacos:
     server-addr: 127.0.0.1:8848
     namespace:
     group: SEATA_GROUP
     username: nacos
     password: nacos
     context-path:
     ##if use MSE Nacos with auth, mutex with username/password attribute
     #access-key:
     #secret-key:
     data-id: seata.properties

taper

ESC :wq pour enregistrer et quitter

Créer un nouvel nouvelle configuration
ID de données de configuration

seata.properties

Groupe

SEATA_GROUP

format de configuration

  • Properties

Contenu de la configuration :

store.mode=db
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://192.168.20.128:3306/seata?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
store.db.user=root
store.db.password=123456

nouvelle configuration


4. Démarrez le serveur Seata :

sh /usr/local/seata/bin/seata-server.sh -h 192.168.20.128 -p 8091 -m db -n 1

paramètre tout écrire effet Remarque
-h --héberger Spécifiez l'adresse IP enregistrée dans le centre d'enregistrement Obtenez l'adresse IP actuelle si elle n'est pas spécifiée, et il est recommandé de la spécifier pour l'accès externe aux serveurs déployés dans des environnements cloud et des conteneurs
-p --poste Spécifiez le port sur lequel le serveur démarre La valeur par défaut est 8091
-m --boutiqueMode mode de stockage du journal des transactions Fichier de support, db, redis par défaut sur le fichier Remarque : redis nécessite la version seata-server1.3 et supérieure
-n --nœudserveur Utilisé pour spécifier l'ID de nœud seata-server (adapté aux clusters) tels que 1, 2, 3... La valeur par défaut est 1
-e --siègeaEnv Spécification de l'environnement d'exploitation seata-server Tels que dev, test, etc., la configuration de Registry-dev.conf sera utilisée au démarrage du service

Commencez

Afficher le journal de démarrage (Ctrl C pour quitter)

tail -f /usr/local/seata/logs/start.out

journal de démarrage
Page d'accès : http://192.168.20.128:7091/#/login

Compte par défaut : seata
Mot de passe par défaut : seata
Connexion
Informations sur les transactions

5. Configuration de démarrage

Spécifiez le chemin JAVA_HOME pour Seata afin d'éviter les rapports d'erreurs
Chemin Java

5.1 Afficher le chemin JDK :echo $JAVA_HOME

jdk

5.2 Modifier le script de démarrage de seata,

vi /usr/local/seata/bin/seata-server.sh

Ajoutez le chemin JDK et retardez le démarrage de 15 secondes, en attendant principalement que le démarrage de nacos se termine... :

En raison du cluster Nacos que j'ai construit localement, je dois attendre qu'OpenResty termine le proxy (actualiser l'adresse du cluster dans le navigateur, ce qui prend environ 15 secondes) avant de pouvoir obtenir l'adresse du cluster. Quittez le programme...
tail -f /usr/local/seata/logs/start.out Afficher le journal de démarrage, faire face à différents problèmes et les résoudre de manière ciblée~

echo "seata delayed 15s start"
sleep 15
JAVA_HOME=/usr/local/java/jdk1.8.0_361
JAVA=$JAVA_HOME/bin

Démarrage retardé

5.3 Nouveau script de service :

vi /etc/systemd/system/seata.service

Ajoutez du contenu (si nacos se trouve sur la machine locale, NacosConfig est configuré et doit être configuré après le démarrage du service nacos) :

[Unit]
Description=seata
After=nacos-cluster.service

[Service]
Type=forking
ExecStartPre=/bin/sleep 10
ExecStart=sh /usr/local/seata/bin/seata-server.sh -h 192.168.20.128 -p 8091 -m db -n 1
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Appuyez sur ESC :wq pour enregistrer et quitter
configuration des services

5.4 Autorisation du script de service :

chmod 754 /etc/systemd/system/seata.service

5.5 Configurer le démarrage pour qu'il démarre automatiquement

systemctl enable seata.service 

Vous pouvez redémarrer et redémarrer le test pour voir s'il prend effet
démarrer

5.6 Afficher l'état du service :

systemctl status seata.service

Concernant l'utilisation des affaires dans le projet, j'écrirai à nouveau quand j'aurai le temps ~

Terminé, merci d'avoir lu ~
FIN


Je suppose que tu aimes

Origine blog.csdn.net/qq_44870331/article/details/129901685
conseillé
Classement