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、測試主從效果
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
當舊的master啟動,講轉換為從伺服器
原來的master配置檔案redis.conf 自動添加slaveof 192.168.1.242 6379,變為從伺服器
原來的master配置檔案sentinel.conf 自動修改為sentinel monitor mymaster 192.168.1.242 6379 1
七. 注意事項