Debian配置Redis主從、哨兵

前言

Redis的下載安裝可參考Centos安裝配置Redis6.x,Centos和Debian的步驟基本類似,或自行在網上搜索相關資料
注意:遠程連接需放開相應端口

主從

搭建一個一主二從的主從模式

處理conf文件

#進入redis所在目錄
cd /tools/redis/redis6
#創建主從配置文件所在目錄
mkdir master-slave
#復制一份conf文件到目標目錄
cp redis.conf master-slave/redis-master.conf
#切換至目標你目錄
cd master-slave
  • redis-master.conf中需要注意的配置
#開放連接,可以指定連接的ip,測試用我直接全開放了
bind 0.0.0.0
#指定啟動端口(不推薦用默認的16379)
port 16379
#是否開啟保護模式
protected-mode yes
#守護線程模式
daemonize yes
#指定日志文件位置
logfile "/tools/redis/redis6/master-slave/master.log"
#用戶管理
user default off
user root on +@all  allkeys >root
#指定認證密碼
requirepass root
#指定master密碼
masterauth root
指定rdb位置及文件名
dir ./ 
dbfilename dump-master.rdb
#主節點可讀可寫
replica-read-only no
  • 復制兩份從配置文件
cp redis-master.conf redis-slave1.conf
cp redis-master.conf redis-slave2.conf
  • redis-slave*.conf注意事項(和master不同的)
port 16380
logfile "/tools/redis/redis6/master-slave/slave1.log"
dbfilename dump-slave-16380.rdb
#指定master登錄用戶
masteruser root
replica-read-only yes
replicaof your_master_ip your_master_port

啟動redis

此部分可以提取成一個sh文件,方便后續啟動
start-ms.sh

#啟動主節點
../src/redis-server redis-master.conf
#啟動從節點1
../src/redis-server redis-slave1.conf
#啟動從節點2
../src/redis-server redis-slave2.conf
root@iZuf67owyzd0wopzvdfgsyZ:/tools/redis/redis6/master-slave# sh start-ms.sh
#查看redis運行情況,如果有沒啟動起來的可以去相應的log文件中查看日志
root@iZuf67owyzd0wopzvdfgsyZ:/tools/redis/redis6/master-slave# ps -aux|grep redis
root      799730  0.1  0.5  54176  9244 ?        Ssl  15:17   0:04 ../src/redis-server 0.0.0.0:16379
root      804110  0.1  0.5  54176  9328 ?        Ssl  15:29   0:03 ../src/redis-server 0.0.0.0:16380
root      804146  0.1  0.5  54176  9300 ?        Ssl  15:29   0:03 ../src/redis-server 0.0.0.0:16381
root      821441  0.0  0.1   6332  2036 pts/0    S+   16:19   0:00 grep redis

測試

  • redis-cli連接主節點,查看相關信息,并寫一條數據
root@iZuf67owyzd0wopzvdfgsyZ:/tools/redis/redis6/master-slave# ../src/redis-cli  -p 16379
127.0.0.1:16379> auth root root
OK
127.0.0.1:16379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=16380,state=online,offset=4364,lag=0
slave1:ip=127.0.0.1,port=16381,state=online,offset=4364,lag=1
master_failover_state:no-failover
master_replid:022605e2b857e08361cf180f174ef534059df9dd
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:4364
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:4364
127.0.0.1:16379> keys *
1) "k1"
2) "k2"
127.0.0.1:16379> set k3 v3
OK
127.0.0.1:16379> exit
  • redis-cli連接從節點,查看相關信息,可獲取主節點數據,不可寫數據
root@iZuf67owyzd0wopzvdfgsyZ:/tools/redis/redis6/master-slave# ../src/redis-cli  -p 16380
127.0.0.1:16380> auth root root
OK
127.0.0.1:16380> keys *
1) "k3"
2) "k1"
3) "k2"
127.0.0.1:16380> set k4 v4
(error) READONLY You can't write against a read only replica.
127.0.0.1:16380> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:16379
master_link_status:up
master_last_io_seconds_ago:9
master_sync_in_progress:0
slave_read_repl_offset:4603
slave_repl_offset:4603
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:022605e2b857e08361cf180f174ef534059df9dd
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:4603
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:529
repl_backlog_histlen:4075
127.0.0.1:16380> exit

哨兵

啟動主從后,可以進行哨兵的配置

處理config文件

  • 創建并進入sentinel目錄
mkdir sentinel
cd sentinel
  • 創建三個哨兵的conf
vim sentinel-26379.conf

sentinel-26379.conf

bind 0.0.0.0
port 26379
protected-mode no
sentinel monitor mymaster 127.0.0.1 16379 2
sentinel auth-user mymaster root
sentinel auth-pass mymaster root
requirepass root
vim sentinel-26380.conf

sentinel-26380.conf

