docker-compose配置redis哨兵詳細步驟和配置文件

docker-compose配置redis哨兵詳細步驟和配置文件

目錄結構調整

redis-cluster/
├── config/
│   ├── master.conf           # 主節點配置
│   ├── slave1.conf           # 從節點1配置
│   ├── slave2.conf           # 從節點2配置
│   ├── sentinel1.conf        # 哨兵1配置
│   ├── sentinel2.conf        # 哨兵2配置
│   └── sentinel3.conf        # 哨兵3配置
└── docker-compose.yml        # 包含哨兵的docker-compose配置

Redis配置文件更新

1. config/master.conf(主節點)
port 6379
bind 0.0.0.0
protected-mode no
logfile "redis-master.log"
dir /data
save 900 1
save 300 10
save 60 10000
requirepass yourpassword
masterauth yourpassword
2. config/slave1.conf(從節點1)
port 6380
bind 0.0.0.0
protected-mode no
logfile "redis-slave1.log"
dir /data
slaveof redis-master 6379
requirepass yourpassword
masterauth yourpassword
3. config/slave2.conf(從節點2)
port 6381
bind 0.0.0.0
protected-mode no
logfile "redis-slave2.log"
dir /data
slaveof redis-master 6379
requirepass yourpassword
masterauth yourpassword

哨兵配置文件

4. config/sentinel1.conf(哨兵1)
port 26379
bind 0.0.0.0
protected-mode no
logfile "sentinel1.log"
dir /data# 監控主節點,mymaster是集群名稱,2是觸發故障轉移所需的最小同意票數
sentinel monitor mymaster redis-master 6379 2# 主節點不可用的判定時間(毫秒)
sentinel down-after-milliseconds mymaster 5000# 故障轉移超時時間(毫秒)
sentinel failover-timeout mymaster 10000# 認證密碼
sentinel auth-pass mymaster yourpassword
5. config/sentinel2.conf(哨兵2)
port 26379
bind 0.0.0.0
protected-mode no
logfile "sentinel2.log"
dir /data
sentinel monitor mymaster redis-master 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel auth-pass mymaster yourpassword
6. config/sentinel3.conf(哨兵3)
port 26379
bind 0.0.0.0
protected-mode no
logfile "sentinel3.log"
dir /data
sentinel monitor mymaster redis-master 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel auth-pass mymaster yourpassword

更新后的docker-compose.yml

version: '3.8'services:# Redis主節點redis-master:image: redis:7.0container_name: redis-masterports:- "6379:6379"volumes:- ./config/master.conf:/usr/local/etc/redis/redis.conf- redis-data-master:/datacommand: ["redis-server", "/usr/local/etc/redis/redis.conf"]healthcheck:test: ["CMD", "redis-cli", "-a", "yourpassword", "ping"]interval: 5stimeout: 5sretries: 5networks:- redis-network# Redis從節點1redis-slave1:image: redis:7.0container_name: redis-slave1ports:- "6380:6380"volumes:- ./config/slave1.conf:/usr/local/etc/redis/redis.conf- redis-data-slave1:/datacommand: ["redis-server", "/usr/local/etc/redis/redis.conf"]healthcheck:test: ["CMD", "redis-cli", "-a", "yourpassword", "-p", "6380", "ping"]interval: 5stimeout: 5sretries: 5depends_on:- redis-masternetworks:- redis-network# Redis從節點2redis-slave2:image: redis:7.0container_name: redis-slave2ports:- "6381:6381"volumes:- ./config/slave2.conf:/usr/local/etc/redis/redis.conf- redis-data-slave2:/datacommand: ["redis-server", "/usr/local/etc/redis/redis.conf"]healthcheck:test: ["CMD", "redis-cli", "-a", "yourpassword", "-p", "6381", "ping"]interval: 5stimeout: 5sretries: 5depends_on:- redis-masternetworks:- redis-network# 哨兵節點1redis-sentinel1:image: redis:7.0container_name: redis-sentinel1ports:- "26379:26379"volumes:- ./config/sentinel1.conf:/usr/local/etc/redis/sentinel.conf- sentinel-data1:/datacommand: ["redis-sentinel", "/usr/local/etc/redis/sentinel.conf"]healthcheck:test: ["CMD", "redis-cli", "-p", "26379", "ping"]interval: 5stimeout: 5sretries: 5depends_on:- redis-master- redis-slave1- redis-slave2networks:- redis-network# 哨兵節點2redis-sentinel2:image: redis:7.0container_name: redis-sentinel2ports:- "26380:26379"volumes:- ./config/sentinel2.conf:/usr/local/etc/redis/sentinel.conf- sentinel-data2:/datacommand: ["redis-sentinel", "/usr/local/etc/redis/sentinel.conf"]healthcheck:test: ["CMD", "redis-cli", "-p", "26380", "ping"]interval: 5stimeout: 5sretries: 5depends_on:- redis-master- redis-slave1- redis-slave2networks:- redis-network# 哨兵節點3redis-sentinel3:image: redis:7.0container_name: redis-sentinel3ports:- "26381:26379"volumes:- ./config/sentinel3.conf:/usr/local/etc/redis/sentinel.conf- sentinel-data3:/datacommand: ["redis-sentinel", "/usr/local/etc/redis/sentinel.conf"]healthcheck:test: ["CMD", "redis-cli", "-p", "26381", "ping"]interval: 5stimeout: 5sretries: 5depends_on:- redis-master- redis-slave1- redis-slave2networks:- redis-networkvolumes:redis-data-master:redis-data-slave1:redis-data-slave2:sentinel-data1:sentinel-data2:sentinel-data3:networks:redis-network:driver: bridge

