Redis高可用架构(1)—

Redis高可用架构(1)—Keepalive+VIP

发表于201536sylar 3,931 views

最近整理一下Redis高可用架构的文档,也准备分享出来,虽然这些架构也不是很复杂。
Redis
的高可用方案目前主要尝试过5种方式,其中2种方式已经在线上使用。

1Redis Master-Slave + Keepalive + VIP
这是很经典的db架构,也可以用与mysql的主从切换。
基本原理是:Keepalive通过脚本检测master的存活,然后通过漂移VIPVirtual IP)完成主从切换。

2Redis Master-Slave + DNS Service + Sentinel
基本原理是Sentinel集群进行Redis的存活检测和Redis M-S状态切换。
完成切换之后,sentinel调用notification-script参数制定的配置文件,通知DNS Server更改DNS配置,master dns解析执行新的master

3Redis Master-Slave + Configure CenterZookeeper + Sentinel.
基本原理和第三种方案相似,只是notification-script通知的是配置中心完成redis连接配置的修改,比如Zookeeper实现的配置中心。

4Redis Master-Slave + Sentinel + Twemproxy + Lvs.
这种方案层次比较多,sentinel通知twemproxy进行redis m-s的配置更改。

5Redis Cluster,目前redis3.0接近发布stable版本了。

1、基本架构图

2、基本构建与原理
1
Keepalive + VIP : redis master-slave上部署keepalivedredis instance存活检测脚本、以及告警通知脚本。
2
)当redis master失效的时候,VIPmaster上漂移到slave上,完成m-s角色和配置更改。
3
)客户端连接redis的参数中host设置的是VIP,整个切换过程对客户端透明。

3、优缺点与适用场景。
优点:实现简单,成本低。
缺点:整个集群的最大吞吐量受限于redis单实例的处理能力,除非一个应用使用多套这种Keepalive+VIP方案。
因而扩展能力较差,而且不适合目前单机部署多个redis实例的部署场景,而我们的一个物理机上至少部署8redis实例。
目前我们DBA已经否定了这种架构,不再支持部署这种集群。
适合场景:并发请求不是很高的应用。

4Keepalive配置和检测脚本
下面keepalive的简单配置、检测和通知脚本。
1
keepalive.conf
master
slave使用相同的配置脚本,其中要注意的地方state的配置都是backup状态,而且都是非抢占方式nopreempt

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

vrrp_script chk_redis {

        script "/etc/keepalived/redis_check.sh" 

        interval 2                                     

}

 

vrrp_instance VI_1 {

        state BACKUP                                

        interface bond0                            

        virtual_router_id 51

        priority 100                     

        nopreempt

 

        authentication {

                     auth_type PASS

                     auth_pass redis    

        }

        track_script {

                chk_redis               

        }

        virtual_ipaddress {

             10.203.31.216        

        }

 

        notify_master  "/etc/keepalived/notify.sh master"

        notify_backup  "/etc/keepalived/notify.sh backup"

}

2redis_check.shredis实例存活检测脚本。
master检测到redis处于failed状态,将会释放VIPslave机器将会获取VIP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#!/bin/bash

REDIS_BIN='/apps/svr/redis/bin'

REDIS_MASTER_HOST='127.0.0.1'

REDIS_MASTER_PORT=6379

 

ALIVE=`$REDIS_BIN/redis-cli -h $REDIS_MASTER_HOST -p $REDIS_MASTER_PORT  PING`

 

if [ "$ALIVE" == "PONG" ]; then

  echo $ALIVE

  exit 0

else

  echo $ALIVE

  exit 1

fi

3master-slave状态切换通知脚本,包括推送告警短信。
notify.sh

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

#!/bin/bash

REDIS_BIN='/apps/svr/redis/bin'

MASTER_IP='192.168.0.216' # virtual ip

MASTER_PORT=6379

 

status=$1

echo $status

 

if [ "$status" = "master" ]

then

   # promoting slave to master

   echo " config set slave-read-only no " | $REDIS_BIN/redis-cli -h 127.0.0.1 -p  $MASTER_PORT

   echo " slaveof no one "                | $REDIS_BIN/redis-cli -h 127.0.0.1 -p  $MASTER_PORT

   echo " config rewrite "                | $REDIS_BIN/redis-cli -h 127.0.0.1 -p  $MASTER_PORT

   # pushing simple message to mobile or email

 

elif [ "$status" = "backup" ]

then

   # degrading master to slave

   echo "config set slave-read-only yes " | $REDIS_BIN/redis-cli -h 127.0.0.1 -p  $MASTER_PORT

   echo "slaveof $MASTER_IP $MASTER_PORT" | $REDIS_BIN/redis-cli -h 127.0.0.1 -p  $MASTER_PORT

   echo " config rewrite "                | $REDIS_BIN/redis-cli -h 127.0.0.1 -p  $MASTER_PORT

 

   # pushing simple message to mobile or email

fi

 

exit 0

 

代码下载地址: https://pan.quark.cn/s/bc087ffa872a "测控电路课后习题详解"文件.pdf是一份极具价值的学术资料,其中系统地阐述了测控电路的基础理论、系统构造、核心特性及其实际应用领域。 以下是对该文献的深入解读和系统梳理:1.1测控电路在测控系统中的核心功能测控电路在测控系统的整体架构中扮演着不可或缺的角色。 它承担着对传感器输出信号进行放大、滤除杂音、提取有效信息等关键任务,并且依据测量与控制的需求,执行必要的计算、处理与变换操作,最终输出能够驱动执行机构运作的指令信号。 测控电路作为测控系统中最具可塑性的部分,具备易于放大信号、转换模式、传输数据以及适应多样化应用场景的优势。 1.2决定测控电路精确度的关键要素影响测控电路精确度的核心要素包括:(1)噪声与干扰的存在;(2)失调现象与漂移效应,尤其是温度引起的漂移;(3)线性表现与保真度水平;(4)输入输出阻抗的特性影响。 在这些要素中,噪声干扰与失调漂移(含温度效应)是最为关键的因素,需要给予高度关注。 1.3测控电路的适应性表现测控电路在测控系统中展现出高度的适应性,具体表现在:* 具备选择特定信号、灵活实施各类转换以及进行信号处理与运算的能力* 实现模数转换与数模转换功能* 在直流与交流、电压与电流信号之间进行灵活转换* 在幅值、相位、频率与脉宽信号等不同参数间进行转换* 实现量程调整功能* 对信号实施多样化的处理与运算,如计算平均值、差值、峰值、绝对值,进行求导数、积分运算等,以及实现非线性环节的线性化处理、逻辑判断等操作1.4测量电路输入信号类型对电路结构设计的影响测量电路的输入信号类型对其电路结构设计产生显著影响。 依据传感器的类型差异,输入信号的形态也呈现多样性。 主要可分为...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值