架构图


Mycat集群架构_mysql


架构分析


   架构图集群总共需要有8台机子,mysql需要4台,mycat需要2台,负载均衡和高可用需要2台。

之所以Mycat需要集群这样的架构,是为了避免Mycat单点失效的情况,mysql主机有4台(db1-db4),其中db1和db3是组一(主主复制),db2和db4是组二(主主复制),之所以需要主主复制是因为mycat可以实现组内db自动故障切换,恢复后自动数据同步(如果是主从复制,那么主机宕机,从机也用不了,除非加上Sentinel哨兵监控),组一和组二组成mycat的分片主机,那就是有两个分片主机dataHost,但是可以有多个分片dataNode,本例有4个分片节点,组一两个,组二两个。

  前面说到避免了mycat单点失效就是靠keepalived+haproxy组合,keepalived的作用就是故障转移(高可以)和生成浮动IP(访问IP),keepalived就是监控检查haproxy是否可以正常使用(通过脚本去检测和监控)。Haproxy的作用就是负责均衡,有两个Haproxy,每个Haproxy都会连接两个Mycat,这样应用通过浮动IP访问Mycat集群时,Keepalived会选择一个可用的Haproxy,接着Haproxy会均衡地去连接Mycat两个中的一个。

  这样的架构keepalived+Haproxy挂掉任意一台都没有关系。Mycat挂掉任意一台也没关系,两组Mysql,只要保证每组有一台机器正常执行即可(类似Redis3.x集群)。也就是说最惨的情况就是8台机器挂掉4台的极限情况也可以使用,那就是一台keepalived+Haproxy、一台Mycat和组一一台,组二一台。