日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis数据库(四)哨兵和集群

發(fā)布時(shí)間:2023/12/20 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis数据库(四)哨兵和集群 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

一、Redis高可用

1、主從復(fù)制

①概念

②作用

③流程

2、哨兵(至少三臺(tái)redis)

①概念

②作用

③結(jié)構(gòu)

④故障轉(zhuǎn)移機(jī)制

⑤主節(jié)點(diǎn)選舉

3、集群(推薦至少6臺(tái)redis)

①簡介

②作用

③集群模式的數(shù)據(jù)分片

④新master加入

二、主從復(fù)制部署

1、環(huán)境

2、master節(jié)點(diǎn)配置

3、 slave節(jié)點(diǎn)配置

4、驗(yàn)證主從

三、哨兵部署

1、在主從的基礎(chǔ)上配置哨兵

2、啟動(dòng)哨兵

3、持續(xù)查看哨兵信息?

4、模擬故障

四、Redis集群部署

1、配置6個(gè)redis服務(wù)

2、修改配置文件

3、啟動(dòng)節(jié)點(diǎn)

4、啟動(dòng)集群

5、集群測試


一、Redis高可用

在Redis中實(shí)現(xiàn)高可用的技術(shù)主要有持久化、主從復(fù)制、哨兵和集群

1、主從復(fù)制

主從復(fù)制是Redis高可用的基礎(chǔ),哨兵和集群都是在主從復(fù)制的基礎(chǔ)上實(shí)現(xiàn)的。主從復(fù)制主要實(shí)現(xiàn)了數(shù)據(jù)的舵機(jī)備份以及對(duì)于讀操作的負(fù)載均衡和簡單的故障恢復(fù)。但還是有極大的限制:故障恢復(fù)無法自動(dòng)化;寫操作無法負(fù)載均衡;存儲(chǔ)能力受單機(jī)性能的限制。

①概念

主從復(fù)制是指將一臺(tái)Redis服務(wù)器的數(shù)據(jù)復(fù)制到其他的Redis服務(wù)器(主從節(jié)點(diǎn))數(shù)據(jù)的復(fù)制只能由主節(jié)點(diǎn)到從節(jié)點(diǎn),是單向的。默認(rèn)情況下,每臺(tái)Redis服務(wù)器都是主節(jié)點(diǎn)且每一個(gè)主節(jié)點(diǎn)可有多個(gè)或者沒有從節(jié)點(diǎn),但是每一個(gè)從節(jié)點(diǎn)只能有一個(gè)主節(jié)點(diǎn)。

②作用

由主從復(fù)制實(shí)現(xiàn)了數(shù)據(jù)的熱備份,是持久化以外的一種數(shù)據(jù)冗余方式。當(dāng)主節(jié)點(diǎn)出現(xiàn)問題時(shí),可以由從節(jié)點(diǎn)提供服務(wù),實(shí)現(xiàn)快速的故障恢復(fù)(實(shí)際上是一種服務(wù)器的冗余)。在主從復(fù)制的基礎(chǔ)上,配合讀寫分離,可以由主節(jié)點(diǎn)提供寫服務(wù),從節(jié)點(diǎn)提供讀服務(wù),分擔(dān)服務(wù)器的負(fù)載,尤其在寫少讀多的情況下,通過多個(gè)從節(jié)點(diǎn)分擔(dān)讀負(fù)載可以大大提高Redis服務(wù)器的并發(fā)量。

③流程

開啟redis服務(wù),從服務(wù)器向主服務(wù)器發(fā)送SYNC同步請(qǐng)求。主服務(wù)器會(huì)fork一個(gè)子進(jìn)程產(chǎn)生一個(gè)RDB文件(客戶端仍舊寫入新命令)。RDB文件持久化完成后,主服務(wù)器會(huì)將RDB文件和緩存起來的命令推送給從服務(wù)器。

2、哨兵(至少三臺(tái)redis)

在主從復(fù)制的基礎(chǔ)上,哨兵實(shí)現(xiàn)了自動(dòng)化的故障恢復(fù)。

缺陷:寫操作無法負(fù)載均衡;存儲(chǔ)能力依然受單機(jī)性能的限制。

①概念

哨兵是一個(gè)分布式系統(tǒng),用于對(duì)主從結(jié)構(gòu)種的每臺(tái)服務(wù)器進(jìn)行監(jiān)控。在主從復(fù)制的基礎(chǔ)上,哨兵引入了主節(jié)點(diǎn)的自動(dòng)故障轉(zhuǎn)移,當(dāng)出現(xiàn)故障時(shí)通過投票是否離線來選擇新的master節(jié)點(diǎn)并將所有slave連接到新的master。

