Redis集群双主实例的高可用方案(redis集群双主实例)
REDIS集群双主实例的高可用方案
Redis是一种分布式内存数据库,具有高性能、易于管理、持久化存储等优点,在互联网系统中廣泛使用。当我们在运行环境中使用Redis时,可用性始终是设计Redis集群高可用解决方案的关键。考虑到Redis不支持主从复制,双主实例是实现Redis高可用的最佳解决方案。
Redis双主实例高可用架构中,一般有:双主实例、keepalived、主从复制等技术组成。
两台master实例都会运行Redis,并通过NTP服务器统一时间。然后,套用一个Keepalived的高可用虚拟IP,利用heatbeat结点的功能进行自动感知,有一台原有的节点不可用,自动将虚拟IP切换到另一台机器上,以确保高可用。将两台实例节点分别配置成master和slave,做Redis主从复制。这样,可将虚拟IP指向其中一台master实例,当一台实例不可用时,可以将虚拟IP切换到另一台实例的master上来实现高可用,并且有主从复制,也可在实例失效后进行主从切换来恢复业务。
本文介绍了Redis集群双主实例的高可用方案,通过将双主保持高可用,主从复制的技术组合,使Redis集群实现高可用,并且可以自动容错恢复。
以下是实现双主实例高可用的shell脚本:
“`
#!/bin/bash
#申明变量
master_host1=”host1″
master_host2=”host2″
#给双主机分配虚拟IP
ifconfig lo:0 10.3.5.5 netmask 255.255.255.255 up
ip route add 10.3.5.0/24 dev lo:0
#启动keepalived
keepalived -D -f /etc/keepalived/keepalived.conf -P -l
#设置keepalived的链接探测
#
#定义用于检测双主是否存活的检测报文
vrrp_script chk_redis_master {
script “/etc/keepalived/redis_check.sh”
interval 10 #检测间隔
weight -2 #权重,此处设置为-2,当双主都可用时会轮转,取值为-2时,会因为权重问题停止同步,可以指定一台master实例固定接收VIP
}
#配置检测报文
vrrp_instance VI_1 {
interface $eth1 #指定网卡,在完成配置之前,将其设置为on
state BACKUP #指定该keepalived对双主的角色,master节点为MASTER,slave节点为BACKUP
virtual_router_id 51 #指定该keepalived的ID号,51表示master,52表示slave
priority 100 #优先级,150表示master,100表示slave
advert_int 1 #定义双主之间心跳的时间间隔
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
#虚拟IP的地址,此处为192.168.1.111,可根据具体情况设置
10.3.5.5
}
track_script {
chk_redis_master
}
}
#定义一组用于检测同步状态的检测报文
vrrp_script chk_sync_state {
script “/etc/keepalived/redis_sync_check.sh”
interval 10
weight -3 #权重,指定优先级,双主都可用时,会轮转
}
#配置同步检测报文
vrrp_sync_group VG_1 {
group {
VI_1
}
track_script {
chk_sync_state
}
}