Redis集群与高可用的三种模式:
Redis主从复制 
Redis哨兵(Sentinel) 
Redis Cluster 
 
 
Redis 哨兵(Sentinel) Sentinel实现故障转移过程
多个 sentinel 发现并确认master有问题 
选举出一个 sentinel 作为领导 
选出一个 slave 作为 master 
通知其余 slave 成为新 master 的 slave 
通知客户端主从变化 
等待旧的 master 复活成为新 master 的 slave 
 
Redis Sentinel 节点与普通 Redis 没有区别,要实现读写分离依赖于客户端程序
Sentinel 机制类似于MySQL中的MHA功能,只解决master和slave角色的自动故障转移问题,但单个Master 的性能瓶颈问题并没有解决
Redis 3.0 之前版本中,生产环境一般使用哨兵模式较多,Redis 3.0后推出Redis cluster功能,可以支持更大规模的高并发环境
 
使用哨兵只能解决redis高可用问题,实现自动故障转移,无法解决master节点的性能瓶颈问题。要解决单机性能瓶颈,提高整体性能,可以使用分布式集群的解决方案 
实现哨兵配置案例: 前提:实现哨兵的前提是已经实现了redis的主从复制。master 配置文件中 masterauth 和 slave都必须相同,哨兵节点必须大于等于3,最好为奇数
使用脚本编译安装:
master 
host41 
192.168.23.41 
 
 
slave 
host42 
192.168.23.42 
 
slave 
host43 
192.168.23.43 
 
1、实现主从复制 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 's/bind 127.0.0.1/bind 0.0.0.0/'  \'s/^# masterauth .*$/masterauth 12345678/'  \'s/^# requirepass .*$/requirepass 12345678/'  \'s/bind 127.0.0.1/bind 0.0.0.0/'  \'s/^# masterauth .*$/masterauth 12345678/'  \'s/^# requirepass .*$/requirepass 12345678/'  \'s/^# replicaof .*$/replicaof 192.168.23.41 6379/'  \
2、配置哨兵配置文件,在所有节点执行 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 's/^sentinel monitor mymaster .*$/sentinel monitor mymaster 192.168.23.41 6379 2/'  \'s/^# sentinel auth-pass mymaster .*$/sentinel auth-pass mymaster 12345678/'  \'s/^sentinel down-after-milliseconds .*$/sentinel down-after-milliseconds mymaster 3000/'  \yes 										dir  /apps/redis/data/
3、配置启动服务,在所有节点执行 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 cat  > /lib/systemd/system/redis-sentinel.service <<EOF [Unit] Description=Redis Sentinel Documentation=https://redis.io/documentation Wants=network-online.target After=network-online.target [Service] ExecStart=/apps/redis/bin/redis-sentinel /apps/redis/etc/sentinel.conf --supervised systemd ExecStop=/bin/kill -s QUIT $MAINPID LimitNOFILE=1000000 NoNewPrivileges=yes Type=notify TimeoutStartSec=infinity TimeoutStopSec=infinity User=redis Group=redis RuntimeDirectory=redis RuntimeDirectoryMode=0755 [Install] WantedBy=multi-user.target EOF 
4、验证哨兵服务 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 
5、检查故障转移 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 
1 2 3 4 5 6 7 8 9 10 11 12 set  appropriate values for  TimeoutStartSec and TimeoutStopSec in  your service unit.
1 2 3 4 5 6 7 8 9 10 11 12 13 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 在新的主节点(192.168.23.43)检查主从状态'-a'  or '-u'  option on the command  line interface may not be safe.