关于keepalived的详细介绍,请移步本人相关博客:

功能 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源),也可以通过源码编译的方式来安装  

[root@P2Pp_Red01 ~]# yum install -y redis[root@P2Pp_Red02 ~]# yum install -y redis

    2.修改配置文件

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

[root@P2Pp_Red01 ~]# vi /etc/redis.confbind 0.0.0.0其余都可以安装默认状态

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

[root@P2Pp_Red02 ~]# vi /etc/redis.confbind 0.0.0.0slaveof 10.13.6.13 6379 //指定主redis的地址与端口

    3.查看主从状态

[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,两台机器都需要安装

[root@P2Pp_Red01 ~]# yum install -y keepalived[root@P2Pp_Red02 ~]# yum install -y keepalived

    2.准备配置文件

        ①、主redis的配置文件,关于各行代表的意思,请移步我的另外一篇文档,链接见文章开头

[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的配置文件

[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是一样的

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