一、环境

系统        CentOS 6.4x64最小化安装

redis-m       192.168.3.61

redis-s       192.168.3.62

vip         192.168.3.63

二、安装redis-m

#下载软件
[root@redis-m ~]# wget http://download.redis.io/releases/redis-2.8.9.tar.gz
[root@redis-m ~]# tar xf redis-2.8.9.tar.gz 
[root@redis-m ~]# cd redis-2.8.9
[root@redis-m redis-2.8.9]# make
[root@redis-m redis-2.8.9]# make PREFIX=/usr/local/redis-2.8.9 install
[root@redis-m redis-2.8.9]# ln -s /usr/local/redis-2.8.9/ /usr/local/redis
[root@redis-m redis-2.8.9]# echo 'PATH=$PATH:/usr/local/redis/bin' >>/etc/profile
[root@redis-m redis-2.8.9]# source /etc/profile

#复制配置文件
[root@redis-m ~]# mkdir /usr/local/redis/conf
[root@redis-m ~]# cp /root/redis-2.8.9/redis.conf /usr/local/redis/conf/

#修改redis启动产生的警告
[root@redis-m ~]# sysctl vm.overcommit_memory=1
vm.overcommit_memory = 1
[root@redis-m ~]# echo "vm.overcommit_memory = 1" >>/etc/sysctl.conf
[root@redis-m ~]# sysctl -p

创建启动脚本

[root@redis-m ~]# vim /etc/init.d/redis
#!/bin/bash
# chkconfig: 2345 50 30
#
# description: Redis service
#
#Script:Redis command
  
Redisserver=/usr/local/redis/bin/redis-server
Rediscli=/usr/local/redis/bin/redis-cli
Redisconf=/usr/local/redis/conf/redis.conf
  
function_start()
{
    printf "start redis-server..."
    $Redisserver $Redisconf &>/dev/null  & 
    if [ $? -eq 0 ];then
        echo "runing"
    fi
}
  
function_stop()
{
    printf "stop redis-server..."
    $Rediscli -p 6379 shutdown
    if [ $? -eq 0 ];then
        echo "stop"
    fi
}
  
function_restart()
{
    function_start
    function_stop
}
  
function_kill()
{
    killall redis-server
}
  
function_status()
{
    a=`ps -A|grep "redis-server\>" -c`
    if [ $a -ge 1 ];then
        echo -e "The Redis is [\e[0;32;5m runing \e[0m]"
    else
        echo -e "The Redis is [\e[0;31;5m not run \e[0m]"
    fi
}
  
case "$1" in
        start)
                function_start
                ;;
        stop)
                function_stop
                ;;
        restart)
                function_stop
                function_start
                ;;
        kill)
                function_kill
                ;;
        status)
                function_status
                ;;
              *)
              echo "Usage: /etc/init.d/redis {start|stop|restart|kill|status}"
              
esac
  
exit

#将redis服务添加到开机自启动
[root@redis-m ~]# chmod +x /etc/init.d/redis 
[root@redis-m ~]# chkconfig --add redis
[root@redis-m ~]# chkconfig redis on
[root@redis-m ~]# service redis start        #启动redis服务
start redis-server...runing
[root@redis-m ~]# netstat -tunlp |grep redis
tcp        0      0 0.0.0.0:6379                0.0.0.0:*                   LISTEN      3277/redis-server * 
tcp        0      0 :::6379                     :::*                        LISTEN      3277/redis-server *

修改redis配置文件

[root@redis-m ~]# egrep -v "^$|^#" /usr/local/redis/conf/redis.conf 
daemonize no
pidfile /var/run/redis.pid
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 0
loglevel notice
logfile ""
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /usr/local/redis
slave-serve-stale-data yes
slave-read-only yes
repl-disable-tcp-nodelay no
slave-priority 100
appendonly yes                        #需要打开aof持久化
appendfilename "appendonly.aof"
appendfsync everysec                  #选择everysec方式
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

