Redis主從同步+自動切換
一構建:
1.兩臺centos7伺服器:
192.168.1.100和192.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為slave6. 使用哨兵(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