1. 程式人生 > >通過Keepalived實現Redis Failover自動故障切換功能(整理中) .

通過Keepalived實現Redis Failover自動故障切換功能(整理中) .

設計思路:
redis 主和 redis從  正常同步;

rediskeepalived 啟動,執行redis_master.sh指令碼,vip在自己身上;

redis keepalived 啟動,執行redis_slave.sh指令碼;

redis主服務關閉,則redis主執行redis_fault.sh指令碼, vip落在redis 從上,redis從執行redis_master.sh指令碼,變成主;

redis主服務開啟,則redis主執行redis_slave.sh指令碼變成從,vip還在redis 從上,還是主;

redis從服務關閉,則redis從執行redis_fault.sh

指令碼, vip落在redis主上,redis主執行redis_master.sh指令碼,變成主;

redis從服務開啟,則redis從執行redis_slave.sh指令碼變成從, vip還在redis主上,redis主繼續做主,此時為redis初試主從狀態;

環境:

10.7.13.43 redis

10.7.13.44 redis-slave

10.7.13.45 vip

:安裝keepalived

(redisredis-slave兩臺伺服器都安裝)

1. 安裝作業系統的 ipvsadm

   yum -y install ipvsadm

   否則出現如下錯誤:

    如果這個不安裝 make 會有如下錯誤
   make
make -C lib || exit 1;
make[1]: Entering directory `/httx/download/keepalived-1.2.10/lib'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/httx/download/keepalived-1.2.10/lib'
make -C keepalived
make[1]: Entering directory `/httx/download/keepalived-1.2.10/keepalived'
make[2]: Entering directory `/httx/download/keepalived-1.2.10/keepalived/core'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/httx/download/keepalived-1.2.10/keepalived/core'
make[2]: Entering directory `/httx/download/keepalived-1.2.10/keepalived/check'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/httx/download/keepalived-1.2.10/keepalived/check'
make[2]: Entering directory `/httx/download/keepalived-1.2.10/keepalived/vrrp'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/httx/download/keepalived-1.2.10/keepalived/vrrp'
make[2]: Entering directory `/httx/download/keepalived-1.2.10/keepalived/libipvs-2.6'
gcc -g -O2  -I/usr/src/linux/include -I/usr/src/linux/include -DLIBIPVS_DONTUSE_NL -Wall -Wunused -c -o libipvs.o libipvs.c
libipvs.c: In function ‘nlerr2syserr’:
libipvs.c:61: error: ‘NLE_BAD_SOCK’ undeclared (first use in this function)
libipvs.c:61: error: (Each undeclared identifier is reported only once
libipvs.c:61: error: for each function it appears in.)
libipvs.c:62: error: ‘NLE_EXIST’ undeclared (first use in this function)
libipvs.c:63: error: ‘NLE_NOADDR’ undeclared (first use in this function)
libipvs.c:64: error: ‘NLE_OBJ_NOTFOUND’ undeclared (first use in this function)
libipvs.c:65: error: ‘NLE_INTR’ undeclared (first use in this function)
libipvs.c:66: error: ‘NLE_AGAIN’ undeclared (first use in this function)
libipvs.c:67: error: ‘NLE_INVAL’ undeclared (first use in this function)
libipvs.c:68: error: ‘NLE_NOACCESS’ undeclared (first use in this function)
libipvs.c:69: error: ‘NLE_NOMEM’ undeclared (first use in this function)
libipvs.c:70: error: ‘NLE_AF_NOSUPPORT’ undeclared (first use in this function)
libipvs.c:71: error: ‘NLE_PROTO_MISMATCH’ undeclared (first use in this function)
libipvs.c:72: error: ‘NLE_OPNOTSUPP’ undeclared (first use in this function)
libipvs.c:73: error: ‘NLE_PERM’ undeclared (first use in this function)
libipvs.c:74: error: ‘NLE_BUSY’ undeclared (first use in this function)
libipvs.c:75: error: ‘NLE_RANGE’ undeclared (first use in this function)
libipvs.c:76: error: ‘NLE_NODEV’ undeclared (first use in this function)
make[2]: *** [libipvs.o] Error 1
make[2]: Leaving directory `/httx/download/keepalived-1.2.10/keepalived/libipvs-2.6'
make[1]: *** [all] Error 1
make[1]: Leaving directory `/httx/download/keepalived-1.2.10/keepalived'
make: *** [all] Error 2

