天天看點

redis主從複制故障轉移

Redis主從複制與故障切換

目錄

目錄1

一.概述1

二. 實驗目的2

三.試驗環境2

四. 說明2

五. 拓撲2

六. 實施步驟2

6.1、分别安裝redis2.8.32

6.2、配置主從同步3

6.3、配置主從故障切換4

七. 注意事項4

一.概述

Redis是一個開源的使用ANSI C語言編寫、支援網絡、可基于記憶體亦可持久化的日志型、Key-Value資料庫,并提供多種語言的API。

Redis支援主從同步。資料可以從主伺服器向任意數量的從伺服器上同步,同步使用的是釋出/訂閱機制。

Redis 2.8版開始正式提供名為Sentinel的主從切換方案,Sentinel用于管理多個Redis伺服器執行個體,主要負責三個方面的任務:

    1. 監控(Monitoring): Sentinel 會不斷地檢查你的主伺服器和從伺服器是否運作正常。

    2. 提醒(Notification): 當被監控的某個 Redis 伺服器出現問題時, Sentinel 可以通過 API 向管理者或者其他應用程式發送通知。

    3. 自動故障遷移(Automatic failover): 當一個主伺服器不能正常工作時, Sentinel 會開始一次自動故障遷移操作, 它會将失效主伺服器的其中一個從伺服器更新為新的主伺服器, 并讓失效主伺服器的其他從伺服器改為複制新的主伺服器; 當用戶端試圖連接配接失效的主伺服器時, 叢集也會向用戶端傳回新主伺服器的位址, 使得叢集可以使用新主伺服器代替失效伺服器。

二. 實驗目的

實驗用于了解redis主從複制,故障自動切換功能。

三.試驗環境

裝置名稱 作業系統 安裝軟體
虛拟機(3台) Centos6.8 X64 Redis2.8.3

四. 說明

本實驗示範redis主從資料同步,主服務當機,從伺服器被選擇為新的主伺服器,并自動配置其他從伺服器的主伺服器為本機。

五. 拓撲

192.168.1.240  主redis  sentinel

192.168.1.241  從redis

192.168.1.242  從redis

六. 實施步驟

6.1、分别安裝redis2.8.3

 三台機器分别安裝

1、安裝

$ yum install gcc -y

$ cd /home/jryknet

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

$ tar xzf redis-2.8.3.tar.gz

$ cd redis-2.8.3

$ make

$ make install

2、編譯完成後,在Src目錄下,有四個可執行檔案redis-server、redis-benchmark、redis-cli和redis.conf。然後拷貝到一個目錄下。

mkdir /usr/redis

cp redis-server  /usr/redis

cp redis-benchmark /usr/redis

cp redis-cli  /usr/redis

cp /home/redis-2.8.3/redis.conf  /usr/redis

cd /usr/redis

3、啟動Redis服務。

$ redis-server   redis.conf

4、然後用用戶端測試一下是否啟動成功。

$ redis-cli

redis> set age 13

OK

redis> get age

"13"

5、配置為背景啟動

vi /usr/redis/redis.conf

daemonize yes

#日志目錄

logfile "/tmp/redis.log”

6、配置服務腳本啟動(略)

啟動方式

/etc/init.d/redis

Usage: /etc/init.d/redis {start|stop|restart|force-reload}

6.2、配置主從同步

配置檔案使用/usr/redis目錄下的redis.conf

1、配置從伺服器

主伺服器192.168.1.240不需配置

從伺服器 192.168.1.241,192.168.1.242修改配置檔案,添加

slaveof 192.168.1.240 6379

2、測試主從效果

redis主從複制故障轉移
redis主從複制故障轉移

6.3、配置主從故障切換

1、主伺服器192.168.1.240配置

cp /home/jryknet/redis-2.8.3/sentinel.conf /usr/redis/ #配置檔案

cp /home/jryknet/redis-2.8.3/src/redis-sentinel /usr/redis/  #程式腳本檔案

2、配置/usr/redis/sentinel.conf ,啟動sentinel 執行指令redis-sentinel

port 26379

daemonize no

logfile "/var/redis/log/sentinel.log"

sentinel monitor mymaster 192.168.1.240 6379 1

sentinel down-after-milliseconds mymaster 60000

sentinel failover-timeout mymaster 180000

sentinel parallel-syncs mymaster 1

3,、檢視狀态

redis-cli info |grep role

role:master

role:slave

4、測試

停止主redis,切換為192.168.1.242為新的master

redis主從複制故障轉移

當舊的master啟動,講轉換為從伺服器

redis主從複制故障轉移

原來的master配置檔案redis.conf 自動添加slaveof 192.168.1.242 6379,變為從伺服器

原來的master配置檔案sentinel.conf 自動修改為sentinel monitor mymaster 192.168.1.242 6379 1

七. 注意事項

繼續閱讀