基于keepalived对redis做高可用配置

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介:

    关于keepalived的详细介绍,请移步本人相关博客:http://wangfeng7399.blog.51cto.com/3518031/1405785

功能 ip地址 安装软件
主redis 10.13.6.13 redis,keepalived
从redis 10.13.6.16 redis,keepalived
VIP 10.13.6.17
一、redis主从搭建

    1.redis安装

    本文通过yum源的安装方式来安装(需要配置epel源),也可以通过源码编译的方式来安装  

1
2
[root@P2Pp_Red01 ~] # yum install -y redis
[root@P2Pp_Red02 ~] # yum install -y redis

    2.修改配置文件

        ①、主redis需要修改的文件及内容

1
2
3
[root@P2Pp_Red01 ~] # vi /etc/redis.conf
bind 0.0.0.0
其余都可以安装默认状态

        ②、从redis需要修改的文件及内容

1
2
3
[root@P2Pp_Red02 ~] # vi /etc/redis.conf
bind 0.0.0.0
slaveof 10.13.6.13 6379  // 指定主redis的地址与端口

    3.查看主从状态

1
2
3
4
5
6
7
8
9
[root@P2Pp_Red01 ~] # redis-cli INFO |grep role -A 3
role:master
slave0:10.13.6.16,45270,online
db0:keys=6,expires=0
[root@P2Pp_Red02 ~] #  redis-cli INFO |grep role -A 3
role:slave
master_host:10.13.6.13
master_port:6379
master_link_status:up

二、使用keepalived对redis做高可用

    1.安装keepalived,两台机器都需要安装

1
2
[root@P2Pp_Red01 ~] # yum install -y keepalived
[root@P2Pp_Red02 ~] # yum install -y keepalived

    2.准备配置文件

        ①、主redis的配置文件,关于各行代表的意思,请移步我的另外一篇文档,链接见文章开头

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
[root@P2Pp_Red01 scripts] # vi /etc/keepalived/keepalived.conf
! Configuration File  for  keepalived
 