1.wget http://www.keepalived.org/software/keepalived-1.2.10.tar.gz
2.安裝作業系統元件 openssl-devel
  yum -y install openssl-devel
  否則出現如下錯誤:
  configure: error:
  !!! OpenSSL is not properly installed on your system. !!!
  !!! Can not include OpenSSL headers files.
2.安裝 tar zxvf keepalived-1.2.10.tar.gz 
  cd keepalived-1.2.10
3. ./configure --prefix=/httx/run/keepalived   
4. yum -y install ipvsadm
   如果這個不安裝 make 會有如下錯誤
   make
make -C lib || exit 1;
make[1]: Entering directory `/httx/download/keepalived-1.2.10/lib'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/httx/download/keepalived-1.2.10/lib'
make -C keepalived
make[1]: Entering directory `/httx/download/keepalived-1.2.10/keepalived'
make[2]: Entering directory `/httx/download/keepalived-1.2.10/keepalived/core'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/httx/download/keepalived-1.2.10/keepalived/core'
make[2]: Entering directory `/httx/download/keepalived-1.2.10/keepalived/check'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/httx/download/keepalived-1.2.10/keepalived/check'
make[2]: Entering directory `/httx/download/keepalived-1.2.10/keepalived/vrrp'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/httx/download/keepalived-1.2.10/keepalived/vrrp'
make[2]: Entering directory `/httx/download/keepalived-1.2.10/keepalived/libipvs-2.6'
gcc -g -O2  -I/usr/src/linux/include -I/usr/src/linux/include -DLIBIPVS_DONTUSE_NL -Wall -Wunused -c -o libipvs.o libipvs.c
libipvs.c: In function ‘nlerr2syserr’:
libipvs.c:61: error: ‘NLE_BAD_SOCK’ undeclared (first use in this function)
libipvs.c:61: error: (Each undeclared identifier is reported only once
libipvs.c:61: error: for each function it appears in.)
libipvs.c:62: error: ‘NLE_EXIST’ undeclared (first use in this function)
libipvs.c:63: error: ‘NLE_NOADDR’ undeclared (first use in this function)
libipvs.c:64: error: ‘NLE_OBJ_NOTFOUND’ undeclared (first use in this function)
libipvs.c:65: error: ‘NLE_INTR’ undeclared (first use in this function)
libipvs.c:66: error: ‘NLE_AGAIN’ undeclared (first use in this function)
libipvs.c:67: error: ‘NLE_INVAL’ undeclared (first use in this function)
libipvs.c:68: error: ‘NLE_NOACCESS’ undeclared (first use in this function)
libipvs.c:69: error: ‘NLE_NOMEM’ undeclared (first use in this function)
libipvs.c:70: error: ‘NLE_AF_NOSUPPORT’ undeclared (first use in this function)
libipvs.c:71: error: ‘NLE_PROTO_MISMATCH’ undeclared (first use in this function)
libipvs.c:72: error: ‘NLE_OPNOTSUPP’ undeclared (first use in this function)
libipvs.c:73: error: ‘NLE_PERM’ undeclared (first use in this function)
libipvs.c:74: error: ‘NLE_BUSY’ undeclared (first use in this function)
libipvs.c:75: error: ‘NLE_RANGE’ undeclared (first use in this function)
libipvs.c:76: error: ‘NLE_NODEV’ undeclared (first use in this function)
make[2]: *** [libipvs.o] Error 1
make[2]: Leaving directory `/httx/download/keepalived-1.2.10/keepalived/libipvs-2.6'
make[1]: *** [all] Error 1
make[1]: Leaving directory `/httx/download/keepalived-1.2.10/keepalived'
make: *** [all] Error 2
 
5. make && make install 
6. 日誌檔案 /httx/logs/keepalived/keepalived-redis-state.log
7. chmod +x *.sh
8. 複製配置檔案
keepalived/sbin/keepalived -d -D -S 0   --啟動命令

