NoSQL之Redis 高可用性集群方案,应急维护技巧
连上从库,做save操作。将会在从库的data目录保存一份从库最新的dump.rdb文件。将这份dump.rdb文件拷贝到主库的data目录下。再重
前提:现在有主从结构,主库没有配置持久化,从库配置AOF。(主库用来备份和写服务,从库用来提供读服务)
场景:哪天主库突然宕了,怎么办?
方法:连上从库,做save操作。将会在从库的data目录保存一份从库最新的dump.rdb文件。将这份dump.rdb文件拷贝到主库的data目录下。再重启主库。
就因为这个我想到了用集群的方案,但是redis官方没有mysql那样的master-
master的模式~ 这样的情况下,只能咱们自己想办法了~
实现的原理~
当 Master 与 Slave 均运作正常时, Master负责读,Slave负责同步;
当 Master 挂掉,Slave 正常时, Slave接管服务,同时关闭主从复制功能;
然后依次循环。
这样,两台redis服务器中的任何一台挂掉,都会由另一台继续提供服务,不会对网站形成可察觉的影响,也不会丢失数据。
你也可以实现当 Master 恢复正常,则从Slave同步数据,同步数据之后关闭主从复制功能,恢复Master身份,于此同时Slave等待Master同步数据完成之后,恢复Slave身份。
高可用方面
需要把读写进行分离的,,写的话,就指向到一个vip~ 那两个主 用keepalived加脚本进行判断。
读的话,尽量用haproxy进行分流,这样的话,哪怕一个从down的话,haproxy会自动剔除的~
redis安装~
keepalived的安装~
安装完之后,具体说下高可用性的部分,下面是 主的keepalived.conf 的配置文件~
用killall -0 redis-server 来判断进程的存活~
也可以用checkredis.sh 这个脚本~
【大家可以写简单点~】 这个方法是redis自带的一个判断服务存活的程序