您好,登錄后才能下訂單哦!
這篇“redis集群的三種方式是什么”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“redis集群的三種方式是什么”文章吧。
Redis三種集群方式:主從復制,哨兵模式,Cluster集群。
當新建立一個從服務器時,從服務器將向主服務器發(fā)送SYNC命令,接收到SYNC命令后的主服務器會進行一次BGSAVE命令,在執(zhí)行期間,會將所有命令寫入緩沖區(qū)中,當BGSAVE命令執(zhí)行完畢之后會將生成的RDB文件發(fā)送給從服務器,從服務器使用這個文件加載數(shù)據(jù)到內(nèi)存中,之后主服務器會以Redis命令協(xié)議的格式將緩沖區(qū)的命令發(fā)送給從服務器。此后每次主服務執(zhí)行命令都會同步給從服務器。即使有多個從服務器向主服務器發(fā)送SYNC命令,主服務器也只會執(zhí)行一個BGSAVE命令,就可以處理接下來的同步請求。一個主服務器可以擁有多個從服務器,而從服務器也可擁有從服務器,從而形成一個圖狀結構,復制功能不會阻塞主服務器,即使有一個或多個同步請求,主服務器依然能處理命令請求。
當配置了主從復制模式時需要開啟主服務器的持久化功能,如果將主服務器的持久化功能關閉,主服務器一旦重啟,所有從服務器的數(shù)據(jù)將會丟失,即使配置了Sentinel模式,如果主服務器自動拉起進程比較快,以至于在Sentinel模式下還未選舉出新的主服務器,主服務的啟動也會造成子服務器的數(shù)據(jù)丟失。
配置一個主從復制模式,只需要使用Slaveof命令即可,在conf配置文件中添加或者是在redis中執(zhí)行命令。
SLAVEOF host port
Redis的Sentinel系統(tǒng)用于管理多個Redis,主要執(zhí)行以下三件事:
監(jiān)控:Sentinel會不斷的檢查主從服務器運行狀態(tài)
提醒:當某個Redis服務器出現(xiàn)故障,可通過API或者其他應用程序發(fā)送通知
自動故障遷移:當一個主服務器不能正常工作時,Sentinel會進行一次故障自動遷移,會將失效主服務器的從服務器選舉出一個新的主服務器,剩下的從服務器將會自動連接復制選舉出來的新服務器的數(shù)據(jù)。
Redis的Sentinel系統(tǒng)是一個分布式的系統(tǒng),可以在系統(tǒng)中配置一個或多個Sentinel。
使用redis-sentinel啟動
redis-sentinel sentinel.confy
也可以使用redis-server來啟動
redis-server sentinel.conf --sentinelyy
以上兩種方式都可以啟動sentinel,啟動sentinel必須指定配置文件,否則無法啟動:
一個sentinel.conf文件最少需要一句配置:
sentinel monitor mymaster 127.0.0.1 6379 2
監(jiān)視一個別名叫做mymaster的主機,地址是127.0.0.1,端口是6379,將這個主服務器判斷為失效至少需要2個sentinel同意。
無論設置多少個sentinel同意判斷一個主服務器的失效,都需要系統(tǒng)中多個Sentinel支持才能進行故障遷移,而只有少數(shù)sentinel正常運行的時候,是無法進行故障遷移。
當一個Sentinel發(fā)現(xiàn)主服務器下線時,稱為主觀下線,只有多個Sentinel都發(fā)現(xiàn)主服務下線,并相互之間通過命令進行交流判斷主服務器下線時,稱為客觀下線。只有對主服務器進行客觀下線時,會選舉出領頭Sentinel,選舉出之后,會進行新的主服務器投票選舉,選舉出一個從服務器升級為主服務器。并向被選中的從服務器發(fā)送Slaveof no one命令,讓其變?yōu)橹鞣掌鳎ㄟ^發(fā)布訂閱的功能,將新的配置廣播給其他Sentinel進行更新,并向下線的主服務器發(fā)送Slaveof命令,讓其復制新的主服務器,當所有從服務器都已經(jīng)開始復制新的主服務器時,領頭Sentinel終止本次故障遷移。
當一個 Redis 實例被重新配置是,無論是被設置成主服務器、從服務器、又或者被設置成其他主服務器的從服務器 ,Sentinel 都會向被重新配置的實例發(fā)送一個
CONFIG REWRITE
命令, 從而確保這些配置會持久化在硬盤里。
之前的主從復制,哨兵模式都難以再現(xiàn)擴容,而Redis cluster集群實現(xiàn)了對Redis的水平擴容,即啟動N個Redis節(jié)點,每個節(jié)點又可以有自己的從服務器,將數(shù)據(jù)均勻分布的存儲在這N個結點上,每個節(jié)點存儲數(shù)據(jù)的1/N。Redis cluster集群就是一個可以在多個Redis節(jié)點之間進行數(shù)據(jù)共享的設施;Redis cluster集群采用的是無中心化配置,即節(jié)點A無法處理,會將請求轉(zhuǎn)發(fā)只節(jié)點B進行處理。
Redis集群中的鍵空間被分割為16384個槽位。每個主節(jié)點負責16384中槽位的一部分,Redis使用CRC16 算法進行槽位分配。為了保證高可用,cluster模式也引入了主從復制模式,一個主節(jié)點對應一個或多個從節(jié)點,當主節(jié)點發(fā)生宕機時,可進行故障轉(zhuǎn)移,將子節(jié)點升級為主節(jié)點。
Redis 集群由多個運行在集群模式(cluster mode)下的 Redis 實例組成, 實例的集群模式需要通過配置來開啟,以下是一個包含了最少選項的集群配置文件示例:
port 7000 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes
cluster-enabled:打開集群模式
cluster-config-file:節(jié)點配置文件名,無須人為修改, 它由 Redis 集群在啟動時創(chuàng)建, 并在有需要時自動進行更新
cluster-node-timeout:節(jié)點失聯(lián)時間,當超過此毫秒,集群將自動切換主從節(jié)點。
要讓集群正常運作至少需要三個主節(jié)點,而每個主節(jié)點都應該正確配置一個或者多個從節(jié)點。
使用redis-cli --cluster create命令將節(jié)點合并成一個集群
redis-cli --cluster create --cluster-replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
--cluster-replicas 1 這個指的是從機的數(shù)量,表示我們希望為集群中的每個主節(jié)點創(chuàng)建一個從節(jié)點。
進入集群模式只需要使用redis-cli -c命令
redis-cli -c -p 7000
無中心話節(jié)點,所以進入任意一個端口號的主節(jié)點即可。
以上就是關于“redis集群的三種方式是什么”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關的知識內(nèi)容,請關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。