http://www.linuxidc.com/Linux/2014-02/96081.htm 引數意義待確認,暫時用安裝檔案
cp /httx/run/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/   -- 並修改該檔案的引數  /var/lock/subsys/$prog 為 /httx/run/keepalived/lock/$prog
chmod 755 /etc/init.d/keepalived
cp /httx/run/keepalived/sbin/keepalived /usr/sbin/ 
cp /httx/run/keepalived/etc/sysconfig/keepalived /etc/sysconfig/   --配置服務

#執行 由於keepalived配置檔案不是在啟動時一次性載入並讀取完成的,所以必須是完整路徑,可以根據log判斷是否載入了正確的配置檔案 

keepalived f /usr/local/etc/keepalived/keepalived.conf 

執行過程可以檢視log: 

tail -f /var/log/message  

:安裝redis

(redisredis-slave兩臺伺服器都安裝)

tar   -zxvf redis-2.4.17.tar.gz

cd redis-2.4.17

./configure

make

make install

redis-slve只需注意一點

[[email protected] bin]# pwd

/usr/local/bin

[[email protected] bin]# vim redis.conf

116  slaveof 192.168.1.235 6379

三:通過Keepalived實現Redis Failover自動故障切換

修改MasterSlave/etc/hosts檔案

[[email protected] rc.d]# cat /etc/hosts

192.168.1.235   redis

192.168.1.236   redis-slave

Master上是

[[email protected] rc.d]# cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=redis

Slave上是

[[email protected] linux]# cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=redis-slave

修改完主機名重啟機器生效

預設安裝完成keepalived之後是沒有配置檔案的,因此我們需要手動建立:

首先,在Master上建立如下配置檔案:

[[email protected]  linux]# vim /etc/keepalived/keepalived.conf

global_defs {


   notification_email {


     [email protected]


   }


   notification_email_from [email protected]


   router_id jt-db-redis-m1


}




vrrp_script chk_redis {


    script "/httx/run/keepalived/etc/keepalived/scripts/redis_check.sh"


    interval 1


   # weight 4


}




vrrp_instance mes_Redis {


    state MASTER


  #  interface eth0
  interface br0
    garp_master_delay 10


    smtp_alert


    virtual_router_id 3


    priority 100


     nopreempt


    advert_int 1


    authentication {


        auth_type PASS


        auth_pass 1111


    }


    virtual_ipaddress {


        10.7.13.46


    }


    track_script {


        chk_redis


    }


    notify_master /httx/run/keepalived/etc/keepalived/scripts/redis_master.sh
    notify_backup /httx/run/keepalived/etc/keepalived/scripts/redis_slave.sh
    notify_fault /httx/run/keepalived/etc/keepalived/scripts/redis_fault.sh
    notify_stop  /httx/run/keepalived/etc/keepalived/scripts/redis_stop.sh


}

然後,在Slave上建立如下配置檔案:

[[email protected] linux]# vim /etc/keepalived/keepalived.conf

global_defs {


   notification_email {


     [email protected]


   }


   notification_email_from [email protected]


   router_id jt-db-redis-s1


}




vrrp_script chk_redis {
    script "/httx/run/keepalived/etc/keepalived/scripts/redis_check.sh"
    interval 1
    #  weight 4
}




vrrp_instance mes_Redis {


    state BACKUP


  #  interface eth0
    interface br0


    garp_master_delay 10


    smtp_alert


    virtual_router_id 3


    priority 99


    nopreempt


    advert_int 1


    authentication {


        auth_type PASS


        auth_pass 1111


    }


    virtual_ipaddress {


        10.7.13.46


    }


    track_script {


        chk_redis


    }


    notify_master /httx/run/keepalived/etc/keepalived/scripts/redis_master.sh
    notify_backup /httx/run/keepalived/etc/keepalived/scripts/redis_slave.sh
    notify_fault  /httx/run/keepalived/etc/keepalived/scripts/redis_fault.sh
    notify_stop   /httx/run/keepalived/etc/keepalived/scripts/redis_stop.sh


}

MasterSlave上建立監控Redis的指令碼

mkdir /etc/keepalived/scripts

vim /etc/keepalived/scripts/redis_check.sh

#!/bin/bash

ALIVE=`/usr/local/bin/redis-cli PING`

