当前位置: 代码迷 >> 综合 >> Redis学习7-Redis高级话题-高可用 Sentinel 哨兵
  详细解决方案

Redis学习7-Redis高级话题-高可用 Sentinel 哨兵

热度:87   发布时间:2023-12-16 05:01:28.0

Redis学习7-Redis高级话题-高可用 Sentinel 哨兵

  • 11 Redis高级话题-高可用 Sentinel 哨兵
    • 11.1 Redis高可用 Sentinel 哨兵 原理
    • 11.2 Redis高可用 Sentinel 哨兵 配置
    • 11.3 Redis高可用 Sentinel 哨兵 演示
    • 11.4 Redis高可用 Sentinel 哨兵 监控
    • 11.5 Redis高可用 Sentinel 哨兵 总结
  • 12 安全设置
    • 12.1 设置密码
    • 12.2 访问有密码的 Redis
    • 12.3 修改默认端口

??

11 Redis高级话题-高可用 Sentinel 哨兵

11.1 Redis高可用 Sentinel 哨兵 原理

??Sentinel 哨兵是 redis 官方提供的高可用方案,可以用它来监控多个 Redis 服务实例的运 行情况。Redis Sentinel 是一个运行在特殊模式下的 Redis 服务器。Redis Sentinel 是在多个 Sentinel 进程环境下互相协作工作的。

Sentinel 系统有三个主要任务: 
1、监控:Sentinel 不断的检查主服务和从服务器是否按照预期正常工作。 
2、提醒:被监控的 Redis 出现问题时,Sentinel 会通知管理员或其他应用程序。 
3、自动故障转移:监控的主 Redis 不能正常工作,Sentinel 会开始进行故障迁移操作。将一个从服务器升级新的主服务器。 让其他从服务器挂到新的主服务器。同时向客户端 提供新的主服务器地址。 

在这里插入图片描述

11.2 Redis高可用 Sentinel 哨兵 配置

1、复制三份sentinel.conf文件:
在这里插入图片描述
Sentinel系统默认 port 是26379 。
三个配置port分别设置为 26380 , 26382 , 26384 。
三个文件分别命名:
? sentinel26380.conf
? sentinel26382.conf
? sentinel26384.conf
在这里插入图片描述
2、三份 sentinel 配置文件修改
(1)、修改 port 26380、 port 26382、 port 26384
(2)、修改 sentinel monitor mymaster 127.0.0.1 6380 2
格式:sentinel monitor <Quorum 投票数>
Sentinel监控主(Master)Redis, Sentinel根据Master的配置自动发现Master的Slave,Sentinel 默认端口号为26379
(3)、修改port
在这里插入图片描述
(4)、修改监控的 master 地址
在这里插入图片描述
(5)、修改另外两个 sentinel
sentinel26382.conf 修改port 26382 , master的port 6382
sentinel26384.conf 修改port 26384 , master的port 6382
3、启动主从(Master/Slave)Redis
在这里插入图片描述
查看 Master 的配置信息 连接到 6382 端口
在这里插入图片描述
使用 info 命令查看 Master/Slave
在这里插入图片描述
5、启动 Sentinel
redis安装时make编译后就产生了redis-sentinel程序文件,可以在一个redis中运行多个 sentinel进程。
启动一个运行在Sentinel模式下的Redis服务实例

./redis-sentinel  sentinel 配置文件 

执行以下三条命令,将创建三个监视主服务器的Sentinel实例

./redis-sentinel  ../sentinel26380.conf 
./redis-sentinel  ../sentinel26382.conf 
./redis-sentinel  ../sentinel26384.conf 

在XShell开启三个窗口分别执行:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11.3 Redis高可用 Sentinel 哨兵 演示

1、主 Redis 不能工作

让 Master 的 Redis 停止服务, 执行 shutdown 先执行 info replication 
确认 Master 的 Redis ,再执行 shutdown 