重启redis服务

[root@redis-m ~]# service redis restart
stop redis-server...stop
start redis-server...runing
[root@redis-m ~]# netstat -tunlp |grep redis
tcp        0      0 0.0.0.0:6379                0.0.0.0:*                   LISTEN      3324/redis-server * 
tcp        0      0 :::6379                     :::*                        LISTEN      3324/redis-server *

三、安装redis-s

安装过程和redis-m基本上是一样的

[root@redis-s ~]# tar xf redis-2.8.9.tar.gz 
[root@redis-s ~]# cd redis-2.8.9
[root@redis-s redis-2.8.9]# make
[root@redis-s redis-2.8.9]# make PREFIX=/usr/local/redis-2.8.9 install
[root@redis-s redis-2.8.9]# ln -s /usr/local/redis-2.8.9/ /usr/local/redis
[root@redis-s ~]# echo 'PATH=$PATH:/usr/local/redis/bin' >>/etc/profile
[root@redis-s ~]# source /etc/profile
[root@redis-s ~]# mkdir /usr/local/redis/conf
[root@redis-s ~]# cp /root/redis-2.8.9/redis.conf /usr/local/redis/conf/
[root@redis-s ~]# sysctl vm.overcommit_memory=1
vm.overcommit_memory = 1
[root@redis-s ~]# echo "vm.overcommit_memory = 1" >>/etc/sysctl.conf
[root@redis-s ~]# sysctl -p

修改后的redis.conf文件内容如下

[root@redis-s ~]# egrep -v "^$|^#" /usr/local/redis/conf/redis.conf 
daemonize no
pidfile /var/run/redis.pid
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 0
loglevel notice
logfile ""
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /usr/local/redis
slaveof 192.168.3.61	6379            #主从同步的信息
slave-serve-stale-data yes
slave-read-only yes
repl-disable-tcp-nodelay no
slave-priority 100
appendonly yes                        #从服务器也需要打开aof持久化
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

从redis-m上复制启动脚本,并添加到开机自启动

[root@redis-m ~]# scp /etc/init.d/redis 192.168.3.62:/etc/init.d/
[root@redis-s ~]# chkconfig --add redis
[root@redis-s ~]# chkconfig redis on
[root@redis-s ~]# service redis start
[root@redis-s ~]# netstat -tunlp |grep redis
tcp        0      0 0.0.0.0:6379                0.0.0.0:*                   LISTEN      3336/redis-server * 
tcp        0      0 :::6379                     :::*                        LISTEN      3336/redis-server *

四、测试主从同步

在redis-m上查看主从同步信息

[root@redis-m ~]# redis-cli info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.3.62,port=6379,state=online,offset=113,lag=1
master_repl_offset:113
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:112

在redis-s上查看主从同步信息

[root@redis-s ~]# redis-cli info replication
# Replication
role:slave
master_host:192.168.3.61
master_port:6379
master_link_status:up
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_repl_offset:99
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

在redis-m上写入一个数据

[root@redis-m ~]# redis-cli set k1 v1
OK
[root@redis-m ~]# redis-cli get k1
"v1"

在redis-s上查看数据k1

[root@redis-s ~]# hostname 
redis-s
[root@redis-s ~]# redis-cli get k1
"v1"

从上面结果能看出主从同步时正常的

五、在redis-m上安装keepalived

[root@redis-m ~]# yum install openssl openssl-devel -y
[root@redis-m ~]# wget http://www.keepalived.org/software/keepalived-1.2.13.tar.gz
[root@redis-m ~]# tar xf keepalived-1.2.13.tar.gz 
[root@redis-m ~]# cd keepalived-1.2.13
[root@redis-m keepalived-1.2.13]# ./configure
[root@redis-m keepalived-1.2.13]# make && make install
[root@redis-m keepalived-1.2.13]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
[root@redis-m keepalived-1.2.13]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
[root@redis-m keepalived-1.2.13]# mkdir  /etc/keepalived
[root@redis-m keepalived-1.2.13]# ln -s /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
[root@redis-m keepalived-1.2.13]# ln -s /usr/local/sbin/keepalived  /usr/sbin/
[root@redis-m keepalived-1.2.13]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