if [ "$ALIVE" == "PONG" ]; then

  echo $ALIVE

  exit 0

else

  echo $ALIVE

  exit 1

fi

編寫以下負責運作的關鍵指令碼:

 notify_master /etc/keepalived/scripts/redis_master.sh

 notify_backup /etc/keepalived/scripts/redis_slave.sh

 notify_fault /etc/keepalived/scripts/redis_fault.sh

 notify_stop /etc/keepalived/scripts/redis_stop.sh 

因為Keepalived在轉換狀態時會依照狀態來呼叫:

 當進入Master狀態時會呼叫notify_master

 當進入Backup狀態時會呼叫notify_backup

 當發現異常情況時進入Fault狀態呼叫notify_fault

 當Keepalived程式終止時則呼叫notify_stop

首先,在Redis Master上建立notity_masternotify_backup指令碼:

vim /etc/keepalived/scripts/redis_master.sh

#!/bin/bash

REDISCLI="/usr/local/bin/redis-cli"

LOGFILE="/var/log/keepalived-redis-state.log"

echo "[master]" >> $LOGFILE

date >> $LOGFILE

echo "Being master...." >> $LOGFILE 2>&1

echo "Run SLAVEOF cmd ..." >> $LOGFILE

$REDISCLI SLAVEOF 192.168.1.236 6379 >> $LOGFILE  2>&1

sleep 10 #延遲10秒以後待資料同步完成後再取消同步狀態

echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE

$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1

vim /etc/keepalived/scripts/redis_slave.sh

#!/bin/bash

REDISCLI="/usr/local/bin/redis-cli"

LOGFILE="/var/log/keepalived-redis-state.log"

echo "[backup]" >> $LOGFILE

date >> $LOGFILE

echo "Being slave...." >> $LOGFILE 2>&1

sleep 15 #延遲15秒待資料被對方同步完成之後再切換主從角色

echo "Run SLAVEOF cmd ..." >> $LOGFILE

$REDISCLI SLAVEOF 192.168.1.236 6379 >> $LOGFILE  2>&1

接著,在Redis Slave上建立notity_masternotify_backup指令碼:

vim /etc/keepalived/scripts/redis_master.sh

#!/bin/bash

REDISCLI="/usr/local/bin/redis-cli"

LOGFILE="/var/log/keepalived-redis-state.log"

echo "[master]" >> $LOGFILE

date >> $LOGFILE

echo "Being master...." >> $LOGFILE 2>&1

echo "Run SLAVEOF cmd ..." >> $LOGFILE

$REDISCLI SLAVEOF 192.168.1.235 6379 >> $LOGFILE  2>&1

sleep 10 #延遲10秒以後待資料同步完成後再取消同步狀態

echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE

$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1

vim /etc/keepalived/scripts/redis_slave.sh

#!/bin/bash

REDISCLI="/usr/local/bin/redis-cli"

LOGFILE="/var/log/keepalived-redis-state.log"

echo "[backup]" >> $LOGFILE

date >> $LOGFILE

echo "Being slave...." >> $LOGFILE 2>&1

sleep 15 #延遲15秒待資料被對方同步完成之後再切換主從角色

echo "Run SLAVEOF cmd ..." >> $LOGFILE

$REDISCLI SLAVEOF 192.168.1.235 6379 >> $LOGFILE  2>&1

然後在MasterSlave建立如下相同的指令碼:

vim /etc/keepalived/scripts/redis_fault.sh

#!/bin/bash

LOGFILE=/var/log/keepalived-redis-state.log

echo "[fault]" >> $LOGFILE

date >> $LOGFILE

vim /etc/keepalived/scripts/redis_stop.sh

#!/bin/bash

LOGFILE=/var/log/keepalived-redis-state.log

echo "[stop]" >> $LOGFILE

date >> $LOGFILE

MasterSlave給指令碼都加上可執行許可權:

