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

}

}


      

数据运维技术 » Redis集群双主实例的高可用方案(redis集群双主实例)