1. 程式人生 > 實用技巧 >哨兵模式的redis部署

哨兵模式的redis部署

redis的叢集模式有三種,主從模式、哨兵模式和cluster叢集,本例主要是說明下哨兵模式的部署

一、說明

哨兵模式是基於主從配置,先配置一主多從的環境,然後由哨兵來監控各個節點的執行情況,如果master節點宕機之後會自主在剩下存活的節點中選取一個作為master節點,宕機的節點修復之後啟動,會重新作為從節點加入到主從環境中,這過程中每個節點的配置檔案(redis.conf)中關於主從配置的引數會自行進行修改。

二、Redis 主從配置

1、修改master配置,上面服務都是以預設的引數進行配置。

  • vim /etc/redis/6379.conf 新增如下內容:
    # 修改以下內容開啟遠端訪問
    bind 0.0.0.0
    # 新增一個密碼
    requirepass "123"
    

2、修改兩臺slave伺服器的配置。

  • vim /etc/redis/6379.conf 新增如下內容:

    # 修改以下內容開啟遠端訪問
    bind 0.0.0.0
    # 新增一個密碼
    requirepass 123
    # 192.168.1.166為主節點ip,6379為埠
    slaveof 192.168.1.166 6379
    masterauth 123
    

    [NOTE]
    較新的版本中,slaveof 已經更改為 replicaof ,需要注意,另外如果配置了密碼,在master節點上也需要先配置好 masterauth 這個選項,為了在自主切換之後原master節點作為從節點之後能同步到新主節點上的資料。

3、檢查主從狀態

  • redis-cli -h 127.0.0.1 -p 6379 -a "password" info Replication

三、Redis sentinel 配置

  • 複製模版配置檔案
    cp /u01/install/redis-5.0.5/sentinel.conf /etc/redis/

  • 修改配置檔案
    vim /etc/redis/sentinel.conf 新增如下內容:

    # sentinel monitor [master-group-name] [ip] [port] [quorum]
    sentinel monitor mymaster 192.168.1.166 6379 2
    # 主伺服器 redis密碼
    sentinel auth-pass mymaster 123
    # 後臺執行
    daemonize yes
    # log檔案
    logfile "/var/log/sentinel.log"
    

    [NOTE]
    sentinel monitor mymaster 192.168.1.166 6379 2
    該行的意思是:監控的master的名字叫做mymaster (可以自定義),地址為192.168.1.166:6379,行尾最後的一個2代表在sentinel叢集中,多少個sentinel認為master死了,才能真正認為該master不可用了。

  • 啟動哨兵模式
    需要先啟動redis主服務,即 service redis_6379 start
    然手啟動哨兵模式, redis-server sentinel.conf --sentinel

四、配置哨兵模式開機自動啟動

  • 這裡主要是以配置systemctl系統服務的方式來配置開機自啟,另哨兵模式的啟動要求先啟動主服務,可以將主服務考慮一併做成systemctl系統服務。

  • 編寫redis.service檔案:vim /usr/lib/systemd/system/redis.service

    [Unit]
    Description=The redis_6379 Process Manager
    After=syslog.target network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf
    ExecReload=/bin/kill -USR2 $MAINPID
    ExecStop=/bin/kill -SIGINT $MAINPID
    
    [Install]
    WantedBy=multi-user.target
    

    [NOTE]
    若配置了密碼,ExecStop的部分可以改成 /usr/local/bin/redis-cli -p 6379 -a "password" shutdown

  • 設定redis主服務開機啟動 systemctl enable redis

  • 編寫redis-sentinel.service檔案:vim /usr/lib/systemd/system/redis-sentinel.service

    [Unit]
    Description=The redis-sentinel Process Manager
    After=syslog.target network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/local/bin/redis-server /etc/redis/sentinel.conf --sentinel
    ExecReload=/bin/kill -USR2 $MAINPID
    ExecStop=/bin/kill -SIGINT $MAINPID
    
    [Install]
    WantedBy=multi-user.target
    
  • 設定哨兵模式開機啟動 systemctl enable redis-sentinel