部署和驗證步驟

  1. 創建目錄和配置文件,確保權限正確:
mkdir -p config
chmod -R 644 config/
  1. 啟動集群:
docker-compose up -d
  1. 驗證Redis主從狀態:
# 查看主節點信息
docker exec -it redis-master redis-cli -a yourpassword info replication# 查看從節點信息
docker exec -it redis-slave1 redis-cli -a yourpassword -p 6380 info replication
docker exec -it redis-slave2 redis-cli -a yourpassword -p 6381 info replication
  1. 驗證哨兵狀態:
# 從任一哨兵獲取集群信息
docker exec -it redis-sentinel1 redis-cli -p 26379
127.0.0.1:26379> SENTINEL masters
127.0.0.1:26379> SENTINEL slaves mymaster

測試故障轉移

  1. 模擬主節點故障:
docker stop redis-master
  1. 等待約10秒(根據sentinel配置的超時時間),哨兵會自動將一個從節點提升為主節點

  2. 驗證新的主節點:

# 查看哨兵狀態
docker exec -it redis-sentinel1 redis-cli -p 26379 SENTINEL get-master-addr-by-name mymaster# 確認客戶端可以連接到新主節點
redis-cli -h <new-master-ip> -p 6379 -a yourpassword ping
  1. 恢復原主節點:
docker start redis-master

原主節點將作為從節點重新加入集群

客戶端連接配置

應用程序應通過哨兵獲取當前主節點地址,而不是直接連接固定節點。例如,使用Redis客戶端連接時:

# Python示例
from redis.sentinel import Sentinelsentinel = Sentinel([('localhost', 26379),('localhost', 26380),('localhost', 26381)
], socket_timeout=0.5)# 獲取主節點連接
master = sentinel.master_for('mymaster', socket_timeout=0.5, password='yourpassword')# 獲取從節點連接(用于讀操作)
slave = sentinel.slave_for('mymaster', socket_timeout=0.5, password='yourpassword')# 執行命令
master.set('foo', 'bar')
value = slave.get('foo')
print(value)  # 輸出: b'bar'

這個配置方案實現了一個完整的Redis高可用集群,包含一主二從和三個哨兵節點,可以自動進行故障轉移和恢復。

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

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

相關文章

多模態大語言模型arxiv論文略讀(146)

Exploring Response Uncertainty in MLLMs: An Empirical Evaluation under Misleading Scenarios ?? 論文標題&#xff1a;Exploring Response Uncertainty in MLLMs: An Empirical Evaluation under Misleading Scenarios ?? 論文作者&#xff1a;Yunkai Dang, Mengxi G…

【教程】Linux中限制用戶可以使用的GPU數量 | 附腳本

