`
Everyday都不同
  • 浏览: 723555 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

测试redis+keepalived实现简单的主备切换

阅读更多

keepalived是一个是集群管理中保证集群高可用的一个服务软件,它具备心跳检测的功能。运用在redis上,则是具备主备切换的控制功能。

keepalived的主备切换方案的设计思想如下:

当 Master 与 Slave 均运作正常时, Master负责服务,Slave负责Standby;

 当 Master 挂掉,Slave 正常时, Slave接管服务,同时关闭主从复制功能;

 当 Master 恢复正常,则从Slave同步数据,同步数据之后关闭主从复制功能,恢复Master身份,于此同时Slave等待Master同步数据完成之后,恢复Slave身份。

 然后依次循环。

 

 下面就来大概讲下实现过程:

 

 环境准备

 主:10.15.34.21

 备:10.15.34.22

 VIP(虚拟IP):10.15.34.23,10.15.34.24

 

 0.在主机和备机上分别创建用户部署redis和keepalived,如用户路径:/home/cachedb

 1.在主机和备机上安装redis(过程略);

 2.在主机和备机上安装keepalived(过程略);

 3.修改主机和备机上的keepalived的配置文件keepalived.conf(可将原有的配置文件备份成keepalived.conf.bak)

     1)主机的keepalived配置:

 

! Configuration File for keepalived

global_defs {
   router_id LVS_REDIS_TEST_21
}

vrrp_script chk_redis_1 {
    script "/home/cachedb/redis/scripts/redis_check.sh 10.15.34.21 38001"
    interval 10
    timeout 2
    fall 3
}
vrrp_script chk_redis_2 {
    script "/home/cachedb/redis/scripts/redis_check.sh 10.15.34.21 38002"
    interval 10
    timeout 2
    fall 3
}


vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 40
    priority 150
    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_redis_1
    }
    virtual_ipaddress {
        10.15.34.23 
    }
    notify_master "/home/cachedb/redis/scripts/redis_master.sh 10.15.34.21"
    notify_backup "/home/cachedb/redis/scripts/redis_backup.sh 10.15.34.21 38001 10.15.34.22 38001"
    notify_fault  "/home/cachedb/redis/scripts/redis_fault.sh"
    notify_stop   "/home/cachedb/redis/scripts/redis_stop.sh"
}

vrrp_instance VI_2 {
    state BACKUP
    interface eth0
    virtual_router_id 41
    priority 150
    nopreempt
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_redis_2
    }
    virtual_ipaddress {
        10.15.34.54
    }
    notify_master "/home/cachedb/redis/scripts/redis_master.sh 10.15.34.21 38002"
    notify_backup "/home/cachedb/redis/scripts/redis_backup.sh 10.15.34.21 38002 10.15.34.22 38002"
    notify_fault  "/home/cachedb/redis/scripts/redis_fault.sh"
    notify_stop   "/home/cachedb/redis/scripts/redis_stop.sh"
}

 2)备机的keepalived配置:

 

! Configuration File for keepalived

global_defs {
   router_id LVS_REDIS_TEST
}

vrrp_script chk_redis_1 {
    script "/home/cachedb/redis/scripts/redis_check.sh 10.15.34.22 38001"
    interval 10
    timeout 2
    fall 3
}
vrrp_script chk_redis_2 {
    script "/home/cachedb/redis/scripts/redis_check.sh 10.15.34.22 38002"
    interval 10
    timeout 2
    fall 3
}


vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 40
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_redis_1
    }
    virtual_ipaddress {
        10.15.34.33 
    }
    notify_master "/home/cachedb/redis/scripts/redis_master.sh 10.15.34.22 38001"
    notify_backup "/home/cachedb/redis/scripts/redis_backup.sh 10.15.34.22 38001 10.15.34.21 38001"
    notify_fault  "/home/cachedb/redis/scripts/redis_fault.sh"
    notify_stop   "/home/cachedb/redis/scripts/redis_stop.sh"
}

vrrp_instance VI_2 {
    state BACKUP
    interface eth0
    virtual_router_id 41
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_redis_2
    }
    virtual_ipaddress {
        10.15.34.34
    }
    notify_master "/home/cachedb/redis/scripts/redis_master.sh 10.15.34.22 38002"
    notify_backup "/home/cachedb/redis/scripts/redis_backup.sh 10.15.34.22 38002 10.15.34.21 38002"
    notify_fault  "/home/cachedb/redis/scripts/redis_fault.sh"
    notify_stop   "/home/cachedb/redis/scripts/redis_stop.sh"
}

 

 注意:

a. 备机的keepalived配置的priority要比主机的低;

b. 备机不能有nopreempt属性;

c.  virtual_router_id  这个主备配置的要对应一致,并且在局域网要唯一,注意使用默认的ID如51时要check改ID有木有被占用,若有就换一个。

d. interface eth0这个表名虚拟ip漂移的网卡为eth0,注意应该确保主备都有网卡eth0(没有的话也可以是eth1,eth2等)。可以用ifconfig来查看,并且主备都应该是相同的网卡eth~

 

配置完以后:

1)启动主机的redis服务,再在root下启动keepalived服务;

2)启动备机的redis服务,再在root下启动keepalived服务;

3)查看主机的角色:

./redis-cli -h 10.15.34.21 -p 38001



 查看备机的角色:

./redis-cli -h 10.15.34.22 -p 38001



 查看主机的redis-state的log日志:(Log日志的位置由redis_*.sh脚本文件里指定)

 



 再查看备机的redis-state的log日志:

 

 

 4)尝试kill掉主机的redis服务,再在备机上查看role角色,得到:



 可以看出它变成master了,而与此同时,它的redis-state.log日志如下:



 1)我们不妨在备机上用root用户查看VIP的漂移情况:(虚拟IP的漂移需要一小段时间,不是立刻~)

ip a



 在备机上可以发现虚拟IP的漂移情况。

1)而如果再重启之前master上的redis服务,会发现它的角色是slave了,这说明,master和salve发生了角色互换。

2)可以再尝试把备机上的redis服务kill掉,会发现主机上的角色会恢复成master;可以在主机上使用root用户来运行 ip a命令,会发现虚拟IP被漂移到主机上了。

 

系统日志位置:/var/log/messages

 

 

 

  • 大小: 25.8 KB
  • 大小: 3.3 KB
  • 大小: 3.7 KB
  • 大小: 22.4 KB
  • 大小: 2.9 KB
  • 大小: 16.4 KB
  • 大小: 17.5 KB
0
1
分享到:
评论
1 楼 vigorous2008 2016-07-18  
可以将用到的shell脚本发上来吗?谢谢

相关推荐

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

    它通过健康检查确保服务的正常运行,并在检测到故障时自动进行主备切换。 **Redis+Keepalived高可用架构** 1. **主从复制**:在高可用架构中,通常配置多个Redis实例作为从节点(slaves),通过复制主节点(master)的...

    keepalived + redis 实现双机热备

    - **主备切换**:通过 keepalived 监控 redis 主服务器的状态,一旦检测到主服务器出现故障,可以快速将流量切换到备份服务器,保证服务不间断。 - **负载均衡**:在多个 redis 实例之间分配请求,提升系统处理能力...

    nginx+keepalived+tomcat+redis文档

    ### Nginx+Keepalived+Tomcat+Redis 高可用与负载均衡架构解析 #### 架构概览 为了确保Web服务器的稳定运行及高效处理能力,采用Nginx+Keepalived+Tomcat+Redis的技术组合进行系统构建。这一架构通过多个组件的...

    Nginx+keepalived+tomcat集群搭建过程.doc

    2. 配置Keepalived:在`/etc/keepalived/keepalived.conf`中定义虚拟IP(VIP),并配置主备模式(master和backup)。在vrrp_instance部分指定监控的接口、虚拟IP、优先级以及会话保持策略。 3. 启动Keepalived服务:...

    Keepalived+nginx+tomcat+redis_session_share

    - **故障转移**:配置`Virtual Router Redundancy Protocol` (VRRP) 来实现主备切换,确保服务的连续性。 ### 四、总结 通过以上步骤的实施,构建了一个集成了`Keepalived`、`Nginx`、`Tomcat`以及`Redis`的高可用...

    Nginx+Tomcat+Keepalived实现高可用Web集群.docx

    而Keepalived则是用来实现服务的高可用性,通过VRRP协议确保在主服务器故障时能快速切换到备份服务器。 **Tomcat的安装与配置** 1. **下载Tomcat**:从官方网站获取最新版本的Tomcat(如9.0.20),并将tar.gz包...

    高可用的并发解决方案nginx+keepalived资料.zip

    2. **配置keepalived**:在两台服务器上分别安装keepalived,配置虚拟IP(VIP),并设置VRRP组,指定主备角色。 3. **设置健康检查**:在keepalived配置中添加对nginx服务的健康检查,如通过HTTP请求或TCP连接测试。...

    codis+lvs+keepalived

    Codis通过水平切片的方式对Redis进行水平扩展,使得用户能够通过简单的配置和部署即可将Redis的性能和容量进行线性扩展,满足大型应用场景的需求。Codis集群环境的搭建涉及到多个组件的配置和协同工作,其中包括...

    keepalived +nginx 终于搞定了

    `keepalived`分为两部分:健康检查(Health Check)和虚拟IP(VIP)管理,当主服务器出现问题时,它会将VIP转移到备份服务器,从而实现服务的无缝切换。 `nginx`是一款高性能的HTTP和反向代理服务器,以其高效的...

    keepalived 配置redis高可用

    1. **主备模式(Master-Slave)**:在Redis中,可以通过复制机制设置一个或多个从节点(Slaves),主节点负责写操作,从节点进行读操作并实时同步数据。当主节点故障时,可以手动或通过Keepalived自动将从节点提升为...

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

    4. 启动和测试:启动Keepalived服务,然后模拟主节点故障,观察虚拟IP是否能自动切换到从节点。 5. 阅读资料:`redis_HA.pdf`可能包含了更详细的步骤和配置示例,建议深入研究以获取更全面的理解。 总结来说,通过...

    suse12 redis-sensienl-keepalived双击热备部署

    在这个部署方案中,Redis被配置为双主模式(也称为双活或双击),搭配Sensu监控工具和Keepalived来实现自动故障切换,确保即使在一台服务器宕机的情况下,服务仍然能够不间断地运行。 **Redis双主模式** Redis双主...

    redis-keepavlied 相关配置

    Redis 是一个高性能的键值存储系统,而 Keepalived 则是一个网络守护进程,主要用于在主服务器故障时无缝地将流量切换到备份服务器。在本篇文章中,我们将深入探讨 Redis 和 Keepalived 配置的相关知识点,以及如何...

    keepalived_redis_ha方案

    【keepalived_redis_ha方案】是用于实现高可用性(HA)的解决方案,结合了Keepalived和Redis两个组件,以确保在主服务器故障时能够无缝切换到备份服务器,保持服务的连续性和数据的完整性。 **Keepalived** 是一个...

    FastDFS安装文档以及测试类,redis单点故障解决方案之keepalived

    配置中的重要部分包括虚拟IP地址、健康检查机制(如使用ping命令或自定义脚本检测Redis服务状态)和权重分配(决定主备切换时的优先级)。一旦主Redis节点出现故障,Keepalived会自动将VIP漂移到健康的备份节点,...

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

    Keepalived就是一种常用的开源工具,用于实现这种高可用性,尤其在负载均衡和故障切换场景中。本教程将深入探讨如何使用Keepalived来监测和管理MySQL及Redis服务,以构建高可用的数据库环境。 **Keepalived简介** ...

    keepalived&tomcat;代码与脚本

    Keepalived是一款开源软件,主要功能是实现基于VRRP(Virtual Router Redundancy Protocol)协议的负载均衡和故障切换。它使得当主服务器出现故障时,能将流量无缝地切换到备份服务器,保证服务的连续性。在配置中...

    第四十六章:Redis sentinel哨兵集群1

    总结来说,Redis Sentinel是实现Redis集群高可用的重要工具,通过监控、通知和故障迁移等功能,确保了即使在主服务器出现问题时,系统仍能持续稳定运行。配合Keepalived和Haproxy,可以进一步提高系统的可用性和用户...

Global site tag (gtag.js) - Google Analytics