bind 0.0.0.0
port 26380
protected-mode no
sentinel monitor mymaster 127.0.0.1 16379 2
sentinel auth-user mymaster root
sentinel auth-pass mymaster root
requirepass root
vim sentinel-26381.conf

sentinel-26381.conf

bind 0.0.0.0
port 26381
protected-mode no
sentinel monitor mymaster 127.0.0.1 16379 2
sentinel auth-user mymaster root
sentinel auth-pass mymaster root
requirepass root

啟動

  • 創建啟動腳本
vim start-sentinel.sh

start-sentinel.sh

# 啟動第一個哨兵實例,并將輸出重定向到日志文件,且在后臺運行
nohup ../src/redis-server sentinel-26379.conf --sentinel > sentinel-26379.log 2>&1 &
echo "Sentinel 26379 started"
# 啟動第二個哨兵實例,并將輸出重定向到日志文件,且在后臺運行
nohup ../src/redis-server sentinel-26380.conf --sentinel > sentinel-26380.log 2>&1 &
echo "Sentinel 26380 started"# 啟動第三個哨兵實例,并將輸出重定向到日志文件,且在后臺運行
nohup ../src/redis-server sentinel-26381.conf --sentinel > sentinel-26381.log 2>&1 &
echo "Sentinel 26381 started"
  • 運行腳本
root@hecs-166225:/tools/redis/redis6/sentinel# sh start-sentinel.sh
Sentinel 26379 started
Sentinel 26380 started
Sentinel 26381 started
  • 查看運行狀態
root@hecs-166225:/tools/redis/redis6/sentinel# ps -aux|grep redis
root      378240  0.1  0.2  51616  9328 ?        Ssl  17:36   0:08 ../src/redis-server 0.0.0.0:16379
root      378246  0.0  0.2  51616  9172 ?        Ssl  17:36   0:06 ../src/redis-server 0.0.0.0:16380
root      378252  0.0  0.2  51616  9144 ?        Ssl  17:36   0:06 ../src/redis-server 0.0.0.0:16381
root      414671  0.1  0.3  51616 12340 pts/3    Sl   19:45   0:00 ../src/redis-server 127.0.0.1:26379 [sentinel]
root      414672  0.0  0.3  51616 12168 pts/3    Sl   19:45   0:00 ../src/redis-server 127.0.0.1:26380 [sentinel]
root      414673  0.0  0.3  51616 12160 pts/3    Sl   19:45   0:00 ../src/redis-server 127.0.0.1:26381 [sentinel]
root      414766  0.0  0.0   6332  2120 pts/3    S+   19:45   0:00 grep redis

測試

root@hecs-166225:/tools/redis/redis6/src# redis-cli -p 26379
127.0.0.1:26379> auth root
OK
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:16379,slaves=2,sentinels=3

終止16379的redis進程,過一至兩分鐘(sentinel.conf中sentinel down-after-milliseconds屬性影響,默認30s)重新執行info命令,發現已自動切換

127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:16381,slaves=2,sentinels=3

查看sentinel執行日志,也可以看到16379down掉后,16381被選舉為主節點

