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
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);
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-le47行
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
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:
② 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 : nacosvi 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
ESC :wq pour enregistrer et quitter
Créer un nouvel
ID de données de configurationseata.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
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 |
Afficher le journal de démarrage (Ctrl C pour quitter)
tail -f /usr/local/seata/logs/start.out
Page d'accès : http://192.168.20.128:7091/#/login
Compte par défaut : seata
Mot de passe par défaut : seata
5. Configuration de démarrage
Spécifiez le chemin JAVA_HOME pour Seata afin d'éviter les rapports d'erreurs
5.1 Afficher le chemin JDK :echo $JAVA_HOME
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
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
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
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