redis哨兵叢集環境搭建
阿新 • • 發佈:2019-01-06
一、哨兵的介紹
哨兵(sentinal)是redis叢集架構中非常重要的一個元件,主要功能如下:
- 叢集監控,負責監控redis master和slave程序是否正常工作
- 訊息通知,如果某個redis例項故障,哨兵負責傳送訊息通知給管理員
- 故障轉移,如果master node 掛掉了,會自動轉移slave node
- 配置中心,如果故障轉移發生了,通知client客戶端新的master地址
哨兵的核心知識:
哨兵叢集至少三個例項
假設兩個哨兵的叢集下,Configuration: quorum = 1 (配置需要1個哨兵認為master宕機),主備切換還需一個條件majority (大多數哨兵是執行的),如果兩個哨兵主機所在的機器宕機了,則剩下一個哨兵例項,則不滿足大多數哨兵是執行的這個條件
哨兵+redis主從架構,是保證不了資料零丟失, 只能保證redis叢集的高可用
二、哨兵叢集環境搭建
# mkdir /etc/sentinel # mkdir -p /var/sentinel/5000 # mkdir -p /var/log/sentinal/5000 # cp /usr/local/redis-3.2.8/sentinel.conf /etc/sentinel # mv /etc/sentinel/sentinel.conf /etc/sentinel/5000.conf # vi /etc/sentinel/5000.conf ## 修改 port 5000 bind 192.168.27.11 ## 當前機器的ip地址 dir /var/sentinel/5000 sentinel monitor mymaster 192.168.27.11 6379 2 sentinel down-after-milliseconds mymaster 30000 sentinel failover-timeout mymaster 60000 sentinel parallel-syncs mymaster 1 logfile /var/log/sentinel/5000/sentinel.log ## 啟動哨兵程序 # redis-sentinel /etc/sentinel/5000.conf # redis-server /etc/sentinel/5000.conf --sentinel ## 檢查哨兵狀態 # redis-cli -h 192.168.27.11 -p 5000 > sentinel master mymaster > sentinel slaves mymaster > sentinel sentinels mymaster > sentinel get-master-addr-by-name mymaster
三、高可用容災演練測試
強制停掉主節點的redis
# ps -ef|grep redis
# kill -9 程序號
# rm -rf /var/run/redis_6379.pid
## 檢視哨兵監控日誌
# cat /var/log/sentinel/5000/sentinel.log
## 檢視當前的master節點
# redis-cli -h 192.168.27.11 -p 5000
> sentinel get-master-addr-by-name mymaster