编辑后的keepalived配置文件内容如下

[root@redis-m keepalived-1.2.13]# cat /etc/keepalived/keepalived.conf
vrrp_script chk_redis { 
                script "/etc/keepalived/scripts/redis_check.sh"   ###监控脚本 
                interval 2                                        ###监控时间 
} 
vrrp_instance VI_1 { 
        state MASTER                            ###设置为MASTER
        interface eth0                          ###监控网卡    
        virtual_router_id 51
        priority 101                            ###权重值
        authentication { 
                     auth_type PASS             ###加密 
                     auth_pass redis            ###密码 
        } 
        track_script { 
                chk_redis                       ###执行上面定义的chk_redis
        } 
        virtual_ipaddress { 
             192.168.3.63                         ###VIP 
        }
        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 
}

创建监控redis的脚本

[root@redis-m ~]# mkdir /etc/keepalived/scripts

#编写监控脚本
[root@redis-m ~]# cat /etc/keepalived/scripts/redis_check.sh
#!/bin/bash
 
ALIVE=`/usr/local/redis/bin/redis-cli PING`
if [ "$ALIVE" == "PONG" ]; then
  echo $ALIVE
  exit 0
else
  echo $ALIVE
  exit 1
fi

创建进入master状态的脚本

[root@redis-m ~]# cat /etc/keepalived/scripts/redis_master.sh 
#!/bin/bash
 
REDISCLI="/usr/local/redis/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 192.168.3.62 6379 >> $LOGFILE  2>&1
sleep 10 #延迟10秒以后待数据同步完成后再取消同步状态
 
echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1

创建进入backup状态的脚本

[root@redis-m ~]# cat /etc/keepalived/scripts/redis_backup.sh
#!/bin/bash
 
REDISCLI="/usr/local/redis/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 192.168.3.62 6379 >> $LOGFILE  2>&1

创建脚本/etc/keepalived/scripts/redis_fault.sh

[root@redis-m ~]# cat /etc/keepalived/scripts/redis_fault.sh
#!/bin/bash
 
LOGFILE=/var/log/keepalived-redis-state.log
 
echo "[fault]" >> $LOGFILE
date >> $LOGFILE

创建脚本/etc/keepalived/scripts/redis_stop.sh

[root@redis-m ~]# cat /etc/keepalived/scripts/redis_stop.sh
#!/bin/bash
 
LOGFILE=/var/log/keepalived-redis-state.log
 
echo "[stop]" >> $LOGFILE
date >> $LOGFILE

赋予脚本执行权限

[root@redis-m ~]# chmod +x /etc/keepalived/scripts/*.sh

六、在redis-s上安装keepalived

安装过程和redis-m上的是一样

[root@redis-s ~]# yum install openssl openssl-devel -y
[root@redis-s ~]# tar xf keepalived-1.2.13.tar.gz 
[root@redis-s ~]# cd keepalived-1.2.13
[root@redis-s keepalived-1.2.13]# ./configure 
[root@redis-s keepalived-1.2.13]# make && make install
[root@redis-s keepalived-1.2.13]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
[root@redis-s keepalived-1.2.13]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
[root@redis-s keepalived-1.2.13]# mkdir  /etc/keepalived
[root@redis-s keepalived-1.2.13]# ln -s /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
[root@redis-s keepalived-1.2.13]# ln -s /usr/local/sbin/keepalived  /usr/sbin/
[root@redis-s keepalived-1.2.13]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

修改后的keepalived.conf配置文件内容如下