轉載請注明出處&#xff1a;小鋒學長生活大爆炸[xfxuezhagn.cn] 如果本文幫助到了你&#xff0c;歡迎[點贊、收藏、關注]哦~ 目錄 背景說明 設置方法 管理腳本 進階限制 恢復默認組 注意事項 背景說明 比較簡單的方式是使用group來管理權限&#xff0c;這種方式能限制哪些…

90.xilinx復位低電平(一般使用低電平復位)

Xilinx FPGA 中的寄存器&#xff08;Flip-Flop&#xff09;**確實支持異步復位**&#xff0c;但具體實現方式取決于你使用的設計方法&#xff08;HDL 代碼風格或原語實例化&#xff09;。以下是詳細說明&#xff1a; --- ### 1. **Xilinx 寄存器的復位特性** - **同步復位…

NVMe高速傳輸之擺脫XDMA設計10: DMA 控制單元設計

DMA 控制單元負責控制 DMA 傳輸事務&#xff0c; 該單元承擔了 DMA 事務到 NVMe 事務的轉換任務&#xff0c; 使用戶對數據傳輸事務的控制更加簡單快捷。 DMA 控制功能由 DMA寄存器組實現。 DMA 寄存器組包含 DMA 操作寄存器、 DMA 長度寄存器、 DMA 源目的地址寄存器和 DMA 狀…

如何設置電腦定時休眠?操作指南詳解

長時間運行電腦會導致硬件過熱&#xff0c;縮短其使用壽命。定時關機有助于讓硬件得到休息&#xff0c;降低因長時間高負荷工作導致損壞的風險。 它的界面簡潔直觀&#xff0c;功能卻十分實用&#xff0c;涵蓋了定時關機、重啟、注銷、休眠、待機以及鎖定等多種操作。 以設置“…

LeetCode[617]合并二叉樹

思路&#xff1a; 我們合并左右子樹&#xff0c;在遞歸左右子樹的時候&#xff0c;一定要保證左右子樹不為空&#xff0c;如果左子樹為空&#xff0c;那么直接返回右子樹就行了&#xff0c;即使右子樹為空。如果右子樹為空那么直接返回左子樹就行了&#xff0c;這樣判斷完就正常…

Redis 常用五大數據類型

1、Redis 關鍵字&#xff08;Key&#xff09; keys * 查看當前庫所有keyexists [key] 判斷某個key是否存在type [key] 查看當前key的數據類型del [key] 刪除指定的key數據unlink [key] 根據value選擇非阻塞刪除&#xff0c;僅將keys從keyspace元數據中刪除&#xff0c;真正的刪…

大語言模型(LLM)專業術語匯總

1. 訓練與部署 1.1 預訓練 專業&#xff1a;在海量無標注文本&#xff08;如Common Crawl、Wikipedia&#xff09;上通過自監督學習訓練基礎語言模型&#xff0c;學習通用語言表征&#xff08;如GPT-3訓練數據達45TB&#xff09;。通俗&#xff1a;AI的“通識教育階段”&…

【Java Swing 圖形界面編程】JList 列表組件 ① ( JList 組件簡介 | 核心作用 | 關鍵特性 | 基礎用法示例 )

文章目錄 一、JList 組件簡介1、JList 概念簡介2、JList 核心作用3、JList 關鍵特性 二、JList 組件基礎用法示例1、使用 String 數組構建列表項2、使用 Vector 集合構建列表項3、使用 DefaultListModel 構建列表項 一、JList 組件簡介 1、JList 概念簡介 基本概念 : JList 組件…

【小技巧】Python+PyCharm IDE 配置解釋器出錯,環境配置不完整或不兼容。(小智AI、MCP、聚合數據、實時新聞查詢、NBA賽事查詢)

報錯信息如下&#xff1a; [unsupported] Python 3.1 (mcp-calculator-main) (3) C:\Users(xsshu\AppData\Local\Programs\Python\Python313\python.exe [unsupported] Python 3.1 C:\Users\xsshu\AppData\Local\Programs\Python\Python311\python.exe 這條輸出顯示了兩個 Pyth…

Ragflow 前后端登錄邏輯

