基于keepalived对redis做高可用配置---转载



关于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

[[email protected]_Red01 ~]# yum install -y redis

[[email protected]_Red02 ~]# yum install -y redis

2.修改配置文件

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


1

2

3

[[email protected]_Red01 ~]# vi /etc/redis.conf

bind 0.0.0.0

其余都可以安装默认状态

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


1

2

3

[[email protected]_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

[[email protected]_Red01 ~]# redis-cli INFO |grep role -A 3

role:master

slave0:10.13.6.16,45270,online

db0:keys=6,expires=0

[[email protected]_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

[[email protected]_Red01 ~]# yum install -y keepalived

[[email protected]_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

[[email protected]_Red01 scripts]# vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

   notification_email {

     [email protected]

     [email protected]

     [email protected]

   }

   notification_email_from [email protected]

   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

}

~[[email protected]_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

~

[[email protected]_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

[[email protected]_Red01 scripts]# vi /etc/keepalived/scripts/redis_stop.sh 

#!/bin/bash

LOGFILE=/var/log/keepalived-redis-state.log

echo "[stop]" >> $LOGFILE

date >> $LOGFILE

[[email protected]_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

[[email protected]_Red02 ~]# vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

   notification_email {

     [email protected]

     [email protected]

     [email protected]

   }

   notification_email_from [email protected]

   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

[[email protected]_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

~

[[email protected]_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是一样的

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

本文出自 “IT民工--小枫” 博客,请务必保留此出处http://wangfeng7399.blog.51cto.com/3518031/1591275

时间: 2024-10-08 20:47:01

基于keepalived对redis做高可用配置---转载的相关文章

基于keepalived对HAproxy做高可用集群

一.Keepalived简介 Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器. Layer3,4&7工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下: Layer3:Keepalived使用Layer3的方式

基于keepalived实现mariadb的高可用

提示: 上一篇博文己经介绍过了keepalived是什么,有那些参数,也介绍过基于corosync+pacemaker实现mairadb高可用,这次我将介绍一下如何利用keepalived对mariadb实现高可用. ----本文大纲 前言 主机环境 配置过程 测试 ----------- 一.前言 说到对mariadb实现高可用,也就是就说,当有任何一个mariadb挂掉之后在还有其它mariadb主机接管业务,完全不会影响到线上的业务,当挂掉的主机修复后重新上线,周而复始的工作,这就要对ma

基于keepalived搭建MySQL的高可用集群

http://www.cnblogs.com/ivictor/p/5522383.html 基于keepalived搭建MySQL的高可用集群 MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Cluster 比较常用的是keepalived+双主,MHA和PXC. 对于小公司,一般推荐使用keepalived+双主,简单. 下面来部署一下 配置环境: 角色                          

基于keepalived实现LVS的高可用

keepalived简介 首先简单介绍一下VRRP协议(虚拟路由器冗余协议).VRRP是一种容错协议,它可以将一组路由器组织成一个虚拟路由器,这个虚拟路由器仅适用一个IP地址,这个IP地址配置在其中的一台路由器上,这个路由器即为主路由器(MASTER),其余的为备用路由器(BACKUP).如果这个路由器组内的MASTER路由器出现故障了,BACKUP路由器将会通过选举策略选出一个新的MASTER路由器继续向外提供服务.这样就保证了网络之间的通信不会中断. keepalived即采用了VRRP协议

keepalived+mysql双主高可用配置

具体架构图如下 两个节点一主一从(从库上面也可以再挂一个从库),或者是双主,再利用keepalived在出现容灾时进行高可用切换. Keepalived原理说明: 其实这个原理可以很简单的用一个故事说明. 以前有一个帮派,像其他所有的帮派一样,有老大.这个老大活的也很憋屈,不仅自己做所有的活,还要隔一段时间就要告诉所有小弟我是老大,你们老实点.所有的小弟也是很乖的,只要老大不死,他们肯定不会抢夺老大的地位,但是一旦他们都收不到老大的通信的话,他们就确信老大死了,他们就开始抢夺老大的地位了.不过他

基于keepalived实现nginx的高可用

keepalive路由软件是由c语言编写,为loadbalance Linux系统提供简单.健壮的高可用性,keepalive根据loadbalance服务器池的健康实现动态检查,自适应维护和管理.另一方面,高可用性是通过VRRP协议.VRRP是路由器的基本砖故障转移.此外,keepalive实现一组钩子VRRP有限状态机提供低级和高速协议交互.keepalive框架都可以单独使用或一起提供弹性的基础设施. VRRP是一个"选举"协议,它能够动态地将一个虚拟路由器的责任指定至同一个VR

使用keepalived 实现redis主从高可用

keepalived官方有中文文档:LVS + Keepalived Chinese application doc - March 16, 2010. keepalived 实现VRRP协议,从路由级别实现VIP切换,可以完全避免类似heartbeat 脑裂问题.可以很nice的实现主从.主备.互备方案,尤其是无状态业务,有状态业务就需要额外花些功夫了. 既然mysql 可以使用keepalived很好的做到主从切换,redis自然也就有样学样就成了. redis主从实现完全没有mysql成熟

Redis Sentinel高可用配置及C#访问

本文环境如下: 操作系统:ubuntu-14.04.1-desktop-amd64 Redis:2.8.19 如果使用虚拟机则将每台的网络设置为桥接,否则他们之间能连上,局域网连不上. 系统设计如图: 一.安装Redis 可以参考之前文章,采用离线安装,本次以Sentinel配置为重,所以以联网安装为例. 呼出ubuntu终端,依次执行下面命令: wget http://download.redis.io/releases/redis-2.8.19.tar.gz tar xzf redis-2.

keepalived实现redis双机高可用

现在的生产环境基本上都采用主备方式,而如何实现redis的主备呢?一般情况下,redis实现主从复制比较简单,只需要在从服务器的配置文件里配置 "slaveof"即可.但这样存在一个问题:主服务器挂掉时,可临时将业务地址转移到从服务器,但从服务器无法进行写操作. 为解决这个问题,在网上查找了一些资料.主要有以下几种方案 1.使用keepalived+监控脚本实现主备切换 2.使用redis cluster实现双主切换,原理就是模仿MySQL的bin-log机制. 本文介绍一下第1种方案