天天看點

Redis 高可用 基于Sentinel + keepalived 實作

1  概述

redis作為緩存工具,如果僅僅單機,一旦挂掉,将對業務造成嚴重的影響,是以建議生産環境上部署redis高可用環境,本文将基于sentinel + keepalived 實作redis的高可用。

本文主要介紹實作的步驟和配置檔案,不做原理上的介紹

注意,redis的sentinel高可用有一個很關鍵的點,隻有master節點可以寫入,其他節點都隻能讀,不能寫,是以,vip必須配置在master節點上

三台redis ip 分别為

主節點: 192.168.70.32

備節點1:192.168.70.33

備節點2:192.168.70.34

vip:192.168.70.35

注意,時間一定要同步,否則叢集功能異常,如不能啟動叢集,或者叢集master不會轉移

如果sentinel日志中有如下的報錯,則可能是伺服器時間不對,導緻了節點不會轉移,檢查伺服器時間問題,如果是虛拟機,如esxi系統,可能是esxi系統時間異常導緻該esxi上伺服器時間全部異常,要重點檢查。

隻要伺服器時間正确,按照以下的配置,基本可以實作高可用,即故障轉移。

2  部署keepalived

這裡采用編譯安裝來實作。

服務包:keepalived-1.4.3.tar.gz

步驟如下

到這裡keepalived配置完成

3  redis部署

3.1 redis編譯安裝

服務包:redis-4.0.8.tar.gz

tar -xzf redis-4.0.8.tar.gz  -c /app

#添加make 

#如果以上步驟遇到 you need tcl 8.5 or newer in order to run the redis test 的報錯,安裝tcl,指令yum install tcl -y

#設定開機啟動

#添加path

#編輯配置檔案

主節點配置修改如下:

備用節點

主備其他的配置選擇預設即可

#啟動redis服務

3.2  配置sentinel

主備節點都是一樣的配置

其他配置可以保持不變

另外,該檔案,會跟進master故障轉移,自動寫入一部配置設定置,如下截圖

Redis 高可用 基于Sentinel + keepalived 實作

4  測試

所有的節點都啟動後,就可以 測試高可用

從任意機器連接配接vip

[root@redis-01 ~]# redis-cli -a redis -h 192.168.70.35

192.168.70.35:6379> get key

"abc"

192.168.70.35:6379> set key abcd

ok

"abcd"

192.168.70.35:6379> 

假設,vip 配置在 192.168.70.32伺服器上,把這台伺服器的redis程序殺掉後,vip會轉移到其他兩台的任意一樣,并且vip可以正常通路

則高可用實作

以上實作高可用,對vip的轉移,還有bind的ip配置很關鍵,會成功環境不成功的問題所在

5  附件

keepalived配置檔案

主從配置就四點不一樣

router_id不一樣

優先級不一樣

state主從不一樣

從節點配置不搶占ip ,nopreempt,可以 配置在 track_script配置段下

如下

主配置檔案如下

繼續閱讀