Redis 主從配置密碼以及哨兵

Redis 主從介紹

主Redis寫入數據時,從Redis會經過Redis Sync機制,同步數據,確保數據一致。而且Redis有哨兵(Sentinel)機制,Redis主掛掉會自動幫咱們提高從爲主,不過哨兵我發現只適用一主多從,不太適合級聯模式。redis


主從同步類型以及哨兵介紹

  級聯複製vim

    爲避免主Redis同時讀寫壓力過大,三個包括以上節點的Redis,能夠配置爲級聯複製,以下圖所示,節點4能夠同步節點3數據,也能夠同步節點2數據。安全

  

  一主多從服務器

    須要兩個以及以上節點。由於Redis是異步同步數據,數據寫入主節點並返回客戶端,並不表明從節點也已經寫入數據,而從節點同步的結果也並不會返回給主節點,而是會直接丟棄。因此(上圖)級聯複製從節點3同步從節點2數據,就又多了一層丟數據的風險,具體採用哪一種方式看本身狀況。架構

       

  哨兵機制異步

    有了主從,那咱們須要對其進行監控,Sentinel會不斷地檢查你的主服務器和從服務器是否運做正常。某個節點故障後,Sentinel 會開始一次自動故障遷移操做, 它會將失效主服務器的其中一個從服務器升級爲新的主服務器, 並讓失效主服務器的其餘從服務器改成複製新的主服務器; 當客戶端試圖鏈接失效的主服務器時, 集羣也會向客戶端返回新主服務器的地址, 使得集羣能夠使用新主服務器代替失效服務器。Redis Sentinel 是一個分佈式系統, 你能夠在一個架構中運行多個 Sentinel 進程(Progress), 這些進程使用流言協議(Gossip Protocols)來接收關於主服務器是否下線的信息, 並使用投票協議(Agreement Protocols)來決定是否執行自動故障遷移, 以及選擇哪一個從服務器做爲新的主服務器。雖然 Redis Sentinel 釋出爲一個單獨的可執行文件 redis-sentinel , 但實際上它只是一個運行在特殊模式下的 Redis 服務器。分佈式


Redis 主從配置

系統環境 Debian,一主一從配置。ui

  主節點IP:192.168.198.131spa

  從節點IP:192.168.198.132日誌

  端口使用默認6379

節點1 節點2 所有執行如下命令,不一樣的地方有標註。

cd /data/   #我習慣把Redis 放在data目錄下

wget http://download.redis.io/releases/redis-3.2.9.tar.gz

tar -xf redis-3.2.9.tar.gz

mv redis-3.2.9 redis

cd redis/

make && make install

cp src/redis-server /usr/bin/redis-server

cp src/redis-cli /usr/bin/redis-cli

mv  redis.conf  redis.conf~

cat redis.conf~ | grep -Ev "^$|^#" > redis.conf

 

vim redis.conf     #修改如下內容,不是必須的

bind  192.168.198.131   #兩臺主機分別改成本身的IP

logfile  "/data/redis/logs/redis.log"

daemonize yes   #啓用守護模式

slave-read-only yes   #slave 默認就是隻讀的,這裏不用管。

protected-mode no   #protected-mode 是3.2 以後加入的新特性,爲了禁止公網訪問redis cache,增強redis安全的。根據本身須要配置,它啓用的條件,有兩個,沒有bind IP 以及沒有設置訪問密碼。

 

requirepass  "admin.123"    #設置redis登陸密碼

masterauth  "admin.123"   #主從認證密碼,不然主從不能同步

 

 

啓用主從模式只有Redis Slave 添加一行,啓動服務主從就配置好了。

slaveof 192.168.198.131 6379

檢查主從狀態

~]# redis-cli  -c -h 192.168.198.131 -p 6379

192.168.198.131:6379> info

.......

# Replication   #中間省略了內容,本身能夠看看,主要是找到這一段,看主從狀態。
role:master
connected_slaves:1
slave0:ip=192.168.198.132,port=6379,state=online,offset=5700675,lag=0
master_repl_offset:5700675
repl_backlog_active:1
repl_backlog_size:10000000
repl_backlog_first_byte_offset:1
repl_backlog_histlen:5707674

.......


 

Redis Sentinel  配置

 vim sentinel.conf   #在redis的跟目錄下

port 26379
daemonize yes
protected-mode no   #保護模式若是開啓只接受迴環地址的ipv4和ipv6地址連接,拒絕外部連接,並且正常應該配置多個哨兵,避免一個哨兵出現獨裁狀況,若是配置多個哨兵那若是開啓也會拒絕其餘sentinel的鏈接。致使哨兵配置沒法生效。
logfile "/data/redis/logs/sentinel.log"      #指明日誌文件
dir "/data/redis/sentinel"
sentinel monitor mymaster 192.168.198.131 6379 1   #哨兵監控的master。
sentinel down-after-milliseconds mymaster 5000     #master或者slave多少時間(默認30秒)不能使用標記爲down狀態。
sentinel failover-timeout mymaster 9000    #若哨兵在配置值內未能完成故障轉移操做,則任務本次故障轉移失敗。

sentinel auth-pass mymaster redispass    #若是redis配置了密碼,那這裏必須配置認證,不然不能自動切換

 /data/redis/src/redis-sentinel /data/redis/sentinel.conf    #啓動服務

若是有下面報錯  啓動命令後面要加上  --sentinel

*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 6
>>> 'sentinel monitor mymaster 192.168.198.131 6379 1'
sentinel directive while not in sentinel mode

多個哨兵配置文件同樣,正常狀況下要配置奇數哨兵,避免切換時候票數相同,出現競爭,影響線上業務。

相關文章
相關標籤/搜索