1. 程式人生 > >Redis主從同步+自動切換

Redis主從同步+自動切換

一構建:

1.兩臺centos7伺服器:

      192.168.1.100192.168.1.115

2. 安裝必須的軟體包:

yum install gcc gcc-c++ kernel-devel automake autoconf libtool make wget tcl vim ruby rubygems unzip git -y

3. 下載redis原始碼包並安裝:

tar -zxvf redis-3.2.3.tar.gz

cd redis-3.2.3

make && make install

4.將redis目錄轉移至/usr/loacl/redis下:

(1).建立redis目錄:

cd /usr/local

mkdir -p redis/bin

mkdir -p redis/etc

(2) .將原始碼包下面的reids.conf 複製到新建的etc下,將原始碼包下面的src目錄中的redis-server redis-cli  redis-check-aof redis-benchmark mkreleasehdr.sh 檔案複製到新建的bin目錄下:

  cd /usr/local/redis

  cp /root/redis-3.2.3/redis.conf etc/

  cd /root/redis-3.2.3/src/

cp redis-server redis-cli redis-check-aof redis-benchmark mkreleasehdr.sh /usr/local/redis/bin/

5.配置redis主從複製:

(1) .在主機192.168.1.100(主)的配置:





(2).在主機192.168.1.115(從)上的配置:

至此,主從配置完成,進入/usr/local/redis啟動兩臺例項:

       bin/redis-server etc/redis.conf  

此時的redis啟動直接佔據控制檯,我們可以將其修改為後臺啟動,ctrl+c關閉redis,編輯etc目錄下的redis.cnf檔案將daemonize no改為daemonize yes,重新啟動即可

使用命令檢視主從複製狀態:




至此,主從配置完成,進入/usr/local/redis啟動兩臺例項:

       bin/redis-server etc/redis.conf  

此時的redis啟動直接佔據控制檯,我們可以將其修改為後臺啟動,ctrl+c關閉redis,編輯etc目錄下的redis.cnf檔案將daemonize no改為daemonize yes,重新啟動即可

使用命令檢視主從複製狀態:

顯示

指定在執行故障轉移時,最多可以有多少個Slave同時對新的Master進行同步。這個數字設定為1,雖然完成故障轉移所需的時間會變長,但是可以保證每次只有1個Slave處於不能處理命令請求的狀態。

狀態為:192.168.1.100為master,192.168.1.115為slave

6. 使用哨兵(Sentinel)進行主從間的故障自動切換,我們在192.168.1.100上搭建sentinel(哨兵)

           cd /root/redis-3.2.3/

           cp sentinel.conf /usr/local/redis/etc/

           cd /usr/local/redis/etc/

           vim sentinel.conf

(1).路徑:


(2).指定sentinel去監視一個名為mymaster的Master,Master的IP地址為192.168.1.100

(3).如果redis有登陸密碼的話必須配置這項引數:


(4)連線192.168.1.100的redis的密碼

(5).指定Sentinel判定Master斷線的時間。(單位為毫秒,判定為主觀下線SDOWN)

(6).如果在該時間(ms)內未能完成failover(即故障時master/slave自動切換

)操作,則認為該failover失敗。

指定在執行故障轉移時,最多可以有多少個Slave同時對新的Master進行同步。這個數字設定為1,雖然完成故障轉移所需的時間會變長,但是可以保證每次只有1個Slave處於不能處理命令請求的狀態。

sentinel parallel-syncs my mymaster 1

我們可以看到主為192.168.1.100,從為192.168.1.115,接下來驗證故障切換功能:


當我們關閉主時,master自動變為192.168.1.115,我們重新啟動192.168.1.115時,發現192.168.1.115已經變為slave伺服器,至此哨兵模式的故障切換完成(可在主從上同時部署哨兵)。

附加:

登陸redis的命令:

bin/redis-cli -h 192.168.1.100 -p 6379 -a [email protected]

bin/redis-cli -h 192.168.1.115 -p 6380 -a [email protected]

bin/redis-cli -h 192.168.1.100 -p 6379 -a [email protected] info replication

bin/redis-cli -h 192.168.1.115 -p 6380 -a [email protected] info replication