`
tianlongsheji
  • 浏览: 2399 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用keepalived 实现redis主从高可用

 
阅读更多

 

  keepalived官方有中文文档:LVS + Keepalived Chinese application doc - March 16, 2010。

  keepalived 实现VRRP协议,从路由级别实现VIP切换,可以完全避免类似heartbeat 脑裂问题。可以很nice的实现主从、主备、互备方案,尤其是无状态业务,有状态业务就需要额外花些功夫了。

     既然mysql 可以使用keepalived很好的做到主从切换,redis自然也就有样学样就成了。

 

  redis主从实现完全没有mysql成熟,仅仅是可用而已,按照作者规划相应改进需要等3.0以后了。经过测试主从也不是那么完 全不靠谱。主要问题在于同步连接断开之后需要重新全量同步,如果频繁进行会对主服务带来很大性能影响。 但现实中主从机器往往要求放在一个机柜同一台交换设备下,网络闪断情况极低;再者主从同步在同步数量量大情况下,需要将缓存区调得足够大,不然也容易造成 连接断开。

  实现切换逻辑如下:A B两台机器

  1. A 、B 依次启动,A作为主、B为从

  2.主A 挂掉,B接管业务,作为主

  3.A 起来,作为从SLAVEOF B

  4.B 挂掉,A 切回主

  将一台全部作为主,即可实现主从,可做读写分离;也可以一台机器上多个实例一半主、一半从,实现互备份,两机同时接管业务,一台宕机后业务都集中在一台上。

   在keepalived 有两个角色:Master(一个)、Backup(多个),如果设置一个为Master,但Master挂了后再起来,必然再次业务又一次切换,这对于有 状态服务是不可接受的。解决方案就是两台机器都设置为Backup,而且优先级高的Backup设置为nopreemt 不抢占。

 

   安装比较简单:

  需要依赖包:openssl-devel(ubuntu 中为 libssl-dev),popt-devel (ubuntu中为libpopt-dev),redheat中都已经有了。

  配置文件默认路径:/etc/keepalived/keepalived.conf 也可以手动指定路径,不过要注意的是手动指定需要使用绝对路径。
  使用keepalived -D 运行,即可启动3个守护进程:一个父进程,一个check健康检查,一个Vrrp,-D将日志写入/var/log/message 
 

  配置如下:

   主:

复制代码
! Configuration File for keepalived

global_defs {
   router_id test
}
vrrp_script chk_redis 
{ 
     script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 7001" 
     interval 2 
     timeout 2
     fall 3
}
vrrp_script chk_redis2 
{ 
     script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 7002"
     interval 2
     timeout 2
     fall 3
}

vrrp_instance redis {
    state BACKUP # 主也配置为SLAVE
    interface wlan0}  
    virtual_router_id 51 
    priority  150       
    nopreempt # 不抢占,注意加上
    advert_int 1        
    authentication {   
        auth_type PASS   
        auth_pass lulu
    }
    virtual_ipaddress {  
    192.168.1.144
    }
    track_script { 
         chk_redis 
    } 
    notify_master "/etc/keepalived/scripts/redis_master_slave.sh 127.0.0.1 192.168.1.126 7001"
    notify_backup "/etc/keepalived/scripts/redis_backup_slave.sh 127.0.0.1 192.168.1.126 7001"
    notify_fault /etc/keepalived/scripts/redis_fault.sh 
    notify_stop /etc/keepalived/scripts/redis_stop.sh 
}

vrrp_instance redis2 {
    state BACKUP  
    interface wlan0 }  
    virtual_router_id 50 
    priority 150         
    advert_int 1         
    nopreempt
    authentication {      
        auth_type PASS  
        auth_pass lulu
    }
    virtual_ipaddress {  
    192.168.1.145
    }
    track_script { 
         chk_redis2 
    } 
   notify_master "/etc/keepalived/scripts/redis_master_slave.sh 127.0.0.1 192.168.1.126 7002"
    notify_backup "/etc/keepalived/scripts/redis_backup_slave.sh 127.0.0.1 192.168.1.126 7002"
    notify_fault /etc/keepalived/scripts/redis_fault.sh 
    notify_stop /etc/keepalived/scripts/redis_stop.sh 
}
复制代码

备:

复制代码
! Configuration File for keepalived

global_defs {
   router_id test
}
vrrp_script chk_redis 
{ 
     script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 7001" 
     interval 2
     timeout 2
     fall 3
}
vrrp_script chk_redis2 
{ 
     script "/etc/keepalived/scripts/redis_check.sh 127.0.0.1 7002" 
     interval 2
     timeout 2
     fall 3
}

vrrp_instance redis {
    state BACKUP   
    interface wlan0 }  
    virtual_router_id 51  
    priority  100       
    advert_int 1        
    authentication {    
        auth_type PASS   
        auth_pass test
    }
    virtual_ipaddress { 
    192.168.1.144
    }
    track_script { 
         chk_redis 
    } 
    notify_master "/etc/keepalived/scripts/redis_master_slave.sh 127.0.0.1 192.168.1.126 7001"
    notify_backup "/etc/keepalived/scripts/redis_backup_slave.sh 127.0.0.1 192.168.1.126 7001"
    notify_fault /etc/keepalived/scripts/redis_fault.sh 
    notify_stop /etc/keepalived/scripts/redis_stop.sh 
}

vrrp_instance redis2 {
    state BACKUP   
    interface wlan0 }  
    virtual_router_id 50  
    advert_int 1      
    priority 100
    authentication {   
        auth_type PASS  
        auth_pass test
    }
    virtual_ipaddress {   
    192.168.1.145
    }
    track_script { 
         chk_redis2
    } 
   notify_master "/etc/keepalived/scripts/redis_master_slave.sh 127.0.0.1 192.168.1.126 7002"
    notify_backup "/etc/keepalived/scripts/redis_backup_slave.sh 127.0.0.1 192.168.1.126 7002"
    notify_fault /etc/keepalived/scripts/redis_fault.sh 
    notify_stop /etc/keepalived/scripts/redis_stop.sh 
}
复制代码

其他脚本见附件:http://files.cnblogs.com/lulu/scripts.rar

分享到:
评论

相关推荐

    redis主从配置及通过keepalived实现redis自动切换

    Redis 主从配置及通过 Keepalived 实现 Redis 自动切换 标题:Redis 主从配置及通过 Keepalived ...Redis 主从配置及通过 Keepalived 实现 Redis 自动切换可以实现高可用性和自动故障转移,提高系统的可靠性和稳定性。

    Keepalived+redis高可用主从-Keepalived的配置

    Keepalived+redis高可用主从,本技术文档主要是Keepalived的配置,redis主从配置可以看我的文章https://blog.csdn.net/qq_41709494/article/details/116382183

    Redis哨兵主从模式+keepalived.docx

    Keepalived的配置是实现高可用性Redis服务的关键。Keepalived的配置文件为keepalived.conf,需要在其中配置Keepalived的监控目标、虚拟IP等信息。 在配置Keepalived时,需要注意以下几点: *daemonize yes:需要...

    采用Keepalived实现Redis双机高可用

    然而,单一的Redis实例可能存在单点故障的风险,这时就需要通过技术手段来实现高可用。本文将详细介绍如何采用Keepalived来实现Redis的双机高可用配置。 Keepalived是一款开源软件,主要用于网络服务的负载均衡和...

    Keepalived实现redis的主从切换高可用原理详解

    redis+Keepalived实现Redis高可用性

    Redis+Keepalived的组合被广泛用于实现高可用性,确保服务在故障发生时能够无缝切换,避免数据丢失和业务中断。下面将详细介绍这个方案的实施步骤、原理以及相关知识点。 首先,Redis是一款开源、基于键值对的数据...

    结合keepalived实现redis群集高可用故障自动切换

    标题中的“结合keepalived实现redis群集高可用故障自动切换”是指在Redis集群中采用keepalived作为辅助工具,以提升系统的高可用性和故障切换能力。keepalived是一款广泛应用于网络服务高可用性(High Availability,...

    keepalived + redis 实现双机热备

    标题 "keepalived + redis 实现双机热备" 涉及到的是在IT行业中构建高可用性系统的关键技术。keepalived 和 redis 是两个关键组件,它们一起工作以确保服务的持续运行,即使在主服务器故障时也能无缝切换到备份...

    keepalived-redis高可用配置脚本

    【标题】"keepalived-redis高可用配置脚本"涉及的是在IT系统中实现高可用性和负载均衡的策略,特别是针对Redis缓存服务。Keepalived是一个开源项目,主要功能是提供网络服务的高可用性,而Redis是一种高性能的键值...

    keepalived+redis&mysql主备高可用配置文件和脚本

    "keepalived+redis&mysql主备高可用配置文件和脚本"的实现涉及多个层面的配置,包括数据库的主从复制设置、Keepalived的VRRP配置、监控脚本编写等。通过合理配置,可以构建出高可用的数据库系统,保证在主服务器故障...

    redis 主从切换 实现HA 的方法和工具

    Keepalived是一个开源工具,主要用于实现网络服务的高可用性和负载均衡。在Redis HA场景中,Keepalived可以配合主从复制实现故障检测和自动故障转移。 1. VRRP协议:Keepalived基于虚拟路由冗余协议(VRRP),当主...

    keepalived 配置redis高可用

    本篇将详细探讨如何使用Keepalived来配置Redis实现高可用,以便在单点故障时能无缝切换到备份节点,保证数据的连续性和一致性。 首先,让我们理解一下Keepalived的角色。Keepalived是一款开源工具,主要用于实现IP...

    keepalived+redis高可用主备配置文件和脚本

    - 为了实现高可用,Redis提供了主从复制(Replication)、Sentinel监控系统和Cluster分布式集群等机制。 3. **Keepalived+Redis高可用配置**: - 配置主备模式,通常会设置两台服务器分别运行`keepalived`,一台...

    Redis+keepalived搭建教程和高可用测试

    在构建高可用性(High Availability, HA)的系统时,Redis和Keepalived的结合使用是一种常见的解决方案。本文将深入探讨如何使用这两种技术搭建高可用的Redis服务,并进行相关的测试。 **Redis概述** Redis是一个开源...

    高可用Redis:主从复制、sentinel哨兵、漂移VIP故障转移.pdf

    这通常通过外部的网络配置来实现,如使用IPVS、Keepalived或路由器配置等。 总的来说,Redis的高可用性是通过主从复制来实现数据备份和读取负载分散,通过哨兵模式进行故障检测和自动故障转移,以及通过漂移VIP来...

    Redis哨兵主从模式+keepalived

    在Java开发中,通过Jedis或Lettuce等Redis客户端库,可以方便地与Redis Sentinel+Keepalived集群进行交互,实现高可用的数据存储和读写操作。 总结,Redis哨兵主从模式与Keepalived的结合是企业级应用中保障数据...

    keepalived 监测mysql&&redis 高可用配置和脚本

    本教程将深入探讨如何使用Keepalived来监测和管理MySQL及Redis服务,以构建高可用的数据库环境。 **Keepalived简介** Keepalived基于VRRP(Virtual Router Redundancy Protocol)协议,它的主要作用是在多台服务器...

    keepalived redis config file

    标题"keepalived redis config file"表明我们将关注的是使用keepalived作为故障转移工具来配合Redis实现高可用配置。Keepalived是一款开源软件,它通过VRRP(Virtual Router Redundancy Protocol)协议提供负载均衡...

Global site tag (gtag.js) - Google Analytics