linux配置系列之redis哨兵配置

linux配置系列之redis哨兵配置,第1张

很精辟的一段话,"未曾清贫难做人,不经打击永天真;成熟不过是善于隐藏,沧桑不过是无泪有伤。"

redis的主从配置比较容易,主从配置后,主主要进行写的 *** 作,从主要进行读的 *** 作,那么如果主挂了,是不是就没法进行写了?所以redis中可以进行哨兵的配置,具有高可用性,即是在主挂了之后,哨兵检测到后,会在从中进行投票,投票数多的晋升为主。这个配置可折腾我了,按照找的资料进行了哨兵的配置,可是当我把主服务停掉之后,从还在一致尝试连接主

启动哨兵日志

停掉主后从的日志

停掉后哨兵中,日志情况

就是这个问题我一直尝试找到解决办法,看了其中" sentinel-16379conf"中的配置差不多,跟网上的一样。但是就是不行。
sentinel-16379conf配置如下

这是我把这个配置文件的注释和空格都去掉后的结果
实际中我修改了如下几个配置

其他的可能都是自动生成的。当然你也可以自己指定日志位置。
auth-pass是因为我的主中做了配置密码了。
官网的配置说明: >redis哨兵模式是redis的高可用架构的一种方式,它的出现是为了解决主从模式下主节点挂了不能自动故障转移的问题,下面是比较简单的哨兵的架构

实际上手搭建过哨兵的同学应该知道,一个哨兵里有个配置sentinel monitor mymaster 35236172131 6379 1,但是也没配置从的ip和其他哨兵的ip,其实他们都是通过主这台机器来进行的关联,主是多么的重要啊

工作流程
1。哨兵 去每隔 1秒钟就像架构中所有的机器去ping一下,如果一台机器距离最后一次ping命令的时间超过
down-after-miliseconds配置的值就会被该哨兵标记为主观下线(SDOWN)
2。如果哨兵标记了主服务器为主观下线,接下来他就会去问问其他的哨兵(sentinelis-masterdown-by-addr 命令询问),喂 我说,主好像挂了,你们怎么 看,其他哨兵:什
么!? 我们去看看
3。当有足够多的哨兵(过半)都认识主挂了,就把主改为客观下线(ODOWN)
4。哨兵们坐在一起开始商量:丫挂了 我们应该选一个代理人出来当主啊,不然我们就是失职了,会被裁掉的,我选择我去做这件事吧。你们同意吗?(哨兵选出leader,is-master-down-by-addr命令询问是否同意我成为主 )
5。哨兵leader来再存活的从里找一个出来成为主,并且进行故障转移

问题(重点)来了,哨兵leader是怎么来选择从成为主呢?

附一张流程图

这里线上使用时几个小细节,
1redis使用时为了保证数据可靠性一般回开启持久化功能,然而持久化也是要消耗资源的,然而读写最终都是通过主来处理,因此这里建议主不开启持久化,让从开启就好了。
这样即保证了数据的安全性, 也避免持久化对主节点的影响
2如果是1主多从的情况,使用线性结构,避免使用树形结构

网络哨兵实质上是一种信息战管理服务器,主要用于信息战的威胁预警,提高对信息进攻的预警能力。通过对信息进攻及时预警,确保己方知道已开始受到信息的进攻,并确定信息进攻的范围、目标和性质等。

原文地址: >

redis哨兵和集群区别是:

监控主数据库和从数据库是否正常运行。

主数据库出现故障时自动将从数据库转换为主数据库。sentinel发现master挂了后,就会从slave中重新选举一个master。哨兵模式强调高可用。

Sentinel会不断地检查你的主服务器和从服务器是否运作正常。

提醒(Notification):当被监控的某个Redis服务器出现问题时,Sentinel可以通过API向管理员或者其他应用程序发送通知。

自动故障迁移(Automatic failover):当一个主服务器不能正常工作时,Sentinel会开始一次自动故障迁移 *** 作。

它会将失效主服务器的其中一个从服务器升级为新的主服务器,并让失效主服务器的其他从服务器改为复制新的主服务器。

当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址,使得集群可以使用新主服务器代替失效服务器。

客户端中不会记录redis的地址(某个IP),而是记录sentinel的地址,这样我们可以直接从sentinel获取的redis地址。

因为sentinel会对所有的master、slave进行监控,它是知道到底谁才是真正的master的,例如我们故障转移,这时候对于sentinel来说,master是变了的,然后通知客户端。

而客户端根本不用关心到底谁才是真正的master,只关心sentinel告知的master。

集群即使使用哨兵,redis每个实例也是全量存储,每个redis存储的内容都是完整的数据,浪费内存且有木桶效应。

为了最大化利用内存,可以采用集群,就是分布式存储。即每台redis存储不同的内容,共有16384个slot。

每个redis分得一些slot,hash_slot = crc16(key) mod 16384找到对应slot,键是可用键,如果有{}则取{}内的作为可用键,否则整个键是可用键。

集群至少需要3主3从,且每个实例使用不同的配置文件,主从不用配置,集群会自己选。cluster是为了解决单机Redis容量有限的问题,将数据按一定的规则分配到多台机器。

集群模式提高并发量。

Redis:Remote Dictionary Server ,即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10304909.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-07
下一篇 2023-05-07

发表评论

登录后才能评论

评论列表(0条)

保存