Redis7.0部署集群的實(shí)現(xiàn)步驟
Redis7.0部署集群詳細(xì)版
集群的架構(gòu):集群就是使用網(wǎng)絡(luò)將若干臺(tái)計(jì)算機(jī)聯(lián)通起來,并提供統(tǒng)一的管理方式,使其對外呈現(xiàn)單機(jī)的服務(wù)效果
集群的作用:
分散單臺(tái)服務(wù)器的訪問壓力,實(shí)現(xiàn)負(fù)載均衡
分散單臺(tái)服務(wù)器的存儲(chǔ)壓力,實(shí)現(xiàn)可擴(kuò)展性
降低單臺(tái)服務(wù)器宕機(jī)帶來業(yè)務(wù)災(zāi)難
1、Redis集群內(nèi)部結(jié)構(gòu)設(shè)計(jì)
數(shù)據(jù)存儲(chǔ)設(shè)計(jì)
- 通過算法設(shè)計(jì),計(jì)算出key應(yīng)該保存的位置
- 將所有的存儲(chǔ)空間計(jì)劃切割成16384份,每臺(tái)主機(jī)保存一部分,每份代表的是一個(gè)存儲(chǔ)空間,不是一個(gè)key的保存空間
- 將key按照計(jì)算出的結(jié)果放到對應(yīng)的存儲(chǔ)空間
- 增強(qiáng)可擴(kuò)展性(有新的存儲(chǔ)空間加入,官方叫做
槽
)
集群內(nèi)部通訊設(shè)計(jì)
- 各個(gè)數(shù)據(jù)庫相互通信,保存各個(gè)庫中槽的編號數(shù)據(jù)
- 一次命中,直接返回
- 一次未命中,告知具體位置
2、cluster集群內(nèi)部結(jié)構(gòu)搭建
在虛擬機(jī)中啟動(dòng)多個(gè)窗口進(jìn)行集群搭建演示
主要命令在
主命令操作客戶端
執(zhí)行
修改redis.conf
配置文件
添加如下內(nèi)容
cluster-enabled yes # 啟動(dòng)為節(jié)點(diǎn) cluster-config-file nodes-6379.conf # cluster配置文件名,該文件屬于自動(dòng)生成,僅用于快速查找文件并查詢文件內(nèi)容 cluster-node-timeout 10000 # 節(jié)點(diǎn)服務(wù)響應(yīng)超時(shí)時(shí)間,用于判定該節(jié)點(diǎn)是否下線或切換為從節(jié)點(diǎn) cluster-migration-barrier <count> # master連接的slave最小數(shù)量
快速復(fù)制5分配置文件并替換里面的端口
[root@localhost conf]# sed "s/6379/6380/g" redis-6379.conf > redis-6380.conf [root@localhost conf]# sed "s/6379/6381/g" redis-6379.conf > redis-6381.conf [root@localhost conf]# sed "s/6379/6382/g" redis-6379.conf > redis-6382.conf [root@localhost conf]# sed "s/6379/6383/g" redis-6379.conf > redis-6383.conf [root@localhost conf]# sed "s/6379/6384/g" redis-6379.conf > redis-6384.conf [root@localhost conf]# sed "s/6379/6385/g" redis-6379.conf > redis-6385.conf
全部執(zhí)行后可以通過
cat
指令查看內(nèi)容確保被修改
啟動(dòng)redis服務(wù)集群
# 在第一個(gè)窗口執(zhí)行6379服務(wù) redis-server redis-6379.conf # 在第二個(gè)窗口執(zhí)行6380服務(wù) redis-server redis-6380.conf # 在第三個(gè)窗口執(zhí)行6381服務(wù) redis-server redis-6381.conf # 下面的代碼依次類推到6385
執(zhí)行命令查看redis進(jìn)程和端口
ps -ef | grep redis-
連接節(jié)點(diǎn)
在src目錄下查看
redis-trib.rb
在高版本中已經(jīng)將啟動(dòng)操作移動(dòng)到
redis-cli
中啟動(dòng)需要兩個(gè)下載兩個(gè)文件分別是
ruby
和gem
# 下載命令也會(huì)將gem一起 yum -y install rubygems
# --cluster create 創(chuàng)建集群 # --cluster-replicas 1 指定集群的內(nèi)部結(jié)構(gòu)(1代表一個(gè)master連接1個(gè)slave,2代表一個(gè)master連接兩個(gè)save) # 后面的連接端口按數(shù)量實(shí)現(xiàn)master連接哪一個(gè)slave,1對1,1對2 redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 --cluster-replicas 1
執(zhí)行的結(jié)果如下
查看配置信息的結(jié)果如下
執(zhí)行yes
命令后的信息如下
再次查看配置文件的信息,里面記錄這所有集群信息
啟動(dòng)客戶端存儲(chǔ)數(shù)據(jù)
因?yàn)槭褂昧思翰渴穑酝ㄟ^
-c
參數(shù)可以操作集群,如果不指定的是操作redis命令會(huì)提示(error) MOVED 5798 127.0.0.1:6380
注意:
-c
操作集群
redis-cli -c # 創(chuàng)建key,通過返回信息可以知道key存儲(chǔ)到6380下了 127.0.0.1:6379> set name 123 -> Redirected to slot [5798] located at 127.0.0.1:6380 OK
指定端口連接客戶端
# 連接指定的集群客戶端 [root@localhost data]# redis-cli -c -p 6382 # 獲取key 127.0.0.1:6382> get name -> Redirected to slot [5798] located at 127.0.0.1:6380 "123" 127.0.0.1:6380>
Cluster節(jié)點(diǎn)操作命令
查看集群節(jié)點(diǎn)信息
cluster nodes
進(jìn)入一個(gè)從節(jié)點(diǎn) redis,切換其主節(jié)點(diǎn)
cluster replicate <master-id>
發(fā)現(xiàn)一個(gè)新節(jié)點(diǎn),新增主節(jié)點(diǎn)
cluster meet ip:port
忽略一個(gè)沒有solt的節(jié)點(diǎn)
cluster forget <id>
手動(dòng)故障轉(zhuǎn)移
cluster failover
redis-trib命令
添加節(jié)點(diǎn)
redis-trib.rb add-node
刪除節(jié)點(diǎn)
redis-trib.rb del-node
重新分片
redis-trib.rb reshard
3、主從下線和主從切換
1、模擬從機(jī)下線操作
在從機(jī)服務(wù)器執(zhí)行
Ctrl + C
下載服務(wù)
觀察連接的主機(jī)情況,主機(jī)會(huì)在10秒內(nèi)連接不上從機(jī)就會(huì)標(biāo)記從機(jī)失敗,其他集群服務(wù)會(huì)連接上失敗的,其他服務(wù)會(huì)接收到信息
再次啟動(dòng)從機(jī),主機(jī)就會(huì)重新連接上從機(jī)
如果主機(jī)下線了,從機(jī)會(huì)某槽換位,當(dāng)主機(jī)重新上線的時(shí)候,原來的主機(jī)就會(huì)變成從機(jī)
到此這篇關(guān)于Redis7.0部署集群的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Redis7.0部署集群內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis實(shí)現(xiàn)消息的發(fā)布訂閱原理分析
本文主要介紹了Redis實(shí)現(xiàn)消息的發(fā)布訂閱原理分析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Redis主從復(fù)制與讀寫分離的實(shí)現(xiàn)
Redis在作為緩存的時(shí)候,隨著項(xiàng)目訪問量的增加,對Redis服務(wù)器的操作也越加頻繁,雖然Redis讀寫速度都很快,但是一定程度上也會(huì)造成一定的延時(shí),本文主要介紹了Redis主從復(fù)制與讀寫分離的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12window環(huán)境redis通過AOF恢復(fù)數(shù)據(jù)的方法
這篇文章主要介紹了window環(huán)境redis通過AOF恢復(fù)數(shù)據(jù)的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11redis key過期監(jiān)聽的實(shí)現(xiàn)示例
在Redis中,我們可以為Key設(shè)置過期時(shí)間,當(dāng)Key的過期時(shí)間到達(dá)后,Redis會(huì)自動(dòng)將該Key標(biāo)記為已失效,本文就來介紹一下redis key過期監(jiān)聽的實(shí)現(xiàn)示例,感興趣的可以了解一下2024-03-03Redis和Nginx實(shí)現(xiàn)限制接口請求頻率的示例
限流就是限制API訪問頻率,當(dāng)訪問頻率超過某個(gè)閾值時(shí)進(jìn)行拒絕訪問等操作,本文主要介紹了Redis和Nginx實(shí)現(xiàn)限制接口請求頻率的示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02