chmod +x /etc/keepalived/scripts/*.sh

指令碼建立完成以後,我們開始按照如下流程進行測試:

 1.啟動Master上的Redis

[[email protected] bin]# pwd

/usr/local/bin

[[email protected] bin]# ./redis-server redis.conf 

2.啟動Slave上的Redis

[[email protected] bin]# pwd

/usr/local/bin

[[email protected] bin]# ./redis-server redis.conf 

3.啟動Master上的Keepalived

/etc/init.d/keepalived start

4.啟動Slave上的Keepalived

/etc/init.d/keepalived start

5.嘗試通過VIP連線Redis:

[[email protected] bin]#pwd

/usr/local/bin

[[email protected] bin]# ./redis-cli -h 192.168.1.237 info

role:master

slave0:192.168.1.236,6379,online

連線成功,Slave也連線上來了

6.嘗試插入一些資料:

[[email protected] bin]# ./redis-cli -h 192.168.1.237 SET Hello Redis 

VIP讀取資料

[[email protected] bin]# ./redis-cli -h 192.168.1.237 GET Hello

"Redis"

Master讀取資料

[[email protected] bin]# ./redis-cli -h 192.168.1.235  GET Hello

"Redis"

Slave讀取資料

[[email protected] bin]# ./redis-cli -h 192.168.1.235  GET Hello

"Redis"

下面,模擬故障產生:

 將Master上的Redis程序殺死:

[[email protected] bin]# ./redis-cli shutdown

檢視Master上的Keepalived日誌

[[email protected] scripts]# tail /var/log/keepalived-redis-state.log

 [fault]

 Thu Sep 27 08:29:01 CST 2012

同時Slave上的日誌顯示:

[[email protected] scripts]# tail /var/log/keepalived-redis-state.log

[master]

Thu Nov 15 12:06:04 CST 2012

Being master....

Run SLAVEOF cmd ...

OK

Run SLAVEOF NO ONE cmd ...

OK

然後我們可以發現,Slave已經接管服務,並且擔任Master的角色了。

./redis-cli -h 192.168.1.237 info

./redis-cli -h 192.168.1.236 info

 role:master

然後我們恢復MasterRedis程序

主變成slave

然後把236redis停掉

235恢復主的角色,在把236redis開啟

恢復235是主,236是備

自動切換成功!

相關推薦

通過Keepalived實現Redis Failover自動故障切換功能(整理) .

設計思路: redis 主和 redis從  正常同步; redis主keepalived 啟動,執行redis_master.sh指令碼,vip在自己身上; redis 從keepalived 啟動,執行redis_slave.sh指令碼; redis主服務關閉,則redis主執行redis_fau

使用keepalived實現redis主從切換

安裝keepalived和redis主從的過程不再贅述,可參見本人其他部署文章。 主機名 IP地址 所安裝軟體 jia3.ty.com 192.168.10.103 keepalived(backup-高優先順序),redis(master) jia4.ty.com 192

keepalived 實現mysql主從自動切換

3.1安裝KEEPALIVED軟體: wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz tar zxvf keepalived-1.2.7.tar.gz cd keepalived-1.2.7

spring通過profile實現開發和測試環境切換

我們 其中 ror web cms -m acc 系統環境 oot 以開發測試為例,介紹tomcat部署應用和maven部署應用下利用profile實現測試環境和開發環境切換一、tomcat部署應用1、數據源配置dev.properties 路徑:/src/main/res

使用rsync服務通過inotify實現觸發式自動同步數據

rsync 實驗拓撲:HK36(Server 192.168.2.102)====HK46(Client 192.168.2.190) 實驗要求:對HK46 /data/目錄備份到HK36的/backup/下 (1) rsync服務依賴於xinetd超級服務管理,首先安裝xinetd服務[roo

Mycat 之 通過Keepalived 實現高可用

alived com -o ali vpd type gin blog process 一、系統拓撲圖 一、操作方法 參考本博客的Nginx + Keepalived 實現高可用Mycat 之 通過Keepalived 實現高可用

通過Expire實現Redis鎖機制

在我們的業務系統中,可能因為某種原因,使用者會不斷的點選表單提交按鈕,為了較少對系統的 無意義訪問、暴力提交 以及使用者體驗,我們利用redis的過期時間簡單的實現了一種Redis鎖 當用戶提交表單的時候,我們通過對錶單資料以及使用者唯一標識例如userNo進行加密,當做我們快取的唯

【轉】Keepalived實現redis的高可用

Keepalived實現redis的主從切換高可用原理詳解 具體安裝和配置keepalived和redis的教程,網上很多。 推薦幾個: keepalived預設只能做到對網路故障和keepalived本身的監控,即當出現網路故障或者keepali

Spring Boot通過Profiles實現多環境下配置切換

1、在yml中使用pom定義的maven屬性變數 格式:@[email protected] spring: application: name: dream-web-gateway profiles: active: '@[

通過WLST實現weblogic的自動部署

前提條件: 1.狀態處於釋放配置; 2.執行的本機安裝了weblogic,並且將weblogic.jar新增到了CLASSPATH環境變數中; 自動部署: java weblogic.Deployer -user weblogic -adminurl t3://10.1.

利用redis-sentinel+keepalived實現redis高可用

目標、需求: 為上層應用提供高可靠、低延遲、低(無限接近0)資料損失的Redis快取服務 方案概述: 採用同一網路內的三臺主機(可以是物理主機、虛擬機器或docker容器),要求三臺主機之間都能相互訪問,每一臺主機上都安裝redis-server、redis-sen

Android 通過ViewPager實現點選和滑動切換Fragment標籤頁

      如上圖效果,要切換 Fragment 標籤頁,可以通過點選標籤或者滑動標籤頁來實現。 網上應該有封裝好的開源庫可以直接利用,不過這裡介紹一下自己通過 ViewPager 實現該效果。 首先是佈局檔案: <?xml version="1.0" encodi

redis--主從同步,故障切換,集群搭建

目錄 好的 定期 技術 not create prot 驗證 作用 一 . redis主從同步   準備三個配置文件,實現一主兩從的redis數據庫結構(這三個配置文件僅僅端口不一樣) # redis-6379.conf 文件, 寫入下面數據: port 63

Nginx + Keepalived實現應用高可用負載均衡功能

監控nginx .tar.gz provides listening 一個 list nginx負載均衡 服務器ip load 說明:此處僅介紹 Keepalived 實現nginx負載均衡器的高可用,關於nginx介紹和負載均衡實現可查看我的另兩篇博文 Nginx負載均衡

SpringBoot(三)通過properties實現多個數據庫環境自動切換配置

方式 info 本地 所有 -c int 安裝 style 過多 前面的文章已經介紹了CentOS部署SpringBoot項目從0到1的詳細過程,包括Linux安裝ftp、Tomcat以及Java jdk的全部過程。這篇文章主要介紹關於springboot如何通過多

三:redis哨兵模式實現主從故障切換2

本篇接著上一篇進行redis哨兵的配置練習實驗,一般經典的哨兵需要3個節點(為什麼是3個節點,不是兩個節點)後面專門寫篇文章來分析這個問題. 可以再用一臺虛擬機器安裝一個redis服務,這臺虛擬機器不需要啟動例項,啟動哨兵就行,我這裡還是用兩臺機器只是測試,生

redis sentinel的指令碼機制及實現twemproxy主從自動切換

redis sentinel 指令碼機制 1).sentinel notification-script   通知型指令碼:當sentinel有任何警告級別的事件發生時(比如說redis例項的主觀失效和客觀失效等等),將會去呼叫這個指令碼,這時這個指令碼應該通

三:redis哨兵模式實現主從故障切換1

介紹 Redis Sentinel 是一個分散式系統, 你可以在一個架構中執行多個 Sentinel 程序(progress), 這些程序使用流言協議(gossip protocols)來接收關於主伺服器是否下線的資訊, 並使用投票協議(agreement

redis叢集之使用浮動vip實現故障切換全過程

目錄 生產環境: 搭建步驟: 效果驗證 測試過程 生產環境:       使用三臺裝有redis的伺服器實現一臺做主資料庫伺服器兩臺做從資料庫伺服器,在使用哨兵監控三臺伺服器。使得當主資料庫伺服器發生故障

redis哨兵模式實現主從故障切換

大多數的應用場景是MySQL(主)+Redis(輔),MySQL做為主儲存,Redis用於快取, 加快訪問速度。需要高效能的地方使用Redis,不需要高效能的地方使用MySQL。儲存 資料在MySQL和Redis之間做同步; server1 ,ser