前端登錄邏輯 路由配置&#xff1a; /login 路由指向 /pages/login 組件。登錄表單使用 Ant Design 的 Form, Input, 和 Button 組件。 登錄表單處理&#xff1a; 使用 useLogin鉤子來處理登錄請求。密碼通過 RSA 加密后再發送到服務器。成功登錄后導航至 /knowledge 頁面。 …

基于圖神經網絡的ALS候選藥物預測模型設計與實現

基于圖神經網絡的ALS候選藥物預測模型設計與實現 一、任務背景與意義 肌萎縮側索硬化癥(ALS)是一種致命的神經退行性疾病,目前尚無有效治愈方法。傳統藥物發現流程耗時長、成本高,而人工智能技術為加速藥物發現提供了新途徑。本文設計并實現了一個基于圖神經網絡(GNN)的…

運維打鐵: 數據加密與備份恢復策略制定

文章目錄 思維導圖一、數據加密1. 加密算法選擇AES 加密示例&#xff08;Python&#xff09;RSA 加密示例&#xff08;Python&#xff09; 2. 密鑰管理3. 加密范圍 二、數據備份1. 備份類型全量備份增量備份差異備份 2. 備份頻率3. 備份存儲位置 三、數據恢復1. 恢復測試2. 恢復…

AIbase MCP服務庫上線:集成服務器、客戶端、案例教程等服務

在當今數字化時代&#xff0c;人工智能技術正以前所未有的速度發展&#xff0c;深刻地改變著我們的生活和工作方式。而要充分發揮AI的強大能力&#xff0c;離不開高效的工具和服務支持。今天&#xff0c;就讓我們來了解一下一個專注于MCP&#xff08;Model Context Protocol&am…

QGIS+CesiumIon

前言 QGIS 3.44中&#xff0c;新增了3D 場景新增地球視圖模式&#xff0c;通過Cesium ion插件&#xff0c;支持谷歌全球傾斜模型的加載顯示。 目錄 1 CesiumIon插件安裝 2 加載谷歌全球傾斜模型 1、CesiumIon插件安裝 點擊菜單【Plugins】->【Manage and Install Plugins】…

TEXT Introduction

我們是誰 美國計算機奧林匹克競賽通過培訓、競賽和國際比賽來促進大學前的計算機學習。 數個教練將會組織、領導、陪伴代表美國參加國際性奧林匹克競賽的學生。 你可以在 USACO 官網了解更多。 USACO 的目標 USACO 的具體目標包括&#xff1a; 訓練美國的隊伍并且在下一屆奧…

Fluent許可服務器設置教程

Fluent作為一款廣泛使用的流體動力學模擬軟件&#xff0c;其高效的許可管理系統是確保順暢運行的關鍵。為了幫助您更好地掌握Fluent許可服務器的設置方法&#xff0c;本文將為您提供一份詳細的設置教程&#xff0c;讓您輕松配置&#xff0c;高效運行Fluent軟件。 一、Fluent許可…

vue3中實現高德地圖POI搜索(附源碼)

引言 上一篇文章詳細講解了vue3中實現高德地圖地址搜索自動提示&#xff08;附源碼&#xff09;&#x1f517;&#xff0c;本文將重點介紹POI搜索功能的實現。 1. 功能介紹 POI(Point of Interest) 搜索用于查找特定位置或區域內的興趣點&#xff0c;如餐館、商場、景點等。…

機器學習在計算機視覺中的應用

引言 計算機視覺&#xff08;Computer Vision&#xff09;是人工智能的重要分支&#xff0c;旨在讓計算機像人類一樣“看懂”圖像和視頻。近年來&#xff0c;隨著深度學習&#xff08;Deep Learning&#xff09;的快速發展&#xff0c;計算機視覺在多個領域取得了突破性進展。…

新手向:從零開始Node.js超詳細安裝、配置與使用指南

什么是Node.js&#xff1f; 簡單來說&#xff1a; Node.js 是一個在服務器端運行 JavaScript 的環境。 以前JavaScript只能做網頁特效&#xff0c;現在用它就能開發網站后臺、命令行工具甚至桌面應用&#xff01; 第一步&#xff1a;安裝Node.js&#xff08;多系統詳解&#x…