High Available Usage Deployment
High available usage deployment of Seata depends on registry center, configuration center and database.
Seata-Server
The Seata-Server need registry center, and save transaction data into database, for example, use Nacos
- Modify configuration in
registry.conf
registry {type = "nacos"nacos {application = "seata-server"serverAddr = "192.168.199.2"namespace = ""cluster = "default"username = ""password = ""}}config {type = "nacos"nacos {serverAddr = "192.168.199.2"namespace = ""group = "SEATA_GROUP"username = ""password = ""}}
- Modify configuration in configuration center
service.vgroupMapping.my_test_tx_group=defaultstore.mode=dbstore.db.datasource=druidstore.db.dbType=mysqlstore.db.driverClassName=com.mysql.jdbc.Driverstore.db.url=jdbc:mysql://192.168.199.2:30060/seata?useUnicode=truestore.db.user=rootstore.db.password=123456
- Create table
global_table,branch_table,lock_tablein database
Please reference script on /script/server/db/
Now, startup multiple seata-server, and then the server is support high available usage.
For example, using Kubernetes deploy, the configuration file like:
apiVersion: v1kind: Servicemetadata:name: seata-ha-servernamespace: defaultlabels:app.kubernetes.io/name: seata-ha-serverspec:type: ClusterIPports:- port: 8091protocol: TCPname: httpselector:app.kubernetes.io/name: seata-ha-server---apiVersion: apps/v1kind: Deploymentmetadata:name: seata-ha-servernamespace: defaultlabels:app.kubernetes.io/name: seata-ha-serverspec:replicas: 3selector:matchLabels:app.kubernetes.io/name: seata-ha-servertemplate:metadata:labels:app.kubernetes.io/name: seata-ha-serverspec:containers:- name: seata-ha-serverimage: docker.io/seataio/seata-server:latestimagePullPolicy: IfNotPresentenv:- name: SEATA_CONFIG_NAMEvalue: file:/root/seata-config/registryports:- name: httpcontainerPort: 8091protocol: TCPvolumeMounts:- name: seata-configmountPath: /root/seata-configvolumes:- name: seata-configconfigMap:name: seata-ha-server-config---apiVersion: v1kind: ConfigMapmetadata:name: seata-ha-server-configdata:registry.conf: |registry {type = "nacos"nacos {application = "seata-server"serverAddr = "192.168.199.2"}}config {type = "nacos"nacos {serverAddr = "192.168.199.2"group = "SEATA_GROUP"}}
You can reference seata-ha-deploy-practice for more detail about practice of HA deploy.