[root@redis-s ~]# cat /etc/keepalived/keepalived.conf
vrrp_script chk_redis { 
                script "/etc/keepalived/scripts/redis_check.sh"   ###监控脚本 
                interval 2                                        ###监控时间 
} 
vrrp_instance VI_1 { 
        state BACKUP                                ###设置为BACKUP 
        interface eth0                              ###监控网卡
        virtual_router_id 51 
        priority 100                                ###比MASTRE权重值低 
        authentication { 
                     auth_type PASS 
                     auth_pass redis                ###密码与MASTRE相同
        } 
        track_script { 
                chk_redis                       ###执行上面定义的chk_redis
        } 
        virtual_ipaddress { 
             192.168.3.63                         ###VIP 
        } 
        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

创建监控redis的脚本

[root@redis-s ~]# mkdir /etc/keepalived/scripts

#脚本内容如下
[root@redis-s ~]# cat /etc/keepalived/scripts/redis_check.sh
#!/bin/bash
 
ALIVE=`/usr/local/redis/bin/redis-cli PING`
if [ "$ALIVE" == "PONG" ]; then
  echo $ALIVE
  exit 0
else
  echo $ALIVE
  exit 1
fi

创建进入master状态的脚本

[root@redis-s ~]# cat /etc/keepalived/scripts/redis_master.sh
#!/bin/bash
 
REDISCLI="/usr/local/redis/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 192.168.3.61 6379 >> $LOGFILE  2>&1
sleep 10 #延迟10秒以后待数据同步完成后再取消同步状态
 
echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1

创建进入backup的脚本

[root@redis-s ~]# cat /etc/keepalived/scripts/redis_backup.sh
#!/bin/bash
 
REDISCLI="/usr/local/redis/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 192.168.3.61 6379 >> $LOGFILE  2>&1

创建fault状态的脚本

[root@redis-s ~]# cat /etc/keepalived/scripts/redis_fault.sh
#!/bin/bash
 
LOGFILE=/var/log/keepalived-redis-state.log
 
echo "[fault]" >> $LOGFILE
date >> $LOGFILE

创建stop状态的脚本

[root@redis-s ~]# cat /etc/keepalived/scripts/redis_stop.sh
#!/bin/bash
 
LOGFILE=/var/log/keepalived-redis-state.log
 
echo "[stop]" >> $LOGFILE
date >> $LOGFILE

赋予脚本执行权限

[root@redis-s ~]# chmod +x /etc/keepalived/scripts/*.sh

七、测试

依次启动redis-m,redis-s上的keepalived服务

#启动redis-m的keepalived服务
[root@redis-m ~]# /etc/init.d/keepalived start
Starting keepalived:                                       [  OK  ]

#启动redis-s上的keepalived服务
[root@redis-s ~]# /etc/init.d/keepalived start
Starting keepalived:                                       [  OK  ]

[root@redis-m ~]# ip a |grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 192.168.3.61/24 brd 192.168.3.255 scope global eth0
    inet 192.168.3.63/32 scope global eth0            #结果正常
    
[root@redis-s ~]# ip a |grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 192.168.3.62/24 brd 192.168.3.255 scope global eth0

尝试通过vip连接redis

#查看master的信息
[root@redis-s ~]# redis-cli -h 192.168.3.63 info Replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.3.62,port=6379,state=online,offset=85,lag=0
master_repl_offset:85
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:84

#写入一个数据k3,v3
[root@redis-s ~]# redis-cli -h 192.168.3.63 set k3 v3
OK
[root@redis-s ~]# redis-cli -h 192.168.3.63 get k3
"v3"

#连接到redis-m:192.168.3.61上查询结果
[root@redis-s ~]# redis-cli -h 192.168.3.61 get k3
"v3"

#连接到redis-s:192.168.3.62上查询结果
[root@redis-s ~]# redis-cli -h 192.168.3.62 get k3
"v3"

模拟故障,将redis-m上的redis杀死

[root@redis-m ~]# killall -9 redis-server

#查看redis-m上的keepalived日志
[root@redis-m ~]# tail /var/log/keepalived-redis-state.log 
Wed Jul 29 11:51:39 CST 2015
[master]
Wed Jul 29 11:51:42 CST 2015
Being master....
Run SLAVEOF cmd ...
OK
Run SLAVEOF NO ONE cmd ...
OK
[fault]
Wed Jul 29 11:56:12 CST 2015

#查看redis-s上的keepalived日志
[root@redis-s ~]# tail /var/log/keepalived-redis-state.log 
Being slave....
Run SLAVEOF cmd ...
OK Already connected to specified master
[master]
Wed Jul 29 11:56:14 CST 2015
Being master....
Run SLAVEOF cmd ...
OK Already connected to specified master
Run SLAVEOF NO ONE cmd ...
OK

#查看redis状态信息
[root@redis-m ~]# redis-cli -h 192.168.3.63 info Replication
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
[root@redis-m ~]# redis-cli -h 192.168.3.62 info Replication
# Replication
role:master                    #从这里我们能看到redis-s已经切换到master角色了
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0        

#查询之前key
[root@redis-m ~]# redis-cli -h 192.168.3.63 get k3
"v3"
[root@redis-m ~]# redis-cli -h 192.168.3.63 set k4 v4
OK                            #从这里我们能看出redis-s切换成master角色后是可以写数据的
[root@redis-m ~]# redis-cli -h 192.168.3.63 get k4
"v4"

#连接到redis-s:192.168.3.62查看结果
[root@redis-m ~]# redis-cli -h 192.168.3.62 get k4
"v4"

恢复redis-m的redis服务器和keepalived服务

#先恢复redis服务
[root@redis-m ~]# service redis start
start redis-server...runing
[root@redis-m ~]# netstat -tunlp |grep redis
tcp        0      0 0.0.0.0:6379                0.0.0.0:*                   LISTEN      34382/redis-server  
tcp        0      0 :::6379                     :::*                        LISTEN      34382/redis-server  

#再恢复keepalived服务
[root@redis-m ~]# /etc/init.d/keepalived start
[root@redis-m ~]# ip a |grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 192.168.3.61/24 brd 192.168.3.255 scope global eth0
    inet 192.168.3.63/32 scope global eth0
    
#查看redis-m的redis状态信息
[root@redis-m ~]# redis-cli -h 192.168.3.61 info Replication
# Replication
role:master
connected_slaves:1
#从这里我们能看到现在redis-s吃slave的状态
slave0:ip=192.168.3.62,port=6379,state=online,offset=170,lag=1
master_repl_offset:170
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:17
repl_backlog_histlen:154

#查看redis-s的redis状态信息
[root@redis-m ~]# redis-cli -h 192.168.3.62 info Replication
# Replication
role:slave
master_host:192.168.3.61
master_port:6379
master_link_status:up
master_last_io_seconds_ago:2
master_sync_in_progress:0
slave_repl_offset:254
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:28

#连接到vip上查看之前的数据k3,k4是否还存在
[root@redis-m ~]# redis-cli -h 192.168.3.63 get k3
"v3"
[root@redis-m ~]# redis-cli -h 192.168.3.63 get k4
"v4"

#添加一个新的数据k5:v5
[root@redis-m ~]# redis-cli -h 192.168.3.63 set k5 v5
OK
[root@redis-m ~]# redis-cli -h 192.168.3.63 get k5
"v5"

#连接到redis-m:192.168.3.61上查看结果
[root@redis-m ~]# redis-cli -h 192.168.3.61 get k5
"v5"

#连接到redis-s:192.168.3.62上查看结果
[root@redis-m ~]# redis-cli -h 192.168.3.62 get k5
"v5"

到此redis+keepalived的高可用切换配置成功。