一、环境
系统 CentOS 6.4x64最小化安装
redis-m 192.168.3.61
redis-s 192.168.3.62
vip 192.168.3.63
二、安装redis-m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#下载软件
[iyunv@redis-m ~]# wget http://download.redis.io/releases/redis-2.8.9.tar.gz
[iyunv@redis-m ~]# tar xf redis-2.8.9.tar.gz
[iyunv@redis-m ~]# cd redis-2.8.9
[iyunv@redis-m redis-2.8.9]# make
[iyunv@redis-m redis-2.8.9]# make PREFIX=/usr/local/redis-2.8.9 install
[iyunv@redis-m redis-2.8.9]# ln -s /usr/local/redis-2.8.9/ /usr/local/redis
[iyunv@redis-m redis-2.8.9]# echo 'PATH=$PATH:/usr/local/redis/bin' >>/etc/profile
[iyunv@redis-m redis-2.8.9]# source /etc/profile
#复制配置文件
[iyunv@redis-m ~]# mkdir /usr/local/redis/conf
[iyunv@redis-m ~]# cp /root/redis-2.8.9/redis.conf /usr/local/redis/conf/
#修改redis启动产生的警告
[iyunv@redis-m ~]# sysctl vm.overcommit_memory=1
vm.overcommit_memory = 1
[iyunv@redis-m ~]# echo "vm.overcommit_memory = 1" >>/etc/sysctl.conf
[iyunv@redis-m ~]# sysctl -p
创建启动脚本
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
[iyunv@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服务添加到开机自启动
[iyunv@redis-m ~]# chmod +x /etc/init.d/redis
[iyunv@redis-m ~]# chkconfig --add redis
[iyunv@redis-m ~]# chkconfig redis on
[iyunv@redis-m ~]# service redis start #启动redis服务
start redis-server...runing
[iyunv@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配置文件
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
[iyunv@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服务
1
2
3
4
5
6
[iyunv@redis-m ~]# service redis restart
stop redis-server...stop
start redis-server...runing
[iyunv@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基本上是一样的
1
2
3
4
5
6
7
8
9
10
11
12
13
[iyunv@redis-s ~]# tar xf redis-2.8.9.tar.gz
[iyunv@redis-s ~]# cd redis-2.8.9
[iyunv@redis-s redis-2.8.9]# make
[iyunv@redis-s redis-2.8.9]# make PREFIX=/usr/local/redis-2.8.9 install
[iyunv@redis-s redis-2.8.9]# ln -s /usr/local/redis-2.8.9/ /usr/local/redis
[iyunv@redis-s ~]# echo 'PATH=$PATH:/usr/local/redis/bin' >>/etc/profile
[iyunv@redis-s ~]# source /etc/profile
[iyunv@redis-s ~]# mkdir /usr/local/redis/conf
[iyunv@redis-s ~]# cp /root/redis-2.8.9/redis.conf /usr/local/redis/conf/
[iyunv@redis-s ~]# sysctl vm.overcommit_memory=1
vm.overcommit_memory = 1
[iyunv@redis-s ~]# echo "vm.overcommit_memory = 1" >>/etc/sysctl.conf
[iyunv@redis-s ~]# sysctl -p
修改后的redis.conf文件内容如下
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
[iyunv@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上复制启动脚本,并添加到开机自启动
1
2
3
4
5
6
7
[iyunv@redis-m ~]# scp /etc/init.d/redis 192.168.3.62:/etc/init.d/
[iyunv@redis-s ~]# chkconfig --add redis
[iyunv@redis-s ~]# chkconfig redis on
[iyunv@redis-s ~]# service redis start
[iyunv@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上查看主从同步信息
1
2
3
4
5
6
7
8
9
10
[iyunv@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上查看主从同步信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[iyunv@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上写入一个数据
1
2
3
4
[iyunv@redis-m ~]# redis-cli set k1 v1
OK
[iyunv@redis-m ~]# redis-cli get k1
"v1"
在redis-s上查看数据k1
1
2
3
4
[iyunv@redis-s ~]# hostname
redis-s
[iyunv@redis-s ~]# redis-cli get k1
"v1"
从上面结果能看出主从同步时正常的
五、在redis-m上安装keepalived
1
2
3
4
5
6
7
8
9
10
11
12
[iyunv@redis-m ~]# yum install openssl openssl-devel -y
[iyunv@redis-m ~]# wget http://www.keepalived.org/software/keepalived-1.2.13.tar.gz
[iyunv@redis-m ~]# tar xf keepalived-1.2.13.tar.gz
[iyunv@redis-m ~]# cd keepalived-1.2.13
[iyunv@redis-m keepalived-1.2.13]# ./configure
[iyunv@redis-m keepalived-1.2.13]# make && make install
[iyunv@redis-m keepalived-1.2.13]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
[iyunv@redis-m keepalived-1.2.13]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
[iyunv@redis-m keepalived-1.2.13]# mkdir /etc/keepalived
[iyunv@redis-m keepalived-1.2.13]# ln -s /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
[iyunv@redis-m keepalived-1.2.13]# ln -s /usr/local/sbin/keepalived /usr/sbin/
[iyunv@redis-m keepalived-1.2.13]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
编辑后的keepalived配置文件内容如下
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
[iyunv@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的脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[iyunv@redis-m ~]# mkdir /etc/keepalived/scripts
#编写监控脚本
[iyunv@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状态的脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[iyunv@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状态的脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
[iyunv@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
1
2
3
4
5
6
7
[iyunv@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
1
2
3
4
5
6
7
[iyunv@redis-m ~]# cat /etc/keepalived/scripts/redis_stop.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo "[stop]" >> $LOGFILE
date >> $LOGFILE
赋予脚本执行权限
1
[iyunv@redis-m ~]# chmod +x /etc/keepalived/scripts/*.sh
六、在redis-s上安装keepalived
安装过程和redis-m上的是一样
1
2
3
4
5
6
7
8
9
10
11
[iyunv@redis-s ~]# yum install openssl openssl-devel -y
[iyunv@redis-s ~]# tar xf keepalived-1.2.13.tar.gz
[iyunv@redis-s ~]# cd keepalived-1.2.13
[iyunv@redis-s keepalived-1.2.13]# ./configure
[iyunv@redis-s keepalived-1.2.13]# make && make install
[iyunv@redis-s keepalived-1.2.13]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
[iyunv@redis-s keepalived-1.2.13]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
[iyunv@redis-s keepalived-1.2.13]# mkdir /etc/keepalived
[iyunv@redis-s keepalived-1.2.13]# ln -s /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
[iyunv@redis-s keepalived-1.2.13]# ln -s /usr/local/sbin/keepalived /usr/sbin/
[iyunv@redis-s keepalived-1.2.13]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
修改后的keepalived.conf配置文件内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[iyunv@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的脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[iyunv@redis-s ~]# mkdir /etc/keepalived/scripts
#脚本内容如下
[iyunv@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状态的脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[iyunv@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的脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
[iyunv@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状态的脚本
1
2
3
4
5
6
7
[iyunv@redis-s ~]# cat /etc/keepalived/scripts/redis_fault.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo "[fault]" >> $LOGFILE
date >> $LOGFILE
创建stop状态的脚本
1
2
3
4
5
6
7
[iyunv@redis-s ~]# cat /etc/keepalived/scripts/redis_stop.sh
#!/bin/bash
LOGFILE=/var/log/keepalived-redis-state.log
echo "[stop]" >> $LOGFILE
date >> $LOGFILE
赋予脚本执行权限
1
[iyunv@redis-s ~]# chmod +x /etc/keepalived/scripts/*.sh
七、测试
依次启动redis-m,redis-s上的keepalived服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#启动redis-m的keepalived服务
[iyunv@redis-m ~]# /etc/init.d/keepalived start
Starting keepalived: [ OK ]
#启动redis-s上的keepalived服务
[iyunv@redis-s ~]# /etc/init.d/keepalived start
Starting keepalived: [ OK ]
[iyunv@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 #结果正常
[iyunv@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
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
#查看master的信息
[iyunv@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
[iyunv@redis-s ~]# redis-cli -h 192.168.3.63 set k3 v3
OK
[iyunv@redis-s ~]# redis-cli -h 192.168.3.63 get k3
"v3"
#连接到redis-m:192.168.3.61上查询结果
[iyunv@redis-s ~]# redis-cli -h 192.168.3.61 get k3
"v3"
#连接到redis-s:192.168.3.62上查询结果
[iyunv@redis-s ~]# redis-cli -h 192.168.3.62 get k3
"v3"
模拟故障,将redis-m上的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
[iyunv@redis-m ~]# killall -9 redis-server
#查看redis-m上的keepalived日志
[iyunv@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日志
[iyunv@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状态信息
[iyunv@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
[iyunv@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
[iyunv@redis-m ~]# redis-cli -h 192.168.3.63 get k3
"v3"
[iyunv@redis-m ~]# redis-cli -h 192.168.3.63 set k4 v4
OK #从这里我们能看出redis-s切换成master角色后是可以写数据的
[iyunv@redis-m ~]# redis-cli -h 192.168.3.63 get k4
"v4"
#连接到redis-s:192.168.3.62查看结果
[iyunv@redis-m ~]# redis-cli -h 192.168.3.62 get k4
"v4"
恢复redis-m的redis服务器和keepalived服务
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
#先恢复redis服务
[iyunv@redis-m ~]# service redis start
start redis-server...runing
[iyunv@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服务
[iyunv@redis-m ~]# /etc/init.d/keepalived start
[iyunv@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状态信息
[iyunv@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状态信息
[iyunv@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是否还存在
[iyunv@redis-m ~]# redis-cli -h 192.168.3.63 get k3
"v3"
[iyunv@redis-m ~]# redis-cli -h 192.168.3.63 get k4
"v4"
#添加一个新的数据k5:v5
[iyunv@redis-m ~]# redis-cli -h 192.168.3.63 set k5 v5
OK
[iyunv@redis-m ~]# redis-cli -h 192.168.3.63 get k5
"v5"
#连接到redis-m:192.168.3.61上查看结果
[iyunv@redis-m ~]# redis-cli -h 192.168.3.61 get k5
"v5"
#连接到redis-s:192.168.3.62上查看结果
[iyunv@redis-m ~]# redis-cli -h 192.168.3.62 get k5
"v5"
到此redis+keepalived的高可用切换配置成功。
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com