在这里插入图片描述
查看当前 Redis 的进程情况
在这里插入图片描述
2、Sentinel 的起作用

 在 Master 执行 shutdown 后, 稍微等一会 Sentinel 要进行投票计算,从可用的 Slave 选举新的 Master。 查看 Sentinel 日志,三个 Sentinel 窗口的日志是一样的。 

在这里插入图片描述
查看新的 Master
在这里插入图片描述
在这里插入图片描述
3、新的 Redis 加入 Sentinel 系统,自动加入 Master
重新启动 6382
在这里插入图片描述
查看 6384 的信息
在这里插入图片描述
4、测试数据
在这里插入图片描述
在 6382 上读取数据,不能写入
在这里插入图片描述

11.4 Redis高可用 Sentinel 哨兵 监控

1)Sentinel 会不断检查 Master 和 Slave 是否正常 
2)如果 Sentinel 挂了,就无法监控,所以需要多个哨兵,组成 Sentinel 网络,一个健康的Sentinel 至少有 3 个 Sentinel 应用彼此在独立的物理机器或虚拟机。 
3)监控同一个 Master 的 Sentinel 会自动连接,组成一个分布式的 Sentinel 网络,互相通信 并交换彼此关于被监控服务器的信息 
4)当一个 Sentinel 认为被监控的服务器已经下线时,它会向网络中的其它 Sentinel 进行确 认,判断该服务器是否真的已经下线 
5)如果下线的服务器为主服务器,那么 Sentinel 网络将对下线主服务器进行自动故障转移, 通过将下线主服务器的某个从服务器提升为新的主服务器,并让其从服务器转移到新的主服 务器下,以此来让系统重新回到正常状态 
6)下线的旧主服务器重新上线,Sentinel 会让它成为从,挂到新的主服务器下 

11.5 Redis高可用 Sentinel 哨兵 总结

主从复制,解决了读请求的分担,从节点下线,会使得读请求能力有所下降,Master 下 线,写请求无法执行 Sentinel 会在 Master 下线后自动执行故障转移操作,提升一台 Slave 为 Master,并让其它 Slave 成为新 Master 的 Slave

12 安全设置

12.1 设置密码

??访问 Redis 默认是没有密码的,这样不安全,任意用户都可以访问。可以启用使用密码 才能访问 Redis。 设置 Redis 的访问密码,修改 redis.conf 中这行 requirepass 密码。密码要 比较复杂,不容易破解,而且需要定期修改。因为 redis 速度相当快,所以在一台比较好的 服务器下,一个外部的用户可以在一秒钟进行 150K 次的密码尝试,需要指定非常非常强大 的密码来防止暴力破解。

1、开启访问密码设置
修改 redis.conf , 使用 vim 命令。 找到 requirepass 行去掉注释,requirepass 空格后就是 密码。
例 1:设置访问密码是 123456 ,生产环境要设置复杂密码 修改 redis.conf,文件 480 行左右。原始内容:

# requirepass foobared

修改后

requirepass 123456

查看修改结果:
在这里插入图片描述

12.2 访问有密码的 Redis

如果 Redis 已经启动,关闭后,重新启动。 访问有密码的 Redis 两种方式: 
1:在连接到客户端后,使用命令 auth 密码 , 命令执行成功后,可以正常使用 Redis
2:在连接客户端时使用 -a 密码。例如 ./redis-cli -h ip -p port -a password 

在这里插入图片描述
使用方式1:
在这里插入图片描述
输入命令 auth 密码
在这里插入图片描述
使用方式2:
在这里插入图片描述

12.3 修改默认端口

??修改 redis 的端口,这一点很重要,使用默认的端口很危险,redis.conf 中修改 port 6379 将其修改为自己指定的端口(可随意),端口 1024 是保留给操作系统使用的。用户可以使用 的范围是 1024-65535

使用 -p 参数指定端口,例如:./redis-cli -p 新设置端口