配置Redis哨兵集群所遇到的問題

来源:https://www.cnblogs.com/sumuwen/archive/2023/08/18/17640204.html
-Advertisement-
Play Games

配置Redis哨兵集群時日誌顯示+sdown slave的問題 一、配置及其環境描述(問題產生的原因是因為Redis複製中主節點對從節點的ip配置錯誤,從而導致哨兵無法識別從節點,進而無法進行故障轉移) 1.操作系統:Linux 虛擬機:VMware Workstation 16 Pro 、WSL ...


配置Redis哨兵集群時日誌顯示+sdown slave的問題

一、配置及其環境描述(問題產生的原因是因為Redis複製中主節點對從節點的ip配置錯誤,從而導致哨兵無法識別從節點,進而無法進行故障轉移)

1.操作系統:Linux

 虛擬機:VMware Workstation 16 Pro 、WSL

 Redis主從複製配置為在VM虛擬機上設置一臺master,WSL虛擬機上設置兩台slave。

 Redis哨兵配置為在WSL上設置三台哨兵。

 註:虛擬機一共只開啟了兩台,分別是VM和WSL。在WSL上我分別在兩個埠部署了redis-server,以達到兩個slave的目的。然後在WSL上我又在三個埠上部署了三個哨兵,用於在監視VM上部署的master。

2.配置的哨兵集群想達成如下效果:

 當我使用shutdown命令關閉部署在VM上的master時,哨兵能夠即時檢測到master已經宕機,併進行投票選舉選出新的master。

3.master的內網ip及埠為:192.xxx.xxx.xxx:6379,兩個slave的內網ip及埠為:172.xxx.xxx.xxx:6380與172.xxx.xxx.xxx:6381

 

二、問題復現

 啟動一主二從,並啟動三台哨兵。手動使master宕機,按照理想狀態得到的結果應該是哨兵從剩下的兩個slave中選取一個成為新的master,但是剩下的兩台slave只是在原地等待舊master的回歸,並未有新的master產生。

 

三、分析並解決問題

1.1)翻閱剛啟動哨兵時候的哨兵日誌,發現如下內容

"+sdown slave",說明一件事,就是哨兵無法與我們的兩個從機取得聯繫(哨兵認為slave主觀下線)。那麼也很容易就明白了,在之後的投票選出新master的過程中,也無法在兩個slave中選出。同時,我們還註意到一件事,從節點的ip竟然是以192開頭的,這不對勁,因為從節點的ip應該以172開頭。

2)啟動Redis複製的一主二從,通過在master上設置鍵值對,並且在兩個從機上取得了對應的鍵值對可以驗證出,主從架構是搭建成功的。然後在master上使用命令"info replication"查詢主從機聯機狀態如下圖

從圖中看出,兩台slave是成功連到了master的。但是,slave的ip開頭竟然是192而不是172,說明,master識別從機的ip時,應該出現了問題。

3)那麼解決問題就應該從master正確識別slave的ip地址入手了。在Redis配置文件中可以配置配置項"slave-announce-ip  從機ip地址",slave-announce-ip 用於指定從節點在複製(Replication)過程中向主節點彙報的 IP 地址。通過在從節點的Redis配置文件中配置該配置項,我們可以使得master正確的反映出slave的ip地址。在經過上述配置後,我們再在master中使用"info replication"查詢主從機聯機狀態時,發現slave的ip地址顯示正確,此時再去哨兵的日誌文件中檢查,發現,哨兵成功的聯繫到了兩個slave。

註:哨兵成功聯繫到slave的哨兵日誌顯示應該是下麵的截圖所示的內容

這裡的"+slave slave"表示哨兵成功與slave的IP以172開頭,埠為6381的slave聯繫成功。

4)再次使master宕機,發現哨兵成功的選舉出了新的master,並變更了相應的Redis配置(使得舊的master成為新的master的slave,並使得原本效忠於舊master的slave重新效忠於新的master)

2.1)因為哨兵有在啟動的時候會將一些主從機以及自己的基本信息寫進哨兵配置文件的操作,所以,上述流程的分析中還可以加上分析哨兵配置文件的流程。

2)具體問題具體分析,但是分析流程可以相同

 


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

-Advertisement-
Play Games
更多相關文章
  • ##### 2 超鏈接標簽 超鏈接是瀏覽者和伺服器的交互的主要手段,也叫超級鏈接或a鏈接,是網頁中指向一個目標的連接關係,這個目標可以是網頁、網頁中的具體位置、圖片、郵件地址、文件、應用程式等。 超鏈接是網頁中最重要的元素之一。一個網站的各個網頁就是通過超鏈接關聯起來的,用戶通過點擊超鏈接可以從一個 ...
  • ![](https://img2023.cnblogs.com/blog/3076680/202308/3076680-20230816164601035-688425072.png) # 1. 變化就是軟體的特性 ## 1.1. 變化保證天天有,存活保障無處尋 ## 1.2. 非每一款軟體每天都需 ...
  • 1. 概述 對於分散式系統,人們首先對現實中的分散式系統進行高層抽象,然後做出各種假設,發展了諸如CAP, FLP 等理論,提出了很多一致性模型,Paxos 是其中最璀璨的明珠。我們對分散式系統的時序,複製模式,一致性等基礎理論特別關註。 在共識演算法的基礎上衍生了選舉演算法,並且為分散式事務提供了部分 ...
  • ##一、前言 **工廠模式常見的詞:簡單工廠、工廠方法、抽象工廠。簡單工廠不屬於23種經典設計模式,但通常將它作為學習其他工廠模式的基礎。** ##二、簡單工廠 ###1、定義 **定義一個工廠類,它可以根據參數的不同返回不同類型的實例,被創建的實例通常都具有共同的父類。由於簡單的工廠模式中用於創建 ...
  • 背景: PyAV是一個用於音頻和視頻處理的Python庫,它提供了一個簡單而強大的介面,用於解碼、編碼、處理和分析各種音頻和視頻格式。PyAV基於FFmpeg多媒體框架,它本質上是FFmpeg 的Python綁定,因此可以利用FFmpeg的功能來處理各種多媒體任務。 基本概念: 編解碼器(Codec ...
  • 本文通過設計演講比賽流程管理系統,全面介紹了使用C++面向對象編程思想開發項目應用的過程,涵蓋了需求分析、系統架構設計、類的提取,以及採用多種STL容器配合演算法的具體實現。文中詳細展示了構建選手類、管理類,設計菜單界面與用戶交互、實現兩輪比賽流程的抽簽、評分模塊,並能夠完成記錄文件的讀寫與管理 ...
  • **原文鏈接:** [Go 語言中排序的 3 種方法](https://mp.weixin.qq.com/s/RyVc_JZJi_pTT_51mEHYiw) 在寫代碼過程中,排序是經常會遇到的需求,本文會介紹三種常用的方法。 廢話不多說,下麵正文開始。 ## 使用標準庫 根據場景直接使用標準庫中的方 ...
  • 本文通過簡單的示例代碼和說明,讓讀者能夠瞭解微服務如何集成redis 之前的教程 https://www.cnblogs.com/leafstar/p/17638933.html 由於redis的安裝網上教程很多,再次不再贅述,現在預設你已經安裝好了redis 1.在需要redis的微服務下麵添加下 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...