root@iZuf67owyzd0wopzvdfgsyZ:/tools/redis/redis6/sentinel# tail -fn 100 sentinel-26379.log
1943239:X 19 Jun 2025 15:07:28.249 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1943239:X 19 Jun 2025 15:07:28.249 # Redis version=6.2.9, bits=64, commit=00000000, modified=0, pid=1943239, just started
1943239:X 19 Jun 2025 15:07:28.249 # Configuration loaded
1943239:X 19 Jun 2025 15:07:28.249 * monotonic clock: POSIX clock_gettime
1943239:X 19 Jun 2025 15:07:28.250 * Running mode=sentinel, port=26379.
1943239:X 19 Jun 2025 15:07:28.250 # Sentinel ID is 3579c0b96dabe452b8f53e795d9b894ea381c8b3
1943239:X 19 Jun 2025 15:07:28.250 # +monitor master mymaster 127.0.0.1 16379 quorum 2
1943239:X 19 Jun 2025 15:08:49.682 # +sdown master mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:49.759 # +odown master mymaster 127.0.0.1 16379 #quorum 2/2
1943239:X 19 Jun 2025 15:08:49.759 # +new-epoch 1
1943239:X 19 Jun 2025 15:08:49.759 # +try-failover master mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:49.764 # +vote-for-leader 3579c0b96dabe452b8f53e795d9b894ea381c8b3 1
1943239:X 19 Jun 2025 15:08:49.776 # 9f69ca329a02657930f62ba9c4e4a29e98309796 voted for 3579c0b96dabe452b8f53e795d9b894ea381c8b3 1
1943239:X 19 Jun 2025 15:08:49.777 # c1a06f7ca5fa19610948005bc5eb10936fc17ea7 voted for 3579c0b96dabe452b8f53e795d9b894ea381c8b3 1
1943239:X 19 Jun 2025 15:08:49.847 # +elected-leader master mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:49.847 # +failover-state-select-slave master mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:49.919 # +selected-slave slave 127.0.0.1:16381 127.0.0.1 16381 @ mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:49.919 * +failover-state-send-slaveof-noone slave 127.0.0.1:16381 127.0.0.1 16381 @ mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:50.010 * +failover-state-wait-promotion slave 127.0.0.1:16381 127.0.0.1 16381 @ mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:50.469 # +promoted-slave slave 127.0.0.1:16381 127.0.0.1 16381 @ mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:50.469 # +failover-state-reconf-slaves master mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:50.535 * +slave-reconf-sent slave 127.0.0.1:16380 127.0.0.1 16380 @ mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:50.887 # -odown master mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:51.516 * +slave-reconf-inprog slave 127.0.0.1:16380 127.0.0.1 16380 @ mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:51.516 * +slave-reconf-done slave 127.0.0.1:16380 127.0.0.1 16380 @ mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:51.568 # +failover-end master mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:51.568 # +switch-master mymaster 127.0.0.1 16379 127.0.0.1 16381
1943239:X 19 Jun 2025 15:08:51.568 * +slave slave 127.0.0.1:16380 127.0.0.1 16380 @ mymaster 127.0.0.1 16381
1943239:X 19 Jun 2025 15:08:51.568 * +slave slave 127.0.0.1:16379 127.0.0.1 16379 @ mymaster 127.0.0.1 16381
1943239:X 19 Jun 2025 15:09:21.607 # +sdown slave 127.0.0.1:16379 127.0.0.1 16379 @ mymaster 127.0.0.1 16381

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

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

相關文章

虛實交融:數字孿生如何重塑交通與公路勘察設計的未來

當每一條道路、每一座橋梁、每一盞信號燈都在數字世界獲得“永生副本”,交通系統從被動響應邁入主動預演的紀元 一、數字孿生的核心定義:超越鏡像的動態認知引擎 數字孿生(Digital Twin)并非簡單的三維可視化模型,而是…

vector模擬實現中的迭代器失效問題

