搭建Redis哨兵集群

停掉現有的redis集群

因為這篇文章我是在 搭建完redis主從集群之后寫的,如果要是沒有搭建過這些,可以直接略過。要是從我上一篇 搭建redis主從集群過來的,可以執行下。

docker compose down

查找下redis相關進程

ps -ef | grep redis

可以看到前面的 7001 7002 7003 這三個端口已經沒有了

上傳sentinel.conf 文件

sentinel announce-ip "192.168.200.128"
sentinel monitor sdemaster 192.168.200.128 7001 2
sentinel down-after-milliseconds sdemaster 5000
sentinel failover-timeout sdemaster 60000

這里面就是sentinel.conf 文件的內容。

端口號要改成自己的

說明

sentinel announce-ip "192.168.200.128" :聲明當前sentinel的IP

sentinel monitor hmaster sdemaster 192.168.200.128 7001 2 :指定集群的主節點信息。

????????sdemaster:主節點名稱,自定義,任意寫的。

????????192.168.200.128 7001 :主節點的ip和端口

????????2 :認定 master 下線時的 quorm 值

sentinel down-after-milliseconds sdemaster :聲明master節點超時多久后被標記下線

sentinel failover-timeout sdemaster : 故障轉移的超時時間

在虛擬機的 /home/sde/modules/redis 目錄下創建 3個文件夾, s1 s2 s3

目錄具體位置,要根據自己情況而定。

mkdir s1 s2 s3 

把sentinel.conf 文件分別拷貝到 上述的3個文件夾中。

for dir in s1 s2 s3; docp /home/sde/modules/redis/sentinel.conf /home/sde/modules/redis/$dir/
done

具體的目錄要改成你自己的

查看s1

查看s2

查看s3

修改 docker-compose.yml 文件

version: "3.2"services:r1:image: rediscontainer_name: r1network_mode: "host"entrypoint: ["redis-server", "--port", "7001"]r2:image: rediscontainer_name: r2network_mode: "host"entrypoint: ["redis-server", "--port", "7002","--slaveof","192.168.200.128","7001"]r3:image: rediscontainer_name: r3network_mode: "host"entrypoint: ["redis-server", "--port", "7003","--slaveof","192.168.200.128","7001"]s1:image: rediscontainer_name: s1volumes:- /home/sde/modules/redis/s1:/etc/redisnetwork_mode: "host"entrypoint: ["redis-sentinel", "/etc/redis/sentinel.conf", "--port", "27001"]s2:image: rediscontainer_name: s2volumes:- /home/sde/modules/redis/s2:/etc/redisnetwork_mode: "host"entrypoint: ["redis-sentinel", "/etc/redis/sentinel.conf", "--port", "27002"]s3:image: rediscontainer_name: s3volumes:- /home/sde/modules/redis/s3:/etc/redisnetwork_mode: "host"entrypoint: ["redis-sentinel", "/etc/redis/sentinel.conf", "--port", "27003"]      

/home/sde/modules/redis 是我自己創建的目錄,這個文件要根據你們自己的目錄更改。

解讀:

image:redis 執行使用的redis鏡像

container_name:s1 指定容器的名稱為s1

volumes 講宿主機上的 /home/sde/modules/redis/s1 目錄掛載到容器內的 /etc/redis 目錄。

????????作用:講sentinel的配置文件 sentinel.conf 存儲在宿主機上,方便持久化和修改。

????????注意:確保宿主機上的 s1 目錄已經存在 sentinel.conf 文件

network_mode:"host" 使用宿主機的網絡模式,而不是docker默認橋接模式,這樣容器可以直接使用宿主機的網絡線,避免端口映射問題。

entrypoint 覆蓋默認的容器啟動命令,指定啟動 Redis Sentinel 的方式

????????redis-sentinel:Redis Sentinel 的啟動方式。

????????/home/sde/modules/redis/sentinel.conf 指定Sentinel的配置文件路徑(掛載的宿主機路徑)。

????????--port 27001 指定sentinel監聽的端口號為 27001

s2 s3 服務的配置依次類推。

啟動集群

docker compose up -d

以s1為例,查看運行日志。

docker logs -f s1

s1