②作用

哨兵會(huì)不斷地檢查主節(jié)點(diǎn)和從系欸但是否正常。當(dāng)主節(jié)點(diǎn)不能正常工作時(shí)哨兵會(huì)開始故障轉(zhuǎn)移操作,通過將一個(gè)從節(jié)點(diǎn)升級(jí)為新的主節(jié)點(diǎn)并將原從節(jié)點(diǎn)指向新master,同時(shí)可以將故障轉(zhuǎn)移結(jié)果發(fā)送給客戶端。

③結(jié)構(gòu)

哨兵由兩部分組成:哨兵節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)。由一個(gè)或多個(gè)哨兵節(jié)點(diǎn)組成一個(gè)哨兵系統(tǒng),不儲(chǔ)存數(shù)據(jù)。主節(jié)點(diǎn)和從節(jié)點(diǎn)都是數(shù)據(jù)節(jié)點(diǎn)。

④故障轉(zhuǎn)移機(jī)制

由哨兵節(jié)點(diǎn)定期監(jiān)控主節(jié)點(diǎn)是否發(fā)生故障。每個(gè)哨兵節(jié)點(diǎn)每隔1s向主節(jié)點(diǎn)、從節(jié)點(diǎn)以及其他燒餅節(jié)點(diǎn)發(fā)送一個(gè)ping命令做一次心跳檢測,如果主節(jié)點(diǎn)在一定時(shí)間范圍內(nèi)不回復(fù)或者時(shí)回復(fù)一個(gè)錯(cuò)誤信息,那么就認(rèn)為這個(gè)主節(jié)點(diǎn)主觀下線。當(dāng)超過半數(shù)的哨兵節(jié)點(diǎn)認(rèn)為該主節(jié)點(diǎn)主觀下線,則視為該主節(jié)點(diǎn)客觀下線。此時(shí)哨兵節(jié)點(diǎn)會(huì)通過Raft算法實(shí)現(xiàn)選舉機(jī)制共同選舉出一個(gè)哨兵節(jié)點(diǎn)為leader來負(fù)責(zé)處理主節(jié)點(diǎn)的故障轉(zhuǎn)移和通知。

需要注意的是客觀下線是主節(jié)點(diǎn)才有的概念,如果從節(jié)點(diǎn)和哨兵節(jié)點(diǎn)發(fā)生故障,被哨兵主觀下線后不會(huì)再有后續(xù)的客觀下線和故障轉(zhuǎn)移操作。

⑤主節(jié)點(diǎn)選舉

過濾掉不健康的、沒有回復(fù)哨兵ping響應(yīng)的從節(jié)點(diǎn);選擇配置文件中從節(jié)點(diǎn)優(yōu)先級(jí)配置最高的;選擇復(fù)制偏移量最大,復(fù)制最完整的從節(jié)點(diǎn)。

3、集群(推薦至少6臺(tái)redis)

通過集群,Redis解決了寫操作無法負(fù)載均衡以及存儲(chǔ)能力受單機(jī)限制的問題,是一個(gè)較為完善的高可用方案。

①簡介

redis集群模式是一個(gè)可以解決寫的操作無法負(fù)載均衡、存儲(chǔ)受單機(jī)限制以及故障自動(dòng)切換功能的一個(gè)集群。由多個(gè)節(jié)點(diǎn)組成,redis的數(shù)據(jù)分布在這些節(jié)點(diǎn)中。節(jié)點(diǎn)分為主節(jié)點(diǎn)和從節(jié)點(diǎn),只有主節(jié)點(diǎn)復(fù)制讀寫請(qǐng)求和集群信息的維護(hù),從節(jié)點(diǎn)只進(jìn)行主節(jié)點(diǎn)數(shù)據(jù)和狀態(tài)信息的復(fù)制。

②作用

數(shù)據(jù)分區(qū)(分片)是居群最核心的功能。

集群將數(shù)據(jù)分散到多個(gè)系欸但,一方面突破了redis單機(jī)內(nèi)存大小的限制,存儲(chǔ)容量大大增加,另一方面每個(gè)主節(jié)點(diǎn)都可以對(duì)外提供讀寫服務(wù),提高了集群的響應(yīng)能力。

③集群模式的數(shù)據(jù)分片

