Redis學習筆記(十四)Sentinel(哨兵)(上)

来源:https://www.cnblogs.com/xtt321/archive/2020/05/23/12940639.html

最近談到Redis就會聽到哨兵模式,工作期間同事也分享過關於哨兵模式的知識,但由於工作忙(給自己找個藉口)沒有沒認真看,現在惡補下,老樣子還是分上篇應用,下篇看實現過程,下麵我們來看下哨兵到底是啥? 哨兵模式(Sentinel)是Redis的高可用解決方案。由一個或多個Sentinel實例組成的Se ...


最近談到Redis就會聽到哨兵模式,工作期間同事也分享過關於哨兵模式的知識,但由於工作忙(給自己找個藉口)沒有沒認真看,現在惡補下,老樣子還是分上篇應用,下篇看實現過程,下麵我們來看下哨兵到底是啥?

哨兵模式(Sentinel)是Redis的高可用解決方案。由一個或多個Sentinel實例組成的Sentinel系統,可以監控任意多個主伺服器,以及這些主伺服器下的所有從伺服器,當某個主伺服器下線時,自動將這個主伺服器下的某個從伺服器升級為新的主伺服器,代替下線的主伺服器繼續處理命令。另外Sentinel系統還會繼續監視已下線的主伺服器,當主伺服器恢復時,它將被降級成該主伺服器的從伺服器。

在看哨兵模式的實現過程之前,我們先看一下哨兵的用法

1、我們將redis.windows.conf配置文件拷貝3份出來,改下名字便於識別:6379.conf,6380,conf,6381.conf。(這裡我們模擬使用經典的三節點搭建)

6379.conf我們使用預設配置的6379埠,分別改下 6380,conf與6381.conf的埠號

 

 

 

 上一章我們使用slaveof <masterip> <masterport>命令設置從節點,現在我們修改6380.conf與6391.conf,將複製命令配置在文件中,將6379作為主節點:

 

 

2、下麵我們執行命令,啟動三個節點:

redis-server.exe 6379.conf 

redis-server.exe 6380.conf 

redis-server.exe 6381.conf

 

 

 

 

 

 

 

 

 好了,現在三個節點都已經啟動,並且從控臺上看出,從節點已經在複製主節點的數據。

3、分別創建三個Sentinel配置文件:sentinel6379.conf ,sentinel6380.conf ,sentinel3381.conf

內容分別是:

 sentinel6379.conf

port 26379
#當前Sentinel服務運行的埠
port 26379  
# 哨兵監聽的主伺服器
sentinel monitor mymaster 127.0.0.1 6379 2
#如果在3秒內無相應,則認為主站點宕機
sentinel down-after-milliseconds mymaster 3000
#如果10秒後,mysater仍沒啟動過來,則啟動failover 
sentinel failover-timeout mymaster 10000  
#執行故障轉移時,最多有一臺對新的主伺服器進行同
sentinel parallel-syncs mymaster 1

sentinel6380.conf

#當前Sentinel服務運行的埠
port 26380
# 哨兵監聽的主伺服器
sentinel monitor mymaster 127.0.0.1 6379 2
#如果在3秒內無相應,則認為主站點宕機
sentinel down-after-milliseconds mymaster 3000
#如果10秒後,mysater仍沒啟動過來,則啟動failover 
sentinel failover-timeout mymaster 10000  
#執行故障轉移時,最多有一臺對新的主伺服器進行同
sentinel parallel-syncs mymaster 1

sentinel3381.conf

port 26381
# 哨兵監聽的主伺服器
sentinel monitor mymaster 127.0.0.1 6379 2
#如果在3秒內無相應,則認為主站點宕機
sentinel down-after-milliseconds mymaster 3000
#如果10秒後,mysater仍沒啟動過來,則啟動failover 
sentinel failover-timeout mymaster 10000  
#執行故障轉移時,最多有一臺對新的主伺服器進行同步
sentinel parallel-syncs mymaster 1

3、執行命令啟動:

redis-server.exe sentinel6379.conf --sentinel

 

 

 redis-server.exe sentinel6380.conf --sentinel

 

 

 redis-server.exe sentinel6381.conf --sentinel

 

 

 4、校驗:

先看下主伺服器6379的信息:

 

 

 切換到6380與6381我們看下:

 

 

 

 

 

 現在我們模擬主伺服器6379宕機(關閉掉6379的服務端),觀察6380與6381的反應。

 

 

 

 

 

 從以上信息來看,6381被選舉為主伺服器,那麼現在我們分別看下6380與6381的信息:

 

 

 此時監聽信息為:

 

 

 下一步我們恢復6379看看會發生什麼:

 

 

 

 現在看下監聽信息:

 

此時發現6379被設置為從伺服器。

 

 

現在我們redis-cli 連接到6379看下:

 

 

OK完工,暫時只模擬這一種宕機情況。

 

篇幅有些長,不知道有多少同學能看到這裡。

 


 

 

每天學一點,總會有收穫。

 

下一步我們看下Redis的Sentinel(哨兵)的實現過程

 

 


您的分享是我們最大的動力!

