应用部署优化方案分享( 四 )


}
vrrp_script chk_mysql {
script "/etc/keepalived/mysql_check.sh"
interval 2
weight -20
}
vrrp_instance VI_83 { #定义实例
state MASTER #状态参数 master/backup 只是说明
interface eth0 #虚ip绑定网卡位置
virtual_router_id 83 #同一个集群id一致
priority 100 #priority值最大的将成为master
mcast_src_ip 192.168.0.1 #发送组播包的地址,不设置则使用网卡默认ip
advert_int 1 #主备通讯间隔s
authentication { #设置认证
auth_type PASS
auth_pass 1111
}
track_script {
chk_mysql
}
virtual_ipaddress { #虚拟ip
192.168.0.0
}
notify_master /etc/keepalived/sendmail.pl #邮件发送脚本
}

  • 一主多从架构部署介绍

应用部署优化方案分享

文章插图
 
应用服务器只配置mycat地址即可,mycat可以实现读写分离和故障切换 。
Master负责写入,Slave负责读取,同时MySQL可以支持级联同步部署 。
MySQL为保证事务的完整性,复制在slave上是串行化的,也就是多个master上的并行更新操作不能在同一slave上同时进行 。
Mycat读写分离配置及优化
mycat可用于读写分离和数据切分的高可用中间件,并支持基于心跳检测的自动故障切换,mycat主要包含两个核心配置文件server.xml和schema.xml
1.server.xml配置优化
<user name=“user”> <!—对客户端提供的用户名、密码 及表空间-->
<property name="password">******</property>
<property name="schemas">testdb</property>
<property name="readOnly">false</property>
<!--readOnly设置成false,代表可进行读写操作-->
</user>
2. schema.xml配置优化
<schema name=“testdb" checkSQLschema="false" sqlMaxLimit="100" dataNode=“dn1">
</schema>
<dataNode name=“dn1" dataHost="host001" database=“db1" />
<dataHost name=" host001" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100">
<heartbeat>show slave status </heartbeat>
<writeHost host=“mysql-1” url=“192.168.0.1:3306” user=“user” password=“******”>
<!—master可读、写操作,slave只读-->
<readHost host="mysql-1" url="192.168.0.1:3306" user=“user" password="******" />
<readHost host="mysql-2" url="192.168.0.2:3306" user=“user" password="******" />
</writeHost>
<writeHost host=“mysql-2” url=“192.168.0.2:3306” user=“user”password=“******”>
<!—master故障,切换slave读写-->
<readHost host="mysql-2" url="192.168.0.2:3306" user=“user" password="******" />
</writeHost>
</dataHost>
参数说明:
writeType属性负载均衡类型,目前的取值有3种:
  1. writeType="0", 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties.
  2. writeType="1",所有写操作都随机的发送到配置的writeHost,1.5以后废弃不推荐 。
  3. writeType="2",不执行写操作
switchType指的是切换的模式,目前的取值也有4种:
  1. switchType='-1' 表示不自动切换
  2. switchType='1' 默认值,表示自动切换
  3. switchType='2' 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status
  4. switchType='3'基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like 'wsrep%'
负载均衡类型,目前的取值有4种:
  1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上 。
  2. balance="1",所有读操作都随机的发送到readHost 。全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡 。
  3. balance="2",所有读操作都随机的在writeHost、readhost上分发 。

  4. 推荐阅读