Redis主从、哨兵模式的部署
- 1 Redis单机部署
- 2 主从模式
- 3 哨兵模式
1 Redis单机部署
实验环境:
(1)安装依赖:yum install gcc-c++.x86_64 -y
(2)下载redis安装包并编译:
redis-5.0.8.tar.gz
tar zxf redis-5.0.8.tar.gz
cd redis-5.0.8/
make
- 安装:
make install
- 查看redis-cli能否使用:
which redis-cli
- 查看redis的6379端口:
netstat -antlp |grep :6379
- 修改redis的配置文件:
vim /etc/redis/6379.conf
(3)启动redis实例: /etc/init.d/redis_6379 restart
- 查看redis的监听端口:
netstat -antlp |grep :6379
- 查看redis的信息,redis的节点角色是master
redis-cli
info
2 主从模式
一主多从:master读写,slave:读
原理:
(1)slave启动后,主动向master发送SYNC命令;
(2)master接收到SYNC命令后在后台保存快照(RDB持久化)和缓存保存快照这段时间的命令并发送给slave;
(3)slave接收到快照文件和命令后加载快照文件和缓存的执行命令;
(4)复制初始化后,master每次接收到的写命令都会同步发送给slave,保证主从数据一致性;
缺点:故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。
主从模式的部署
(1)在server2部署redis
(2)修改配置文件将其作为server1的slave:
- 编辑配置文件:
vim /etc/redis/6379.conf
(3)server2启动redis: /etc/init.d/redis_6379 restart
(4)测试:在server1连接redis的6379端口,查看副本的信息,此时server2是server1的slave
- 在server2查看节点的信息,server2的master是server1
(5)只有master节点可以写数据,slave作为备份和读数据
(6)redis有16个数据库(0-15),可以通过select命令切换数据库
redis-cli
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> set name westos
OK
127.0.0.1:6379[1]> get name
"westos"
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> set name linux
OK
127.0.0.1:6379> get name
"linux"
127.0.0.1:6379> FLUSHDB
OK
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get name
"westos"
127.0.0.1:6379[1]> FLUSHALL
OK
127.0.0.1:6379[1]> get name
(nil)
127.0.0.1:6379[1]> set name linux
OK
127.0.0.1:6379[1]> get name
"linux"
127.0.0.1:6379[1]> move name 0
(integer) 1
127.0.0.1:6379[1]> get name
(nil)
127.0.0.1:6379[1]> SELECT 0
OK
127.0.0.1:6379> get name
"linux"
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> set name linux
OK
127.0.0.1:6379> RENAME name NAME
OK
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> get NAME
"linux"
127.0.0.1:6379> RENAME NAME name
OK
127.0.0.1:6379> get name
"linux"
127.0.0.1:6379> EXPIRE name 4
(integer) 1
127.0.0.1:6379> get name
"linux"
127.0.0.1:6379> get name
"linux"
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> set name linux
OK
127.0.0.1:6379> KEYS na*
1) "name"
127.0.0.1:6379> KEYS name
1) "name"
127.0.0.1:6379> EXISTS name
(integer) 1
127.0.0.1:6379> EXISTS age
(integer) 0
127.0.0.1:6379> quit
3 哨兵模式
在主从复制的基础上,能实现master节点故障的自动切换;
集群至少三个节点而且推荐节点数为奇数;
哨兵的作用
(1)监控:监控redis集群的运行状况,当被监控的某个 Redis 服务器出现问题时,
(2)通知:Sentinel 可以通过 API 向管理员或者其他应用程序发送通知
(3)故障转移:
1.投票:当任何一个Sentinel发现被监控的Master下线时,会通知其它的Sentinel投票 确定该Master是否下线
2.选举:当Sentinel确定Master下线后,会在有的Slaves中,选举一个新的节点,升级成Master节点,其它Slaves节点,转为该节点的从节点;
3.原Master重新上线:当原Master节点重新上线后,自动转为当前Master节点的从节点
哨兵模式的部署
(1)编辑server1的sentinel的配置文件
cp /root/redis-5.0.8/sentinel.conf /etc/redis/
vim /etc/redis/ sentinel.conf
protected-mode no
sentinel monitor mymaster 172.25.12.1 6379 2
scp /etc/redis/ sentinel.conf server2:/etc/redis/
scp /etc/redis/ sentinel.conf server3:/etc/redis/
(2)启动sentinel:redis-sentinel /etc/redis/sentinel.conf
(3)测试:将server1的redis实例shutdown
redis-cli -p 6379
SHUTDOWN
- 哨兵监控到redis的master不可以,会自动选举新的master
- 重启server1的redis实例
/etc/init.d/redis_6379 start
- 启动之后自动修改配置文件:
/etc/redis/6379.conf