redis集群引入了哈希槽的概念,每個(gè)集群由16384個(gè)哈希槽(編號(hào)0-16383),集群中的每個(gè)節(jié)點(diǎn)負(fù)責(zé)一部分哈希槽。每個(gè)key通過CRC16校驗(yàn)后對(duì)16384取余來決定放置哪個(gè)哈希槽,通過這個(gè)值去找對(duì)應(yīng)的插槽所對(duì)應(yīng)的節(jié)點(diǎn),然后直接自動(dòng)跳轉(zhuǎn)到這個(gè)對(duì)應(yīng)的節(jié)點(diǎn)上進(jìn)行存取操作。

總的來說就是集群是分布式的,它可以將多個(gè)master當(dāng)作一個(gè)整體來存放數(shù)據(jù)并且集群中由16384個(gè)哈希槽,集群中的master來平分這些槽位。當(dāng)需要由數(shù)據(jù)來存儲(chǔ)到集群中時(shí),需要使用CRC16算法得出一個(gè)結(jié)果再將這個(gè)結(jié)果對(duì)16384取余,最后得到對(duì)應(yīng)的曹魏,根據(jù)槽位選定最頂存放的master節(jié)點(diǎn)。

④新master加入

如果有新的master節(jié)點(diǎn)加入,集群會(huì)將現(xiàn)有的每一個(gè)哈希槽移除一部分,使得新節(jié)點(diǎn)加入后仍可以均分。

二、主從復(fù)制部署

1、環(huán)境

master? ? ? ? ? ? ? ? 192.168.10.101

slave1? ? ? ? ? ? ? ? ?192.168.10.102

slave2? ? ? ? ? ? ? ? ?192.168.10.103

準(zhǔn)備好redis服務(wù)

2、master節(jié)點(diǎn)配置

監(jiān)聽所有網(wǎng)段。

開啟持久化。

其他配置與(二)相同。

重啟服務(wù)。

3、 slave節(jié)點(diǎn)配置

?

添加主服務(wù)器ip和端口。

重啟服務(wù)。

4、驗(yàn)證主從

在master節(jié)點(diǎn)創(chuàng)建一個(gè)新鍵

日志變化?

?從節(jié)點(diǎn)變更

三、哨兵部署

1、在主從的基礎(chǔ)上配置哨兵

所有節(jié)點(diǎn)上配置

vim /opt/redis-5.0.7/sentinel.conf

關(guān)閉保護(hù)模式?

指定sentinel后臺(tái)啟動(dòng)

指定日志存放路徑

指定數(shù)據(jù)庫存放路徑

指定主節(jié)點(diǎn),名稱mymaster,需要至少2個(gè)哨兵節(jié)點(diǎn)同意才能判定主節(jié)點(diǎn)客觀下線。

判定服務(wù)器down的時(shí)間周期,默認(rèn)3w毫秒也就是30s

故障節(jié)點(diǎn)的最大超時(shí)時(shí)間為18w毫秒,即180s?

2、啟動(dòng)哨兵

查看哨兵信息

redis-cli -p 26379 info sentinel?

3、持續(xù)查看哨兵信息?

watch -n 1 redis-cli -p 26379 info sentinel

?4、模擬故障

關(guān)閉master的redis服務(wù)。

master跳轉(zhuǎn)到192.168.10.102節(jié)點(diǎn)。

四、Redis集群部署

以一臺(tái)虛擬機(jī)模擬三主三從合計(jì)6臺(tái)服務(wù)器

1、配置6個(gè)redis服務(wù)

2、修改配置文件

注釋,表示監(jiān)聽所有端口

關(guān)閉保護(hù)模式

根據(jù)之前設(shè)置的更改端口

開啟守護(hù)進(jìn)程

開啟AOF持久化

開啟集群功能

集群名稱文件設(shè)置

集群超時(shí)時(shí)間設(shè)置?

3、啟動(dòng)節(jié)點(diǎn)

分別進(jìn)入6個(gè)節(jié)點(diǎn)啟動(dòng)服務(wù)

4、啟動(dòng)集群

成功啟動(dòng)

5、集群測試

redis-cli -p 6001 -c

-c? ? ? ? ? ? ? ? 節(jié)點(diǎn)之間可以相互跳轉(zhuǎn)

cluster? slots

查看節(jié)點(diǎn)的哈希槽編號(hào)范圍

cluster? keyslot? 鍵名

查看鍵的哈希槽編號(hào)

每組分別一主一從

總結(jié)

以上是生活随笔為你收集整理的Redis数据库(四)哨兵和集群的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。