自动选举老大的模式

概述:主从切换技术的方法是:当主服务器当即后,需要手动把一台服务器切换为主服务器,这就需要人工干预,费时费力,还会造成一段时间内服务不可用,这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。redis从2.8开开始正式提供了sentinel(哨兵)架构来解决这个问题

谋朝篡位的自动版,能够后台监控主机是否故障,如果故障了更具投票数自动将从库转为主库

哨兵模式是一种特殊的模式,首先 redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,他会独立运行。其原理是哨兵通过发送命令,等待redis服务器响应,从而监控运行的多个reidis实例

假设主服务宕机,哨兵检测到这个结束,系统并不会马上进行failover过程,仅仅是哨兵主管的认为服务器不可用,这个现象称为主观下线,当后面额哨兵检测到主服务不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover(故障转移操作)。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器是你先切换主机,这个过程称为客观下线

测试:我们目前的状态时一主二从!

1.配置哨兵配置文件sentinel.conf

#sentinel monitor 被监控的名称 host port 1
sentinel monitor myredis 127.0.0.1 port 1
#后面的这个数字1,代表主机挂机了,slave投票看让谁接替称为主机,票数最多的,就会成为主机

2.启动哨兵!

[root@centos7964 bin]# redis-sentinel kconfig/sentinel.conf
3390:X 27 Nov 2022 23:42:52.150 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
3390:X 27 Nov 2022 23:42:52.150 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=3390, just started
3390:X 27 Nov 2022 23:42:52.150 # Configuration loaded
3390:X 27 Nov 2022 23:42:52.151 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 5.0.7 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in sentinel mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 26379
 |    `-._   `._    /     _.-'    |     PID: 3390
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

3390:X 27 Nov 2022 23:42:52.152 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
3390:X 27 Nov 2022 23:42:52.153 # Sentinel ID is 11518748a8b32c53a7c2c012fc2cb426e9040811
3390:X 27 Nov 2022 23:42:52.153 # +monitor master myredis 127.0.0.1 6379 quorum 1
3390:X 27 Nov 2022 23:42:52.154 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
3390:X 27 Nov 2022 23:42:52.155 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379

可以看到6379下面有两个从机6380,6381 

Redis哨兵springboot yml Redis哨兵模式的工作原理_redis

哨兵日志!

如果主机此时回来了,只能归并到新的主机下,当作从机,这就是哨兵模式的规则

断开6379测试

Redis哨兵springboot yml Redis哨兵模式的工作原理_redis_02

  看到日志选择了6381为新的主机

查看

127.0.0.1:6380> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6381
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:19898
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:900338b9bb27b2eb3e3f0838814c1cde53bec6e4
master_replid2:7c95c7cbeaafb915796d2374b4b80f3779138892
master_repl_offset:19898
second_repl_offset:11656
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:

6381查看自己就是主机

哨兵模式

优点:

1.哨兵集群,基于主从复制模式,多有的主从配置优点,他全有

2.主从可以切换,故障可以转移,系统的可用性就会更好

3.哨兵模式就是主从模式的升级,手动变自动,更加健壮!

缺点:

1.Redis不好在线扩容的,集群容量一旦到达上限,在线扩容就十分麻烦!

2.实现哨兵模式的配置其实是很麻烦的,里面有很多选择!

Redis常用命令:

1、查看redis是否在运行:ps aux | grep redis

2、启动redis:redis-server redis-conf

3、关闭redis:redis-cli shutdown

4、当设置密码后,上面的关闭命令无效:带密码输入:redis-cli -a [password],回车后输入:shutdown

即可关闭redis,输入exit 退出。