首先來看一組代碼: iterator insert(iterator pos, const T& x) {// 擴容if (_finish _end_of_storage){size_t len pos - _stare;reserve(capacity() 0 ? 4 : capacity() * 2);pos _stare len;}iterator end _finish - 1;while (end > pos){*(end…

java 設計模式_行為型_22模板模式

22.模板模式 模板方法(Template Method)作為Java的設計模式之一,一個詞概括其優勢特點那就是:抽象步驟 首先我們應該抽出共通的東西做一個父類(Base類),其次具體的蛋糕制作由子類進一步實現&…

隨記:在springboot中websocket的使用

我現在有兩種方法 第一種:使用java封裝的這個包下的javax.websocket.* 先配置這個配置類 import com.alibaba.nacos.common.utils.CollectionUtils; import org.springframework.stereotype.Component;import javax.websocket.HandshakeResponse; import javax.w…

技術文章大綱:SpringBoot自動化部署實戰

技術文章大綱:SpringBoot自動化部署實戰 概述 自動化部署的背景與意義SpringBoot在現代化部署中的優勢常見自動化部署工具與方案概覽(Jenkins、Docker、K8s等) 環境準備 基礎工具要求:JDK、Maven/Gradle、Git服務器環境配置&a…

FastAdmin按鈕類功能全解析 class 屬性定義不同的交互行為

在 FastAdmin 中,超鏈接的 class 屬性用于定義不同的交互行為和樣式。以下是常見 class 配置的用途和區別: btn-dialog 用于觸發彈出對話框行為。點擊帶有此 class 的鏈接或按鈕時,FastAdmin 會自動加載指定的 URL 內容并在模態框中顯示。通…

python3字典對象實現解析

文章目錄 前言Raymond的方案字典結構字典創建字典插入插入空字典PyDictKeysObject的創建設置索引存儲entry 插入非空字典調整大小字典查找聯合字典插入 字典查詢字典刪除 前言 本來以為python字典的實現就是一個哈希表的普通實現,所以在學習基本類型時沒去仔細研究…

Word2Vec介紹

前言 當今的大語言模型非常智能,但是你有沒有想過這些事情: 機器是怎么理解“國王”和“王后”之間的關系? “貓”和“狗”是怎么在 AI 中“相似以及區分”的? 文本又是怎么變成模型能讀懂的數字? 這一切&#xf…

Rsync+sersync實現數據實時同步(小白的“升級打怪”成長之路)

目錄 一、rsync部署 push推數據 1、編寫rsync配置文件 2、備份測試 3、檢驗結果 二、rsyncsersync 實現數據實時同步 1、安裝sersync服務 2、檢驗結果 pull拉取數據 1、編寫rsync配置文件 2、檢驗結果 三、腳本編寫 1、客戶端腳本編寫 2、服務器腳本編寫 一、rsy…

用 python 開發一個可調用工具的 AI Agent,實現電腦配置專業評價

在人工智能時代,AI Agent憑借其強大的任務處理能力,逐漸成為開發人員手中的得力工具。今天,我們就來一起動手,用Python打造一個能夠調用工具的AI Agent,實現根據電腦信息對電腦配置進行專業評價的功能。 一、項目創建…

WSL 安裝使用和常用命令

參考官方使用說明&#xff1a; https://learn.microsoft.com/zh-cn/windows/wsl/ 安裝wsl: wsl --install --no-distribution --no-distribution&#xff1a;安裝 WSL 時不要安裝分發版 更新 wsl: wsl --update 設置wsl 默認版本&#xff1a; wsl --set-default-version <…

720全景VR拍攝制作實戰教程

720全景VR拍攝制作實戰教程 720全景VR拍攝制作是近年來興起的一種沉浸式影像制作技術。它通過多角度拍攝&#xff0c;并將畫面拼接成一個全景視角&#xff0c;使觀眾獲得身臨其境的觀看體驗。本教程將帶你從準備階段到拍攝階段&#xff0c;再到后期處理階段&#xff0c;一步步…

什么真正的云原生開發?如何區別本地開發后部署到云端?

以下是關于云原生開發的深度解析&#xff0c;以及與本地開發后遷移上云的本質區別&#xff1a; 一、真正的云原生開發&#xff1a;從理念到實踐的全面革新 1. 定義與核心思想 云原生開發是一種以云計算能力為核心的架構設計和開發方法論&#xff0c;其本質是讓應用從誕生之初…

從代碼學習深度學習 - 詞的相似性和類比任務 PyTorch版

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言加載預訓練詞向量TokenEmbedding 類詳解預訓練詞向量簡介 (GloVe)具體含義總結建議應用預訓練詞向量詞相似度knn 函數get_similar_tokens 函數相似詞查找示例詞類比get_analogy 函數詞類比任務…

ubuntu 22.04 安裝部署elk(elasticsearch/logstash/kibana) 7.10.0詳細教程

安裝部署elk7.10.0詳細教程 一、安裝jdk 11環境二、安裝elasticsearch 7.10.0三、安裝kibana 7.10.0四、安裝logstash 7.10.0五、安裝ik7.10.0分詞六、開啟安全功能1. 開啟用戶名密碼登錄2. 開啟es安全加密通信3. 開啟Kibana安全功能 七、注意事項和常見錯誤八、其它操作及命令…

技術文章: 基板的吸水率

PCB基板或覆銅板的吸水率是一個重要的性能指標&#xff0c;它衡量了覆銅板在特定條件下&#xff08;通常是浸水后&#xff09;吸收水分的能力&#xff0c;通常用指定條件下吸水后與吸水前相比&#xff0c;質量增加的百分比來表示。當材料暴露扎起在潮濕空氣中或浸沒在水中時其抵…

九日集訓第三天

目錄 搜索旋轉排序數組 搜索旋轉排序數組|| 尋找旋轉排序中的數組最小值 爬樓梯 斐波那契數 第N個泰波那契數 差的絕對值為K的數對數目 猜數字 拿硬幣 山峰數組的峰頂索引 搜索旋轉排序數組 class Solution { public:int search(vector<int>& nums, int t…

CppCon 2017 學習:folly::Function A Non-copyable Alternative to std::function

你說的內容是關于 C 中 可調用類型&#xff08;Callable Types&#xff09; 的基礎知識&#xff0c;我幫你理清并補充理解。 Callable Types&#xff08;可調用類型&#xff09;簡介 C 中任何可以用 () 括號操作符“調用”的對象&#xff0c;都叫做 可調用類型。典型包括&…

PyTorch 中Tensor常用數據結構(int, list, numpy array等)互相轉換和實戰示例

在 PyTorch 中&#xff0c;tensor 是一種強大且靈活的數據結構&#xff0c;可以與多種 Python 常用數據結構&#xff08;如 int, list, numpy array 等&#xff09;互相轉換。下面是詳細解釋和代碼示例&#xff1a; 1. Tensor ? int / float 轉為 int / float&#xff08;前提…

計算機網絡與數據通信基礎

第一章 計算機網絡概述 1. 計算機網絡的核心概念 1.1 定義 將 地理分散 的、具有 獨立處理能力 的計算機系統&#xff08;主機/Host&#xff09;&#xff0c;通過 傳輸介質 與 網絡設備 互連&#xff0c;在 網絡協議 和 軟件 支持下實現 資源共享 與 數據通信 的系統。 關鍵術…