Redis 哨兵模式的实现详解 |
您所在的位置:网站首页 › 哨兵单词 › Redis 哨兵模式的实现详解 |
文章目录
高可用(HA)哨兵模式概述哨兵的搭建伪集群 + 哨兵1. 复制sentinel.conf文件2. 修改sentinel.conf文件3. 新建sentinel26380.conf4. 启动并关联Redis集群5. 启动Sentinel集群6. 查看 Sentinel 信息7. 查看 Sentinel 配置文件
哨兵优化配置
高可用(HA)
所谓的高可用,也叫HA(High Availability),是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。如果在实际生产中,redis只部署一个节点,当机器故障时,整改服务都不能提供服务了。这就是我们常说的单点故障。如果redis部署了多台,当一台或几台故障时,整个系统依然可以对外提供服务,这样就提高了服务的可用性。 Redis的主从架构主要是为了提高并发量,主写从读。那么现在问题来了,现在Master机器挂掉了,其他机器都是Slave,没办法写,我们只能读缓存数据了。等下运维发现机子挂了,赶紧帮忙重启,那这段时间的写请求怎么办?手动解决响应是高延迟的一个操作啊。这么一说,你就会发现这样解决问题很蠢。所以Redis的哨兵机制就是为了解决这个愚蠢的问题。在Redis服务器集群出现问题时及时处理,及时进行故障转移(主备切换),减少系统不能提供服务的时间,这就是哨兵模式要解决的最重要的问题。 哨兵模式概述哨兵模式是Redis的高可用方式,哨兵节点是特殊的redis服务,不提供读写服务,主要用来监控所有的redis节点。 哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,不会每次都通过sentinel代理访问redis的主节点,当redis的主节点挂掉时,哨兵会第一时间感知到,并且在slave节点中重新选出来一个新的master,然后将新的master信息通知给client端,从而实现高可用。这里面redis的client端一般都实现了订阅功能,订阅sentinel发布的节点变动消息。 哨兵的搭建 伪集群 + 哨兵下面将会搭建如下架构的哨兵集群 ![]() 将 Redis 安装目录中的 sentinel.conf 文件复制到 cluster 目录(该目录是上次搭建伪集群建立的一个目录)中。该配置文件中用于存放一些 sentinel 集群中的一些公共配置。 2. 修改sentinel.conf文件修改 cluster/sentinel.conf 配置文件。 sentinel monitor 这里将该配置注释掉,因为要在后面的其它配置文件中设置,如果不注释就会出现配置冲突。 sentinel auth-pass 在 redis 目录下的 cluster 目录中新建 sentinel26380.conf 文件作为 Sentinel 的配置文件,并在其中键入如下内容: sentinel26380.conf文件保存退出后,在新建sentinel26381.conf和sentinel26382.conf这两个文件,文件内容就是上面的内容,只不过要把所有的26380改为26381和26382即可。最后结果如下: 详见:Redis的主从集群搭建与配置 启动命令 在/usr/local/bin 目录下有一个命令 redis-sentinel 用于启动 Sentinel。不过,我们发现一个奇怪的现象:/usr/local/bin 目录中的 redis-sentinel 命令是 redis-server 命令的软链接。 两种启动方式 Redis 首先会调用 checkForSentinelMode 函数来判断当前是否以哨兵模式来运行,并把标识赋值到 server.sentinel_mode。 server.sentinel_mode = checkForSentinelMode(argc,argv);checkForSentinelMode 是如何判断当前是否以哨兵模式来运行: int checkForSentinelMode(int argc, char **argv) { int j; // 判断第一个参数是不是 redis-sentinel if (strstr(argv[0],"redis-sentinel") != NULL) return 1; // 判断其他的参数是不是 --sentinel for (j = 1; j |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |