redis的主從複製配置以及哨兵機制

主從複製配置

redis主從複製

概述
1、redis的複製功能是支持多個數據庫之間的數據同步。一類是主數據庫(master)一類是從數據庫(slave),主數據庫可以進行讀寫操作,當發生寫操作的時候自動將數據同步到從數據庫,而從數據庫一般是隻讀的,並接收主數據庫同步過來的數據,一個主數據庫可以有多個從數據庫,而一個從數據庫只能有一個主數據庫。
2、通過redis的複製功能可以很好的實現數據庫的讀寫分離,提高服務器的負載能力。主數據庫主要進行寫操作,而從數據庫負責讀操作。
主從複製過程:見下圖
在這裏插入圖片描述

過程:
1:當一個從數據庫啓動時,會向主數據庫發送sync命令,
2:主數據庫接收到sync命令後會開始在後臺保存快照(執行rdb操作),並將保存期間接收到的命令緩存起來
3:當快照完成後,redis會將快照文件和所有緩存的命令發送給從數據庫。
4:從數據庫收到後,會載入快照文件並執行收到的緩存的命令。

從redis的配置很簡單,只需修改redis.conf
修改slave從redis中的 redis.conf文件
slaveof 192.168.33.130 6379 --主redis的信息
masterauth 123456— 主redis服務器配置了密碼,則需要配置

Redis哨兵機制

什麼是哨兵機制

Redis的哨兵(sentinel) 系統用於管理多個 Redis 服務器,該系統執行以下三個任務:
· 監控(Monitoring): 哨兵(sentinel) 會不斷地檢查你的Master和Slave是否運作正常。
· 提醒(Notification):當被監控的某個 Redis出現問題時, 哨兵(sentinel) 可以通過 API 向管理員或者其他應用程序發送通知。
· 自動故障遷移(Automatic failover):當一個Master不能正常工作時,哨兵(sentinel) 會開始一次自動故障遷移操作,它會將失效Master的其中一個Slave升級爲新的Master, 並讓失效Master的其他Slave改爲複製新的Master; 當客戶端試圖連接失效的Master時,集羣也會向客戶端返回新Master的地址,使得集羣可以使用Master代替失效Master。
哨兵(sentinel) 是一個分佈式系統,你可以在一個架構中運行多個哨兵(sentinel) 進程,這些進程使用流言協議(gossipprotocols)來接收關於Master是否下線的信息,並使用投票協議(agreement protocols)來決定是否執行自動故障遷移,以及選擇哪個Slave作爲新的Master.
每個哨兵(sentinel) 會向其它哨兵(sentinel)、master、slave定時發送消息,以確認對方是否”活”着,如果發現對方在指定時間(可配置)內未迴應,則暫時認爲對方已掛(所謂的”主觀認爲宕機” Subjective Down,簡稱sdown).
若“哨兵羣”中的多數sentinel,都報告某一master沒響應,系統才認爲該master"徹底死亡"(即:客觀上的真正down機,Objective Down,簡稱odown),通過一定的vote算法,從剩下的slave節點中,選一臺提升爲master,然後自動修改相關配置.
雖然哨兵(sentinel) 釋出爲一個單獨的可執行文件 redis-sentinel ,但實際上它只是一個運行在特殊模式下的 Redis 服務器,你可以在啓動一個普通 Redis 服務器時通過給定 --sentinel 選項來啓動哨兵(sentinel).
哨兵(sentinel) 的一些設計思路和zookeeper非常類似
單個哨兵(sentinel)

哨兵模式修改配置
實現步驟:

1.創建哨兵目錄
mkdir -p ./sentinel/26001/tmp
cp /usr/local/redis/sentinel.conf ./sentinel/26001/
2.修改./sentinel/.conf
cd /usr/local/redis-ms/sentinel/
vim ./26001/sentinel.conf
//修改如下鍵值對
//bind 127.0.0.1 192.168.1.1#註釋掉或者值爲0.0.0.0
protected-mode no#關閉保護模式
port 26001 //端口號
daemonize yes //後臺運行
//解除掛載信息目錄
dir /usr/local/redis-ms/sentinel/26001/tmp
//設置 主名稱 ip地址 端口號 參入選舉的哨兵數
sentinel monitor mymaster 192.168.194.131 6381 1
//sentinel心跳檢測主3秒內無響應,視爲掛掉,開始切換其他從爲主
sentinel down-after-milliseconds mymaster 3000 
//每次最多可以有1個從同步主。一個從同步結束,另一個從開始同步。
sentinel parallel-syncs mymaster 1
//主從切換超時時間
sentinel failover-timeout mymaster 18000

啓動主從,再啓動哨兵 後面conf爲指定的哨兵配置文件
/usr/local/redis/src/redis-sentinel /usr/local/redis-ms/sentinel/26001/sentinel.conf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章