s2

s3

可以看到sentinel已經聯系到了7001這個節點,并且與其它幾個哨兵也建立了鏈接。哨兵信息如下:

  • 27001Sentinel IDb59bad2b0876679bf6155f9aaec3a0ad1f386b5b
  • 27002Sentinel IDbdc690efab03792689dc7ba1cb2fe92f973dc3d9
  • 27003Sentinel IDbb02acb3ffaa1ee4e542d79c8dbc1bc111d057c8

演示failover

接下來,我們演示一下當主節點故障時,哨兵是如何完成集群故障恢復(failover)的。

我們停止7001這個master節點,然后再啟動模擬宕機重啟:

docker stop r1 

稍微等待一段時間后,會發現sentinel節點觸發了failover:可以使用 docker logs -f s1 等查看各個容器的日志:

啟動 r1

docker start r1

看看 s1 日志

看看 r2 信息

docker exec -it r2 redis-cli -p 7002

可以看到 r2 成為了新的主節點

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/75537.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/75537.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/75537.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL中,聚集索引和非聚集索引到底有什么區別?

文章目錄 1. 數據存儲方式2. 索引結構3. 查詢效率4. 索引數量5. 適用場景6. 示例說明7. 總結 在MySQL中,聚集索引和非聚集索引(也稱二級索引)的區別主要體現在數據存儲方式、索引結構和查詢效率等方面。以下是詳細對比: 1. 數據存…

看 MySQL InnoDB 和 BoltDB 的事務實現

BoltDB 事務實現 BoltDB 支持多讀單寫方式的并發級別 事務操作會鎖表 它的 MVCC 為 2 個版本,當前版本和正在寫的版本 多讀:可以并發讀當前版本 單寫(串行寫):寫時拷貝當前 B 樹,構建新 B 樹&#xff…

08_JavaScript數據操作方法_數組

目錄 一、創建一個數組 1.1 數組如何創建 字面量創建 構造函數創建 1.2 數組的長度 數組名.length 1.3 數組的索引 1.4 數組如何循環遍歷 for 循環遍歷 for in for of 二、數組的常用方法 (重點 面試) push 方法 unshift 方法 pop shif…

2025.3.25總結

工作:這兩天工作都沒啥產出,主要是工作狀態不太好,周日晚上兩點睡,周一晚上一點睡。熬夜傷身,但就是控制不住自己,睡前總要刷刷手機。本來想睡前看會書的,但這行為及其不穩定,抖音也…

《Python實戰進階》第33集:PyTorch 入門-動態計算圖的優勢

第33集:PyTorch 入門-動態計算圖的優勢 摘要 PyTorch 是一個靈活且強大的深度學習框架,其核心特性是動態計算圖機制。本集將帶您探索 PyTorch 的張量操作、自動求導系統以及動態計算圖的特點與優勢,并通過實戰案例演示如何使用 PyTorch 實現…

初識哈希表

一、題意 給定一個整數數組 nums 和一個目標值 target,要求你在數組中找出和為目標值的那兩個整數,并返回它們的數組下標。你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素不能使用兩遍。 示例: 給定 nums [2, 7, …

23種設計模式-創建型模式-單例

文章目錄 簡介問題1. 確保一個類只有一個實例2. 為該實例提供全局訪問點 解決方案示例重構前:重構后: 拓展volatile 在單例模式中的雙重作用 總結 簡介 單例是一種創建型設計模式,它可以確保一個類只有一個實例,同時為該實例提供…

python裁剪nc文件數據

問題描述: 若干個nc文件儲存全球的1850-2014年月尺度的mrro數據(或其他數據),從1850-1到2014-12一共1980個月,要提取出最后35年1980.1~2014.12年也就是420個月的數據。 代碼實現 def aaa(input_file,output_file,bianliang,start_index,en…

深入解析 Spring Framework 5.1.8.RELEASE 的源碼目錄結構

深入解析 Spring Framework 5.1.8.RELEASE 的源碼目錄結構 1. 引言 Spring Framework 是 Java 領域最流行的企業級開發框架之一,廣泛用于 Web 開發、微服務架構、數據訪問等場景。本文將深入解析 Spring Framework 5.1.8.RELEASE 的源碼目錄結構,幫助開…

數據清洗:基于python抽取jsonl文件數據字段

基于python抽取目錄下所有“jsonl”格式文件。遍歷文件內某個字段進行抽取并合并。 import os import json import time from tqdm import tqdm # 需要先安裝:pip install tqdmdef process_files():# 設置目錄路徑dir_path r"D:\daku\關鍵詞識別\1623-00000…

Windows 下使用 Docker 部署 Go 應用與 Nginx 詳細教程

一、環境準備 1. 安裝必要軟件 Docker Desktop for Windows 下載地址:Docker Desktop: The #1 Containerization Tool for Developers | Docker 安裝時勾選"使用 WSL 2 引擎"(推薦) WSL 2(Windows Subsystem for Li…

C# .net ai Agent AI視覺應用 寫代碼 改作業 識別屏幕 標注等

C# net deepseek RAG AI開發 全流程 介紹_c# 向量處理 deepseek-CSDN博客 視覺多模態大模型 通義千問2.5-VL-72B AI大模型能看懂圖 看懂了后能干啥呢 如看懂圖 讓Agent 寫代碼 ,改作業,識別屏幕 標注等等。。。 據說是目前最好的免費圖片識別框架 通…

Docker多階段構建:告別臃腫鏡像的終極方案

Docker多階段構建:告別臃腫鏡像的終極方案 你是否遇到過這樣的問題:一個簡單的應用,Docker鏡像卻高達1GB?編譯工具、臨時文件、開發依賴全被打包進去,導致鏡像臃腫且不安全。 多階段構建(Multi-stage Build) 就是為解決這一問題而生——它像搬家時“只帶必需品”,讓生…

大模型應用開發之大模型工作流程

一:大模型的問答工作流程 1.1: 分詞和向量化 如上圖所示,我們如果讓大模型去回答問題,首先我們會輸入一些文字給到大模型,大模型本質上是個數學模型,它是理解不了人類的整句話的,所以它會把我們的對應的句…

SpringMVC 請求處理

SpringMVC 請求處理深度解析:從原理到企業級應用實踐 一、架構演進與核心組件協同 1.1 從傳統Servlet到前端控制器模式 SpringMVC采用前端控制器架構模式,通過DispatcherServlet統一處理請求,相比傳統Servlet的分散處理方式,實…

12屆藍橋杯—貨物擺放

貨物擺放 題目描述 小藍有一個超大的倉庫,可以擺放很多貨物。 現在,小藍有 nn 箱貨物要擺放在倉庫,每箱貨物都是規則的正方體。小藍規定了長、寬、高三個互相垂直的方向,每箱貨物的邊都必須嚴格平行于長、寬、高。 小藍希望所…

Reactor/Epoll為什么可以高性能?

在 Reactor 模式中使用 epoll_wait 實現低 CPU 占用率的核心原理是 ?事件驅動的阻塞等待機制,而非忙等待。以下通過分步驟解析其工作原理和性能優勢: void network_thread() {int epoll_fd epoll_create1(0);epoll_event events[MAX_EVENTS];// 添加U…

批量優化與壓縮 PPT,減少 PPT 文件的大小

我們經常能夠看到有些 PPT 文檔明明沒有多少內容,但是卻占用了很大的空間,存儲和傳輸非常的不方便,這時候通常是因為我們插入了一些圖片/字體等資源文件,這些都可能會導致我們的 PPT 文檔變得非常的龐大,今天就給大家介…

Java基礎 3.22

1.break練習 //1-100之內的數求和&#xff0c;求當和第一次大于20的當前數i public class Break01 {public static void main(String[] args) {int n 0;int count 0;for (int i 1; i < 100; i) {count i;System.out.println("當前和為" count);if (count &g…

高性能MySQL筆記

高性能MySQL筆記 《高性能MySQL》第1章 MySQL架構**第一章核心知識點總結****多選題**多選題答案**答案與詳解總結** 《高性能MySQL》第2章 可靠性程世界中的監控核心知識點多選題答案及解析重點鞏固方向 《高性能MySQL》第3章 Performance Schema**第三章核心知識點總結****多…