網(wǎng)站首頁 編程語言 正文
哨兵模式是redis高可用的一種解決方案。
哨兵必須用三個(gè)實(shí)例取保證自己的高可用,但是哨兵+主從模式是不能保證消息不丟失的。
為什么用三個(gè)來保證呢?
假設(shè)現(xiàn)在有兩個(gè)服務(wù)器,第一臺有redis主節(jié)點(diǎn)M1,和哨兵S1,第二臺有redis從節(jié)點(diǎn)S2,哨兵S2。
如果M1宕機(jī),S1和S2中只要有1個(gè)哨兵認(rèn)為master宕機(jī)就可以還行切換,此時(shí)哨兵大多數(shù)(我理解的大多數(shù)的過半)還在運(yùn)行,那么S1,S2能通過選舉,拿出來一個(gè)哨兵進(jìn)行故障轉(zhuǎn)移。
如果第一個(gè)服務(wù)器整個(gè)宕機(jī),M1,S1都已經(jīng)死掉了,此時(shí)S2發(fā)現(xiàn)M1宕機(jī),但是哨兵只有一個(gè)了,不滿足大多數(shù)的機(jī)器存活,無法選舉,就沒有辦法來執(zhí)行故障轉(zhuǎn)移。雖然另外一臺機(jī)器還有一個(gè)R1,但是故障轉(zhuǎn)移不會(huì)執(zhí)行。
經(jīng)典的是三節(jié)點(diǎn)的哨兵集群
如果M1所在機(jī)器宕機(jī)了,那么三個(gè)哨兵還剩下2個(gè),S2和S3可以一致認(rèn)為master宕機(jī),然后選舉出一個(gè)來執(zhí)行故障轉(zhuǎn)移。
同時(shí)3個(gè)哨兵的大多數(shù)是2,所以還剩下的2個(gè)哨兵運(yùn)行著,就可以允許執(zhí)行故障轉(zhuǎn)移。
接下來談一談怎么做哨兵
首先我們需要搭建個(gè)一主兩從的redis,單個(gè)節(jié)點(diǎn)的redis安裝鏈接如下
redis安裝包下載地址Redis
我們可以將單個(gè)redis安裝三次(6381為主機(jī),6380,6379為從機(jī)),然后修改配置文件
1.配置redis.conf文件中的端口號分別為6379,6380,6381,
2.daemonize均為yes
3.6380和6379?均添加slaveof 127.0.0.1 6379? (我是在一臺服務(wù)器上安裝的,若不是一臺服務(wù)器,ip換為redis主機(jī)ip)
?分別使用./src/redis-server ./myredis/redis.conf 命令啟動(dòng)redis。
啟動(dòng)后使用./src/redis-cli -p 6379 -h 127.0.0.1 連接redis的客戶端? (ip和端口換成自己的)
再執(zhí)行info Replication,即可看到主從狀態(tài)?
三臺狀態(tài)如下
?
主從就搭建好了。
接下來配置哨兵
將剛剛的文件redis-6379 復(fù)制三份,分別重命名為sentinel-26379,sentinel-26380,sentinel-26381
然后分別修改三個(gè)文件的配置文件sentinel.conf?
#端口號 (換成相應(yīng)sentinel的端口號)
port 26379
#守護(hù)進(jìn)程,后臺啟動(dòng)
daemonize yes
#監(jiān)測redis集群的主機(jī)
sentinel monitor mymaster 127.0.0.1 6381 1
?修改完畢之后使用./src/sentinel-server ./sentinel.conf啟動(dòng),成功后,
使用./src/resic-cli -p 26379 命令連接sentinel(其他兩個(gè)也可以使用這個(gè)連接),成功后,使用info命令,可以看到監(jiān)聽的redis集群狀態(tài)
原文鏈接:https://blog.csdn.net/wangyunzhao007/article/details/122298571
相關(guān)推薦
- 2022-06-27 nginx中配置使用proxy?protocol協(xié)議的全過程_nginx
- 2023-02-17 Python的OptionParser模塊示例教程_python
- 2022-07-22 服務(wù)器配置uWSGI+Nginx+Django
- 2022-04-20 Android實(shí)現(xiàn)將View轉(zhuǎn)化為圖片并保存到本地_Android
- 2024-01-10 給idea添加右鍵打開功能
- 2024-01-31 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci‘, Ti
- 2023-10-15 歸并排序三種常見寫法
- 2023-05-22 NumPy迭代數(shù)組的實(shí)現(xiàn)_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支