1.环境说明
主机名 | IP地址 | 备注 |
---|---|---|
redis1 | 192.168.157.165 | redis主服务器 |
redis2 | 192.168.157.166 | redis从服务器 |
redis3 | 192.168.157.167 | redis从服务器 |
注意:操作系统 关闭防火墙、SELinux、并在hosts中添加主机名和IP地址的对应关系
3.上传介质
上传redis安装介质redis-3.0.4.tar.gz到redis1、redis2、redis3的/opt目录下
2.安装redis
redis1、redis2、redis3都可以使用如下命令安装
[root@redis1 ~]# cd /opt/
[root@redis1 opt]# tar -zxvf redis-3.0.4.tar.gz
[root@redis1 opt]# cd redis-3.0.4
[root@redis1 redis-3.0.4]# make
[root@redis1 redis-3.0.4]# make install
3.配置redis.conf文件,实现主从复制
redis1
daemonize yes
bind 192.168.157.165
redis2
daemonize yes
bind 192.168.157.166
slaveof 192.168.157.165 6379 #配置此服务的主服务器为192.168.157.165
redis3
daemonize yes
bind 192.168.157.167
slaveof 192.168.157.165 6379 #配置此服务的主服务器为192.168.157.165
4.启动redis
[root@redis1 ~]# /usr/local/bin/redis-server /opt/redis-3.0.4/redis.conf
[root@redis2 ~]# /usr/local/bin/redis-server /opt/redis-3.0.4/redis.conf
[root@redis3 ~]# /usr/local/bin/redis-server /opt/redis-3.0.4/redis.conf
5.连接redis
[root@redis1 ~]# redis-cli -h 192.168.157.165 -p 6379
[root@redis2 ~]# redis-cli -h 192.168.157.166 -p 6379
[root@redis3 ~]# redis-cli -h 192.168.157.167 -p 6379
[root@redis1 ~]# ps -ef | grep redis #可以查看redis进程
可以使用info replication查看主机复制的状态,此时redis1为master,redis2、redis3为从服务器
6.哨兵配置文件sentinel.conf配置
redis1
port 26379
daemonize yes
bind 192.168.157.165 127.0.0.1
sentinel monitor mymaster 192.168.157.165 6379 2
redis2
port 26379
daemonize yes
bind 192.168.157.166 127.0.0.1
sentinel monitor mymaster 192.168.157.165 6379 2
redis3
port 26379
daemonize yes
bind 192.168.157.167 127.0.0.1
sentinel monitor mymaster 192.168.157.165 6379 2
7.启动哨兵模式
[root@redis1 ~]# /usr/local/bin/redis-sentinel /opt/redis-3.0.4/sentinel.conf
[root@redis2 ~]# /usr/local/bin/redis-sentinel /opt/redis-3.0.4/sentinel.conf
[root@redis3 ~]# /usr/local/bin/redis-sentinel /opt/redis-3.0.4/sentinel.conf
[root@redis1 ~]# ps -ef | grep redis #可以查看sentinel进程
8.测试
[root@redis1 ~]# shutdown -h now #关闭主服务器redis1的操作系统
[root@redis2 ~]# redis-cli -h 192.168.157.166 -p 6379 #登录redis2
192.168.157.166:6379> info replication #查看主从复制
# Replication
role:master #redis2变成了master
connected_slaves:1
slave0:ip=192.168.157.167,port=6379,state=online,offset=77493,lag=0
master_repl_offset:77493
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:51989
repl_backlog_histlen:25505
192.168.157.166:6379>
[root@redis3 ~]# redis-cli -h 192.168.157.167 -p 6379 #登录redis3
192.168.157.167:6379> info replication #查看主从复制
# Replication
role:slave #redis3仍然为从服务器,但是指向了192.168.157.166
master_host:192.168.157.166
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:78377
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
192.168.157.167:6379>