基于keepalived对redis做高可用配置

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

功能ip地址安装软件
主redis10.13.6.13redis,keepalived
从redis10.13.6.16redis,keepalived
VIP10.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个

红包金额最低5元

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

抵扣说明:

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

余额充值