主從復制
主從復制:主從復制是redis實現高可用的基礎,哨兵模式和集群都是在主從復制的基礎之上實現高可用。??
主從負責的工作原理
1、主節點(master) 從節點(slave)組成,數據復制是單向的,只能從主節點到從節點。
主從復制實現數據的多機備份,以及讀寫分離(主服務器負責寫,從服務器只負責讀)
缺陷:故障無法自動恢復,需要人工干預,寫操作的負載均衡
工作流程圖
配置主從復制
主從架構服務器聲明:
主:192.168.10.80
從:192.168.10.150
從:192.168.10.151
主:192.168.10.80
*****************************************************************************************
systemctl stop firewalld
setenforce 0
#關閉三臺機器的防火墻和安全機制主節點:
vim /etc/redis/6379.conf
70行
修改網段 0.0.0.0
bind 0.0.0.0
137行
daemonize yes
700行
開啟aof模式
appendonly yes/etc/init.d/redis_6379 restart*****************************************************************************************
從:192.168.10.150
*****************************************************************************************
從節點1:
vim /etc/redis/6379.conf
70行
修改網段 0.0.0.0
bind 0.0.0.0288行
replicaof <masterip> <masterport>
replicaof 20.0.0.26 6379
#指向主的ip和端口700行
開啟aof模式
appendonly yes/etc/init.d/redis_6379 restart
#開啟了指向后從節點將變為只讀模式*****************************************************************************************
從:192.168.10.151
*****************************************************************************************從節點1:
vim /etc/redis/6379.conf
70行
修改網段 0.0.0.0
bind 0.0.0.0288行
replicaof <masterip> <masterport>
replicaof 20.0.0.26 6379
#指向主的ip和端口700行
開啟aof模式
appendonly yes/etc/init.d/redis_6379 restart
#開啟了指向后從節點將變為只讀模式*****************************************************************************************
哨兵模式:
基于主從模式實現主節點自動切換。
哨兵模式的原理:
哨兵:是一個分布式系統,用于在主從結構之間,對每臺redisd的服務進行監控。
主節點出現故障時,從節點通過投票的方式選擇一個新的master
哨兵模式至少需要三個節點。
哨兵模式的結構
哨兵節點:監控,不能存儲數據
數據節點: 主節點和從節點,都是數據節點。
哨兵監控的是節點,每個哨兵節點每間隔一秒,通過ping命令的方式,檢測主從之間的心跳線。
主節點在一定時間內沒有回復或回復了錯誤的消息,這個時候,哨兵就會主觀的認為任務節點已經下線,超過半數的哨兵節點任務主節點下線了,這個時候才會認為主節點是客觀下線。
哨兵節點通過raft算法(選舉算法),每個節點共同投票選舉出一個新的master,然后新的master實現主節點轉移和故障恢復通知。
主節點的選舉過程:
1、已經下線的從節點,不會被選擇
2、選擇配置文件中,從節點優先級先最高的 replica-priority 100
3、選擇一個負責數據最完整的從節點
哨兵監控的是redis服務,圖示如下
哨兵配置實驗
主:192.168.10.80vim /opt/sentinel.conf
*****************************************************************************************取消注釋
17行
protected-mode no21行
port 2637926行
daemonize yes36行
logfile "/var/log/sentinel.log"65行
dir "/var/lib/redis/6379"84行
sentinel monitor mymaster 192.168.10.80 6379 2*****************************************************************************************
從:192.168.10.150vim /opt/sentinel.conf
*****************************************************************************************取消注釋
17行
protected-mode no21行
port 2637926行
daemonize yes36行
logfile "/var/log/sentinel.log"65行
dir "/var/lib/redis/6379"84行
sentinel monitor mymaster 192.168.10.80 6379 2*****************************************************************************************
從:192.168.10.151vim /opt/sentinel.conf
*****************************************************************************************取消注釋
17行
protected-mode no21行
port 2637926行
daemonize yes36行
logfile "/var/log/sentinel.log"65行
dir "/var/lib/redis/6379"84行
sentinel monitor mymaster 192.168.10.80 6379 2*****************************************************************************************
配置完成后啟動哨兵
先啟主服務器,再啟動從服務器
啟動哨兵的命令:redis-sentinel sentinel.conf &
查看哨兵的信息:redis-cli -p 26379 info Sentinel
故障模擬
停止后主的redis服務
/etc/init.d/redis_6379 stop哨兵會在從的里面選出一個從的服務器,將其升為主服務器
新主會繼承原主的讀寫權限
當原主重啟后,
舊主將成為從,并將失去寫的權限