redis和mysql高可用性方案归纳

1 辙道辕门 发表于 2014-07-07 11:44:07 +0800 阅览(81) 评论(0)
 
 

前提条件:对于mariadb和redis2.8或更新版本,实现在两台位于不同机房的高可用性方案。

要求:对客户端透明,自动切换。

考虑了几个方案,最后决定都使用keepalived方案来进行failover。这样的话,有以下几个问题需要解决:

  1. 配置keepalived,使VIP总是指向可用的服务器,并在某台服务器宕掉以后可以自动将VIP实际指向的地址漂移到另一台可用的服务器
  2. 双向同步mysql和redis,使得宕机切换以后,新的服务器上的redis和mysql的数据与原来宕掉的服务器相同
  3. 旧master恢复以后抢占回VIP
  4. 抢占回VIP以后,redis会直接作为master启动,另一台作为backup启动。因此master脚本需要首先从backup机复制回数据,等待5秒,然后再slaveof no one,以便继承宕机时产生的新数据
  5. 如果可以的话,最好额外写脚本,检测mysql和redis进程是否宕掉,宕掉要重启(尚未实现)
  6. 试着做读写分离:只要有一台机器活着,那么IP1的指向总是可读可写;IP2的指向总是可读的,而客户端不关心它们究竟在哪台服务器上;切换时对客户端透明,且不会丢失数据

因此,最终配置服务器时需要有以下几个要点:

配置文件见附件或点击这里

redis:

mysql:

读写分离的试作方案:

迁移最好不用它的机制,而是在迁移完毕以后通过mysqldump实现比较稳妥

 
|

评论列表

还没有人评论。
返回