更多相關文章
  • 如何在Vmware克隆一個虛擬機,並修改哪些配置。 克隆虛擬機步驟 其中模板虛擬機的安裝部署可參見:「VMware安裝Linux CentOS 7.7系統」 找到克隆的模板機,並選擇克隆。 進入克隆虛擬機嚮導 選擇現有快照(如果有多個快照,請根據需要選擇),而不是虛擬機的當前狀態(該狀態可能已經被你 ...
  • 大家好,我是良許。 作為 Linux 用戶,大家肯定在 Linux 終端下敲過無數的命令。有的命令很短,比如: 、 、 之類,這種命令大家毫無壓力。但是,有些命令就比較長了,比如: 這個時候,你要是敲錯了哪怕是一個字母,是不是很崩潰? 以前我的作法是,如果敲錯了命令,就把游標移動到錯誤的地方,再進行 ...
  • 在看 apue 第 21 章 與網路印表機通信一章時,發現一段關於鏈表操作的代碼有問題,現在摘出來讓大家 review 一下。先上代碼: printd.c 這是列印服務的源代碼,在列印時,用戶通過 print 命令提交待列印的文件,print 命令通過 tcp 與 printd 服務通訊, 將文件及 ...
  • STM32 HAL庫 +freeRTOS+Keil 移植 官方freeRTOS移植教程很多,本文不做贅述。本文基於Keil 5提供的freeRTOS庫,進行移植。 Keil 版本:Keil MDK uVision5 首先準備好一個可以用的HAL庫工程,為了方便調試,選擇了原子哥的開發板上提供跑馬燈工 ...
  • 一、用戶操作1.增加用戶 useradd [username] 2.設置用戶密碼 passwd [username] 3.刪除用戶 userdel [username] 4.查看所有用戶 cat /etc/passwd 5.查看當前活躍用戶 w 6.查看簡明用戶列表cat /etc/passwd|g ...
  • 功能描述:切換目錄 語法:cd [目標目錄] “[ ]”為可選項。 說明:cd命令可以讓用戶在不同的目錄間來回切換,不過該用戶需要有足夠的許可權才能進入目標目錄。 示例1:從當前目錄切換至/tmp目錄 cd :不帶任何參數時表示切換回用戶的家目錄。 cd \~ :切換回自己的家目錄。註意:在bash中 ...
  • [toc] route命令 功能說明:顯示或管理路由表,路由表是在內核中的,route命令會立刻修改內核中的路由表,立即生效,系統重啟後失效。 用法 route [ n] route add [ net| host] target [netmask Nm] [gw Gw] [[dev] If] ro ...
  • 下載Redis安裝包並解壓 在 /opt/soft 內下載 "redis 5.0.5" 解壓完之後, /opt/module/ ⽬錄中會出現⼀個 的⽬錄 編譯並安裝 將Redis 安裝為系統服務並後臺啟動 設置允許遠程連接與訪問密碼 檢驗安裝結果 ...
一周排行
  • 文章篇幅較長,閱讀完大概20min,建議收藏閱讀, 讀完會有收穫。歡迎點贊關註 原文鏈接:https://www.softwaretestinghelp.com/types-of-software-testing/ 有多少軟體測試類型呢? 我們作為測試人員瞭解很多種不同的軟體測試類型,例如功能測試( ...
  • 過場CG: 接到公司領導的文件指示,“小熊”需要在6月底去海外執行一個行動代號為【定時任務】的營救計劃,這個計劃關係到公司某個項目的生死(數據安全漏洞),作戰部擬定兩個作戰方案: 方案一:使用務定時任務框架quartz; 方案二:使用windows Service服務。 最終的作戰方案為:兩者配套使 ...
  • 為什麼編寫TaskSchedulerEx類? 因為.NET預設線程池只有一個線程池,如果某個批量任務一直占著大量線程,甚至耗盡預設線程池,則會嚴重影響應用程式域中其它任務或批量任務的性能。 特點: 1、使用獨立線程池,線程池中線程分為核心線程和輔助線程,輔助線程會動態增加和釋放,且匯流排程數不大於參數 ...
  • 前幾天,公眾號後臺有朋友在問Core的中間件,所以專門抽時間整理了這樣一篇文章。 一、前言 中間件(Middleware)最初是一個機械上的概念,說的是兩個不同的運動結構中間的連接件。後來這個概念延伸到軟體行業,大家把應用操作系統和電腦硬體之間過渡的軟體或系統稱之為中間件,比方驅動程式,就是一個典型 ...
  • 參考文檔: https://www.cnblogs.com/liaods/p/10101513.html https://www.cnblogs.com/zyz-Notes/p/12030281.html 本示例使用MVC項目做演示(不推薦,推薦直接用WebAPI),框架版本使用 4.6.2 為了支 ...
  • 引用NModbus 在NuGet搜索NModbus,添加引用。 封裝ModbusTcp類 public class ModbusTCP { private ModbusFactory modbusFactory; private IModbusMaster master; private TcpCl ...
  • 系列文章 基於 abp vNext 和 .NET Core 開發博客項目 - 使用 abp cli 搭建項目 基於 abp vNext 和 .NET Core 開發博客項目 - 給項目瘦身,讓它跑起來 基於 abp vNext 和 .NET Core 開發博客項目 - 完善與美化,Swagger登場 ...
  • Microsoft.AspNetCore.Mvc.Versioning //引入程式集 .net core 下麵api的版本控製作用不需要多說,可以查閱https://www.cnblogs.com/dc20181010/p/11313738.html 普通的版本控制一般是通過鏈接、header此類 ...
  • 結合 AOP 輕鬆處理事件發佈處理日誌 Intro 前段時間,實現了 EventBus 以及 EventQueue 基於 Event 的事件處理,但是沒有做日誌(EventLog)相關的部分,原本想增加兩個介面, 處理事件發佈日誌和事件處理日誌,最近用了 AOP 的思想處理了 EntityFrame ...
  • 什麼是sam 轉換 Single Abstract Method 實際上這是java8中提出的概念,你就把他理解為是一個方法的介面的就可以了 看一下我們每天都在使用的線程池 ExecutorService executorService= Executors.newScheduledThreadPo ...