1. 哨兵(Sentinel)机制
哨兵机制是Redis的高可用性解决方案:由一个或者多个Sentinel实例组成的Sentinel系统可以监听任意多个主服务器,以及这些主服务器下的所有从服务器,并在被监听的主服务器进入下线状态时,自动将下线服务器属下的某个 从服务器升级为新的主服务器。简单的说,就是带有自动故障转移的主从架构。
2. Sentinel架构原理
3.搭建哨兵架构
新建sentinel目录:
[root@Cluster-01 ~]# mkdir sentinel
[root@Cluster-01 ~]# ll
总用量 1704
drwxr-xr-x. 2 root root 24 10月 26 21:39 master
drwxrwxr-x. 6 root root 4096 8月 4 2018 redis-4.0.11
-rw-r--r--. 1 root root 1739656 10月 21 23:56 redis-4.0.11.tar.gz
drwxr-xr-x. 2 root root 6 10月 27 20:37 sentinel
drwxr-xr-x. 2 root root 24 10月 26 21:51 slave1
drwxr-xr-x. 2 root root 24 10月 26 21:46 slave2
```![在这里插入图片描述](https://img-blog.csdnimg.cn/20201027210018361.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Rnc3Nk,size_16,color_FFFFFF,t_70#pic_center)
进入sentinel目录新建sentinel.conf配置文件:
```powershell
[root@Cluster-01 ~]# cd sentinel/
[root@Cluster-01 sentinel]# ls
[root@Cluster-01 sentinel]# touch sentinel.conf
[root@Cluster-01 sentinel]# vim sentinel.conf
对配置文件sedntinel.conf的修改:
sentinel monitor 整个master节点的名字(自己取)master主节点的IP 主节点的端口号 x(数字x代表当master出现故障时,只有超过x/2说master已经死了,才会选取新的master)
sentinel monitor mymaster 172.19.8.224 6380 1
启动哨兵机制:
[root@Cluster-01 src]# cd /usr/redis/bin/
[root@Cluster-01 bin]# ls
dump.rdb redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
[root@Cluster-01 bin]# ll
总用量 11556
-rw-r--r--. 1 root root 245 10月 26 22:24 dump.rdb
-rwxr-xr-x. 1 root root 354008 10月 22 00:04 redis-benchmark
-rwxr-xr-x. 1 root root 3646744 10月 22 00:04 redis-check-aof
-rwxr-xr-x. 1 root root 3646744 10月 22 00:04 redis-check-rdb
-rwxr-xr-x. 1 root root 520280 10月 22 00:04 redis-cli
lrwxrwxrwx. 1 root root 12 10月 22 00:04 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 3646744 10月 22 00:04 redis-server
[root@Cluster-01 bin]# ./redis-sentinel /root/sentinel/sentinel.conf
sentinel的默认端口为:26379
第一次启动之后,sentinel.conf配置文件会自动添加一些配置
PS: 根据主从复制原理,当你在master节点进行操作数据库时,slave1和slave2两个从节点也会同步数据。当你把master节点宕掉时,哨兵机制就会选择一个新从节点作为主节点,原master节点就作为从节点,只不过它的状态为宕机状态,新节点能够对外服务。当原主节点master重新恢复正常后,这个新选取的master节点就又变成了从节点,就不能再进行数据的操作了,因为从节点始终都是只读文件。
但是无论是主从复制,还是哨兵机制,都不能处理单节点的物理上限问题,始终都是一个节点对系统提供服务,但是所有请求都到一个master上,如果请求非常非常多,一个master处理压力会非常大。
无法解决:
- 单节点并发压力问题
- 单节点物理上限问题
哨兵机制解决了主从复制无法完成的自动故障转移问题,但是不能解决单节点并发压力问题和单节点物理上限问题。要想解决这些问题,就引出了----集群