多活高可用服务 MAS-读写分离

时间:2025-02-12 14:58:59

读写分离

场景二:

如上图,实线为DCG指示激活AZ1,虚线为DCG指示激活为AZ2。跟场景一类似,同样在单边进行读写,不同之处在于,场景二中存在从库,进行读写分离,写操作在主库,读操作在从库进行。

配置如下:

# 基础信息 - 可选项, 当配置etcd后为必选props:  version: v1  // 项目版本号,自定义  appId: xxx  // 应用ID,从MAS服务实例页面查询获取  monitorId: xxx  // 监控器ID,从MAS服务实例页面查询获取  databaseName: xxx  // 数据库名,从MAS服务实例页面查询获取  decipherClassName: xxx.xxx.xxx  // 加解密类,需要实现基类 com.huawei.devspore.mas.password.Decipher,默认值为com.huawei.devspore.mas.password.DefaultDecipher# etcd配置,对接MAS服务关键配置,本地模式则无需配置etcd:  address: 127.0.0.2:2379,127.0.0.2:2379,127.0.0.2:2379  //etcd地址, 从MAS服务实例页面查询获取  apiVersion: v3  // etcd版本,v3  username: etcduser  // etcd用户名,从MAS服务实例页面查询获取  password: etcdpwd  // etcd密码,从MAS服务实例页面查询获取  httpsEnable: false  // 是否启用https  certificatePath: xxx // 启用https时证书路径,实例未开启双向认证或不启用https场景,该配置可以不填# 数据源配置 - 必选sources:  ds1: // 数据库直接点配置, 需要和MAS服务中连接池中命名一致    driverClassName: com.mysql.jdbc.Driver  // 驱动名称,自定义    jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds0  // 数据库地址,和MAS服务配置一致    username: datasourceuser  // 用户名,和MAS服务配置一致    password: datasourcepwd  // 密码,和MAS服务配置一致    type: com.zaxxer.hikari.HikariDataSource  // 数据源类型,自定义,目前只支持com.zaxxer.hikari.HikariDataSource,org.apache.commons.dbcp2.BasicDataSource,com.alibaba.druid.pool.DruidDataSource  ds1-slave0:// 从数据库节点,需要和MAS服务中连接池中命名一致    driverClassName: com.mysql.jdbc.Driver    jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds0_slave0    username: datasourceuser    password: datasourcepwd    type: com.zaxxer.hikari.HikariDataSource    props:      connectionTimeout: 30000      maximumPoolSize: 200  ds1-slave1:    driverClassName: com.mysql.jdbc.Driver    jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds0_slave1    username: datasourceuser    password: datasourcepwd    type: com.zaxxer.hikari.HikariDataSource    props:      connectionTimeout: 30000      maximumPoolSize: 200  ds2: // 需要和MAS服务中连接池中命名一致    driverClassName: com.mysql.jdbc.Driver    jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds1    username: datasourceuser    password: datasourcepwd    type: com.zaxxer.hikari.HikariDataSource    props:      connectionTimeout: 30000      maximumPoolSize: 200  ds2-slave0:// 从数据库节点,需要和MAS服务中连接池中命名一致    driverClassName: com.mysql.jdbc.Driver    jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds1_slave0    username: datasourceuser    password: datasourcepwd    type: com.zaxxer.hikari.HikariDataSource    props:      connectionTimeout: 30000      maximumPoolSize: 200  ds2-slave1:    driverClassName: com.mysql.jdbc.Driver    jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds1_slave1    username: datasourceuser    password: datasourcepwd    type: com.zaxxer.hikari.HikariDataSource    props:      connectionTimeout: 30000      maximumPoolSize: 200# 路由配置 - 必选router:    active: dc1    routeAlgorithm: single-read-write    nodes:      dc1:        master: ds1        loadBalance: ROUND_ROBIN        slaves:          - ds1-slave0          - ds1-slave1      dc2:        master: ds2        loadBalance: ROUND_ROBIN        slaves:          - ds2-slave0          - ds2-slave1
support.huaweicloud.com/devg-mas/mas-devg-0104.html