global_defs {
    notification_email {
      acassen@firewall.loc
      failover@firewall.loc
      sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 10.13.4.17
    smtp_connect_timeout 30
    router_id LVS_DEVEL
}
vrrp_script chk_redis {
     script  "killall -0 redis-server"
     interval 2
}
vrrp_instance VI_1 {
     state MASTER
     interface eth0
     virtual_router_id  100
     priority 100
     advert_int 1
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     virtual_ipaddress {
         10.13.6.17
     }
track_script {
     chk_redis
}
         notify_master  /etc/keepalived/scripts/redis_master .sh
         notify_backup  /etc/keepalived/scripts/redis_backup .sh
         notify_fault   /etc/keepalived/scripts/redis_fault .sh
         notify_stop    /etc/keepalived/scripts/redis_stop .sh
 
}
~[root@P2Pp_Red01 ~] # vi /etc/keepalived/scripts/redis_master.sh 
 
#!/bin/bash
REDISCLI= "/usr/bin/redis-cli"
LOGFILE= "/var/log/keepalived-redis-state.log"
 
echo  "[master]"  >> $LOGFILE
date  >> $LOGFILE
echo  "Being master...."  >> $LOGFILE 2>&1
 
echo  "Run SLAVEOF cmd ..."  >> $LOGFILE
$REDISCLI SLAVEOF 10.13.4.13 6379 >> $LOGFILE  2>&1
sleep  10
#延迟10秒以后待数据同步完成后再取消同步状态
 
echo  "Run SLAVEOF NO ONE cmd ..."  >> $LOGFILE
$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1
~
[root@P2Pp_Red01 ~] # vi /etc/keepalived/scripts/redis_backup.sh 
 
#!/bin/bash
REDISCLI= "/usr/bin/redis-cli"
LOGFILE= "/var/log/keepalived-redis-state.log"
 
echo  "[backup]"  >> $LOGFILE
date  >> $LOGFILE
echo  "Being slave...."  >> $LOGFILE 2>&1
 
sleep  15
#延迟15秒待数据被对方同步完成之后再切换主从角色
echo  "Run SLAVEOF cmd ..."  >> $LOGFILE
$REDISCLI SLAVEOF 10.13.4.13 6379 >> $LOGFILE  2>&1
[root@P2Pp_Red01 scripts] # vi /etc/keepalived/scripts/redis_stop.sh 
 
#!/bin/bash
 
LOGFILE= /var/log/keepalived-redis-state .log
 
echo  "[stop]"  >> $LOGFILE
date  >> $LOGFILE
[root@P2Pp_Red01 scripts] # vi /etc/keepalived/scripts/redis_fault.sh 
 
#!/bin/bash
GFILE= /var/log/keepalived-redis-state .log
 
echo  "[fault]"  >> $LOGFILE
date  >> $LOGFILE
 
~

        ②、准备从redis的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
[root@P2Pp_Red02 ~] # vi /etc/keepalived/keepalived.conf
 
! Configuration File  for  keepalived
 
global_defs {
    notification_email {
      acassen@firewall.loc
      failover@firewall.loc
      sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_server 10.13.4.13
    smtp_connect_timeout 30
    router_id LVS_DEVEL
}
vrrp_script chk_redis {
     script  "killall -0 redis-server"
     interval 1
}
vrrp_instance VI_1 {
     state BACKUP
     interface eth0
     virtual_router_id 100
     priority 99
     advert_int 1
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     virtual_ipaddress {
         10.13.6.17
     }
#track_script {
#    chk_redis
#}
#        notify_master /etc/keepalived/scripts/redis_master.sh
#        notify_backup /etc/keepalived/scripts/redis_backup.sh
#        notify_fault  /etc/keepalived/scripts/redis_fault.sh
#        notify_stop   /etc/keepalived/scripts/redis_stop.sh
 
[root@P2Pp_Red02 ~] # vi /etc/keepalived/scripts/redis_master.sh 
 
#!/bin/bash
REDISCLI= "/usr/bin/redis-cli"
LOGFILE= "/var/log/keepalived-redis-state.log"
 
echo  "[master]"  >> $LOGFILE
date  >> $LOGFILE
echo  "Being master...."  >> $LOGFILE 2>&1
 
echo  "Run SLAVEOF cmd ..."  >> $LOGFILE
$REDISCLI SLAVEOF 10.13.6.13 6379 >> $LOGFILE  2>&1
sleep  10
#延迟10秒以后待数据同步完成后再取消同步状态
 
echo  "Run SLAVEOF NO ONE cmd ..."  >> $LOGFILE
$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1
~
[root@P2Pp_Red02 ~] # vi /etc/keepalived/scripts/redis_backup.sh 
 
#!/bin/bash
REDISCLI= "/usr/bin/redis-cli"
LOGFILE= "/var/log/keepalived-redis-state.log"
 
echo  "[backup]"  >> $LOGFILE
date  >> $LOGFILE
echo  "Being slave....
 
sleep  15
#延迟15秒待数据被对方同步完成之后再切换主从角色
echo  "Run SLAVEOF cmd ..."  >> $LOGFILE
$REDISCLI SLAVEOF 10.13.6.13 6379 >> $LOGFILE  2>&1
其余的两个文件跟主redis是一样的

本处将不再给模拟故障,但是测试时通过的,现在已经在生产环境中使用


本文转自wangfeng7399 51CTO博客,原文链接:http://blog.51cto.com/wangfeng7399/1591275,如需转载请自行联系原作者


相关文章
|
10天前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。
|
17天前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
3月前
|
NoSQL 安全 Linux
设置Redis在CentOS7上的自启动配置
这些步骤总结了在CentOS 7系统上设置Redis服务自启动的过程。这些命令提供了一个直接且明了的方式,确保Redis作为关键组件在系统启动时能自动运行,保障了依赖于Redis服务的应用的稳定性和可用性。
396 9
|
NoSQL Redis
基于Redis的高可用分布式锁——RedLock
这篇文章介绍了基于Redis的高可用分布式锁RedLock的概念、工作流程、获取和释放锁的方法,以及RedLock相比单机锁在高可用性上的优势,同时指出了其在某些特殊场景下的不足,并提到了ZooKeeper作为另一种实现分布式锁的方案。
428 2
基于Redis的高可用分布式锁——RedLock
|
7月前
|
NoSQL Ubuntu 网络安全
在 Ubuntu 20.04 上安装和配置 Redis
在 Ubuntu 20.04 上安装和配置 Redis 的步骤如下:首先更新系统包,然后通过 `apt` 安装 Redis。安装后,启用并启动 Redis 服务,检查其运行状态。可选配置包括修改绑定 IP、端口等,并确保防火墙设置允许外部访问。最后,使用 `redis-cli` 测试 Redis 功能,如设置和获取键值对。
290 1
|
9月前
|
存储 监控 NoSQL
NoSQL与Redis配置与优化
通过合理配置和优化Redis,可以显著提高其性能和可靠性。选择合适的数据结构、优化内存使用、合理设置持久化策略、使用Pipeline批量执行命令、以及采用分布式集群方案,都是提升Redis性能的重要手段。同时,定期监控和维护Redis实例,及时调整配置,能够确保系统的稳定运行。希望本文对您在Redis的配置与优化方面有所帮助。
162 23
|
9月前
|
存储 监控 NoSQL
NoSQL与Redis配置与优化
通过合理配置和优化Redis,可以显著提高其性能和可靠性。选择合适的数据结构、优化内存使用、合理设置持久化策略、使用Pipeline批量执行命令、以及采用分布式集群方案,都是提升Redis性能的重要手段。
166 7
|
9月前
|
存储 负载均衡 NoSQL
搭建高可用及负载均衡的Redis
通过本文介绍的高可用及负载均衡Redis架构,可以有效提升Redis服务的可靠性和性能。主从复制、哨兵模式、Redis集群以及负载均衡技术的结合,使得Redis系统在应对高并发和数据一致性方面表现出色。这些配置和技术不仅适用于小型应用,也能够支持大规模企业级应用的需求。希望本文能够为您的Redis部署提供实用指导和参考。
680 9
|
11月前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
12月前
|
存储 NoSQL Redis
Redis 配置
10月更文挑战第14天
190 1