Welcome 微信登录

首页 / 数据库 / MySQL / NoSQL之Redis 高可用性集群方案,应急维护技巧

前提:现在有主从结构,主库没有配置持久化,从库配置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安装~
  1. wget http://redis.googlecode.com/files/redis-2.2.13.tar.gz
  2. tar -zxf redis-2.2.13.tar.gz
  3. cd redis-2.2.13
  4. make
  5. make install
keepalived的安装~
  1. tar -xzvf keepalived-1.1.20.tar.gz
  2. cd keepalived-1.1.20
  3. ./configure --prefix=/usr/local/webserver/keepalived
  4. make
  5. make install
  6. cp /usr/local/webserver/keepalived/sbin/keepalived /usr/sbin
  7. cp /usr/local/webserver/keepalived/etc/sysconfig/keepalived /etc/sysconfig
  8. cp /usr/local/webserver/keepalived/etc/rc.d/init.d/keepalived /etc/init.d
  9. mkdir /etc/keepalived
  10. cp /usr/local/webserver/keepalived/etc/keepalived/keepalived.conf /etc/keepalived
 安装完之后,具体说下高可用性的部分,下面是 的keepalived.conf 的配置文件~ 用killall -0 redis-server 来判断进程的存活~也可以用checkredis.sh 这个脚本~【大家可以写简单点~】 这个方法是redis自带的一个判断服务存活的程序
  1. #!/bin/bash
  2. REDIS_HOME="/home/redis"
  3. REDIS_COMMANDS="/home/redis/src" # The location of the redis binary
  4. REDIS_MASTER_IP="172.16.0.180" # Redis MASTER ip
  5. REDIS_MASTER_PORT="6379" # Redis MASTER port
  6. ERROR_MSG=`${REDIS_COMMANDS}/redis-cli PING`
  7. #
  8. # Check the output for PONG.
  9. #
  10. if [ "$ERROR_MSG" != "PONG" ]
  11. then
  12. # redis is down, return http 503
  13. /bin/echo -e "HTTP/1.1 503 Service Unavailable "
  14. /bin/echo -e "Content-Type: Content-Type: text/plain "
  15. /bin/echo -e " "
  16. /bin/echo -e "Redis is *down*. "
  17. /bin/echo -e " "
  18. exit 1
  19. else
  20. # redis is fine, return http 200
  21. /bin/echo -e "HTTP/1.1 200 OK "
  22. /bin/echo -e "Content-Type: Content-Type: text/plain "
  23. /bin/echo -e " "
  24. /bin/echo -e "Redis is running. "
  25. /bin/echo -e " "
  26. exit 0
  27. fi
  • 1
  • 2
  • 3
  • 下一页
MySQL 5.6 MEMCACHED API 体验Oracle 10g rac升级到10.2.0.5相关资讯      NoSQL  Redis  Redis集群 
  • Redis 3.0集群搭建测试  (今 08:59)
  • 在RedHat 6.4安装Redis集群  (09月10日)
  • Redis集群配置笔记  (08月11日)
  • CentOS完美搭建Redis3.0集群并附测  (今 08:01)
  • HaProxy 配置Redis高可用集群笔记  (08月11日)
  • Redis 非关系型数据库 ( Nosql )  (07月01日)
本文评论 查看全部评论 (0)
表情: 姓名: 字数