新聞中心
Redis企業(yè)級部署:哨兵轉移實踐

創(chuàng)新互聯(lián)公司是一家從事企業(yè)網(wǎng)站建設、網(wǎng)站設計制作、成都網(wǎng)站制作、行業(yè)門戶網(wǎng)站建設、網(wǎng)頁設計制作的專業(yè)網(wǎng)站建設公司,擁有經(jīng)驗豐富的網(wǎng)站建設工程師和網(wǎng)頁設計人員,具備各種規(guī)模與類型網(wǎng)站建設的實力,在網(wǎng)站建設領域樹立了自己獨特的設計風格。自公司成立以來曾獨立設計制作的站點千余家。
Redis作為一款高性能的非關系型數(shù)據(jù)庫,已經(jīng)在企業(yè)級應用中得到廣泛應用。但是,在Redis集群中,單節(jié)點故障可能會導致整個集群不可用,這是一種不可避免的風險。為了保障Redis的高可用性,我們需要使用哨兵來進行故障自動轉移。
本文將介紹Redis企業(yè)級部署中哨兵轉移的相關實踐,包括哨兵節(jié)點的安裝、配置與故障自動轉移的流程。
一、哨兵節(jié)點的安裝與配置
在Redis集群中,哨兵節(jié)點扮演著監(jiān)控節(jié)點健康狀態(tài)的角色,當其中一個節(jié)點故障時,哨兵會進行自動轉移操作,選舉一個新的節(jié)點作為主節(jié)點繼續(xù)提供服務。
我們需要在Redis集群中為每個主節(jié)點配置一個哨兵。哨兵節(jié)點的安裝和配置很簡單,我們只需要在集群中選擇一臺服務器作為哨兵,然后進行如下操作:
1. 安裝Redis
在哨兵節(jié)點服務器上安裝Redis,可以通過官方網(wǎng)站獲取最新版本的Redis源碼包,完成編譯和安裝。
2. 配置Redis
在哨兵服務器上配置哨兵Redis的配置文件sentinel.conf,配置文件主要包括以下內容:
# 哨兵節(jié)點端口號
port 26379
# 監(jiān)控的主節(jié)點IP地址
sentinel monitor
# 選舉一個新的主節(jié)點且最少有2個哨兵支持才能選舉
sentinel down-after-milliseconds
sentinel flover-timeout
二、哨兵自動轉移的流程
在Redis集群中,當主節(jié)點故障,哨兵節(jié)點會自動進行主節(jié)點的轉移。該轉移過程分為三個階段:斷開連接、選舉Leader和主服務器選擇。
1. 斷開連接
當哨兵檢測到主節(jié)點故障時,它將主節(jié)點標記為‘down’,并嘗試連接到所有剩余的主節(jié)點。如果在連接過程中發(fā)現(xiàn)有主節(jié)點在規(guī)定時間內沒有響應,則它的狀態(tài)將被標記為“SDOWN”。
2. 選舉Leader
當主節(jié)點被標記為“SDOWN”后,哨兵開始選舉一個新的leader節(jié)點。它將從監(jiān)視主節(jié)點的所有哨兵節(jié)點中選擇一個具有最高優(yōu)先級的哨兵節(jié)點作為leader。如果有多個哨兵具有相同的最高優(yōu)先級,則按照結點名稱的字典序選舉,選出的leader哨兵節(jié)點將負責進行下一步操作。
3. 主服務器選擇
選舉出新的leader后,leader將與剩余的哨兵節(jié)點一起重新選擇新的主節(jié)點。這項任務將從具有最高優(yōu)先級的從節(jié)點中進行。如果在此時沒有可以成為主節(jié)點的從節(jié)點,哨兵就會嘗試將”master”標記為“odown”,并發(fā)送新的狀態(tài)轉移請求。此時,所有的哨兵都將參與到新的狀態(tài)轉移中,以選舉新的主節(jié)點。
三、哨兵轉移實踐
下面給出一個根據(jù)Redis Sentinel的實現(xiàn)編寫的腳本,該腳本可以自動將Redis主節(jié)點上的數(shù)據(jù)轉移到新的Redis主節(jié)點,以進行故障自動轉移操作。
#!/usr/bin/env bash
SENTINEL_IP=$1
OLD_MASTER_IP=$2
OLD_MASTER_PORT=$3
NEW_MASTER_IP=$4
NEW_MASTER_PORT=$5
if [ $# -lt 5 ]; then
echo “Usage: $0 “
exit
fi
# 發(fā)送“SLAVE OF NO ONE”命令,停止舊主節(jié)點的從屬關系
redis-cli -h $OLD_MASTER_IP -p $OLD_MASTER_PORT SLAVEOF NO ONE
# 等待Redis復制緩沖區(qū)為空
while [ true ]; do
lag=$(redis-cli -h $OLD_MASTER_IP -p $OLD_MASTER_PORT INFO replication | grep “master_repl_offset:” | awk -F’:’ ‘{print $2}’)
if [ “$lag” = “0” ]; then
break
fi
sleep 1
done
# 設置新的主節(jié)點
redis-cli -h $SENTINEL_IP -p 26379 SENTINEL FLOVER $NEW_MASTER_IP:$NEW_MASTER_PORT
# 等待新的主節(jié)點數(shù)據(jù)同步完成
while [ true ]; do
if $(redis-cli -h $NEW_MASTER_IP -p $NEW_MASTER_PORT PING); then
break
fi
sleep 1
done
echo “SUCCESS: Sentinal flover complete!”
以上腳本將停止舊主節(jié)點的從屬關系并確保復制緩沖區(qū)為空,然后將新的主節(jié)點作為新的主節(jié)點并等待新主節(jié)點的數(shù)據(jù)同步完成。
四、總結
哨兵是Redis企業(yè)級部署中保障高可用性的重要組件,它能夠在主節(jié)點宕機后自動實現(xiàn)節(jié)點轉移,提升Redis的可用性。本文從哨兵節(jié)點的安裝與配置,到哨兵自動轉移的流程,最后給出了哨兵節(jié)點的自動轉移腳本,希望能夠對Redis的企業(yè)級部署提供幫助。
香港服務器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務提供商,擁有超過10年的服務器租用、服務器托管、云服務器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。
當前文章:Redis企業(yè)級部署哨兵轉移實踐(redis轉移哨兵)
網(wǎng)站網(wǎng)址:http://www.dlmjj.cn/article/dhdsjpg.html


咨詢
建站咨詢
