标签:
关于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 
 | 
[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.confbind 0.0.0.0其余都可以安装默认状态 | 
②、从redis需要修改的文件及内容
| 
 1 
2 
3 
 | 
[root@P2Pp_Red02 ~]# vi /etc/redis.confbind 0.0.0.0slaveof 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 3role:masterslave0:10.13.6.16,45270,onlinedb0:keys=6,expires=0[root@P2Pp_Red02 ~]#  redis-cli INFO |grep role -A 3role:slavemaster_host:10.13.6.13master_port:6379master_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 keepalivedglobal_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/bashREDISCLI="/usr/bin/redis-cli"LOGFILE="/var/log/keepalived-redis-state.log"echo "[master]" >> $LOGFILEdate >> $LOGFILEecho "Being master...." >> $LOGFILE 2>&1echo "Run SLAVEOF cmd ..." >> $LOGFILE$REDISCLI SLAVEOF 10.13.4.13 6379 >> $LOGFILE  2>&1sleep 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/bashREDISCLI="/usr/bin/redis-cli"LOGFILE="/var/log/keepalived-redis-state.log"echo "[backup]" >> $LOGFILEdate >> $LOGFILEecho "Being slave...." >> $LOGFILE 2>&1sleep 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/bashLOGFILE=/var/log/keepalived-redis-state.logecho "[stop]" >> $LOGFILEdate >> $LOGFILE[root@P2Pp_Red01 scripts]# vi /etc/keepalived/scripts/redis_fault.sh #!/bin/bashGFILE=/var/log/keepalived-redis-state.logecho "[fault]" >> $LOGFILEdate >> $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 keepalivedglobal_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/bashREDISCLI="/usr/bin/redis-cli"LOGFILE="/var/log/keepalived-redis-state.log"echo "[master]" >> $LOGFILEdate >> $LOGFILEecho "Being master...." >> $LOGFILE 2>&1echo "Run SLAVEOF cmd ..." >> $LOGFILE$REDISCLI SLAVEOF 10.13.6.13 6379 >> $LOGFILE  2>&1sleep 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/bashREDISCLI="/usr/bin/redis-cli"LOGFILE="/var/log/keepalived-redis-state.log"echo "[backup]" >> $LOGFILEdate >> $LOGFILEecho "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
标签:
原文地址:http://www.cnblogs.com/davidwang456/p/4180378.html