1. 程式人生 > >redis哨兵叢集環境搭建

redis哨兵叢集環境搭建

一、哨兵的介紹

哨兵(sentinal)是redis叢集架構中非常重要的一個元件,主要功能如下:

  1. 叢集監控,負責監控redis master和slave程序是否正常工作
  2. 訊息通知,如果某個redis例項故障,哨兵負責傳送訊息通知給管理員
  3. 故障轉移,如果master node 掛掉了,會自動轉移slave node
  4. 配置中心,如果故障轉移發生了,通知client客戶端新的master地址

哨兵的核心知識:

  1. 哨兵叢集至少三個例項

    假設兩個哨兵的叢集下,Configuration: quorum = 1 (配置需要1個哨兵認為master宕機),主備切換還需一個條件majority (大多數哨兵是執行的),如果兩個哨兵主機所在的機器宕機了,則剩下一個哨兵例項,則不滿足大多數哨兵是執行的這個條件

  2. 哨兵+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