首頁 > 軟體

Redis7.0部署叢集的實現步驟

2022-06-26 18:01:33

Redis7.0部署叢集詳細版

叢集的架構:叢集就是使用網路將若干臺計算機聯通起來,並提供統一的管理方式,使其對外呈現單機的服務效果

叢集的作用:

  • 分散單臺伺服器的存取壓力,實現負載均衡

  • 分散單臺伺服器的儲存壓力,實現可延伸性

  • 降低單臺伺服器宕機帶來業務災難

1、Redis叢集內部結構設計

資料儲存設計

  • 通過演演算法設計,計算出key應該儲存的位置
  • 將所有的儲存空間計劃切割成16384份,每臺主機儲存一部分,每份代表的是一個儲存空間,不是一個key的儲存空間
  • 將key按照計算出的結果放到對應的儲存空間
  • 增強可延伸性(有新的儲存空間加入,官方叫做

叢集內部通訊設計

  • 各個資料庫相互通訊,儲存各個庫中槽的編號資料
  • 一次命中,直接返回
  • 一次未命中,告知具體位置

2、cluster叢集內部結構搭建

在虛擬機器器中啟動多個視窗進行叢集搭建演示

主要命令在主命令操作使用者端執行

修改redis.conf組態檔

新增如下內容

cluster-enabled yes # 啟動為節點
cluster-config-file nodes-6379.conf # cluster組態檔名,該檔案屬於自動生成,僅用於快速查詢檔案並查詢檔案內容
cluster-node-timeout 10000 # 節點服務響應超時時間,用於判定該節點是否下線或切換為從節點
cluster-migration-barrier <count> # master連線的slave最小數量

快速複製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 

全部執行後可以通過cat指令檢視內容確保被修改

啟動redis服務叢集

# 在第一個視窗執行6379服務
redis-server redis-6379.conf
# 在第二個視窗執行6380服務
redis-server redis-6380.conf
# 在第三個視窗執行6381服務
redis-server redis-6381.conf
# 下面的程式碼依次類推到6385

執行命令檢視redis程序和埠

ps -ef | grep redis-

連線節點

在src目錄下檢視redis-trib.rb

在高版本中已經將啟動操作移動到redis-cli

啟動需要兩個下載兩個檔案分別是rubygem

# 下載命令也會將gem一起
yum -y install rubygems

 

 # --cluster create 建立叢集
 # --cluster-replicas 1 指定叢集的內部結構(1代表一個master連線1個slave,2代表一個master連線兩個save)
 # 後面的連線埠按數量實現master連線哪一個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

執行的結果如下

檢視設定資訊的結果如下

執行yes命令後的資訊如下

再次檢視組態檔的資訊,裡面記錄這所有叢集資訊

啟動使用者端儲存資料

因為使用了叢集部署,所以通過-c引數可以操作叢集,如果不指定的是操作redis命令會提示(error) MOVED 5798 127.0.0.1:6380

注意:-c操作叢集

redis-cli -c
# 建立key,通過返回資訊可以知道key儲存到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節點操作命令

檢視叢集節點資訊

cluster nodes

進入一個從節點 redis,切換其主節點

cluster replicate <master-id>

發現一個新節點,新增主節點

cluster meet ip:port

忽略一個沒有solt的節點

cluster forget <id>

手動故障轉移

cluster failover

redis-trib命令

新增節點

redis-trib.rb add-node

刪除節點

redis-trib.rb del-node

重新分片

redis-trib.rb reshard

3、主從下線和主從切換

1、模擬從機下線操作

在從機伺服器執行Ctrl + C下載服務

觀察連線的主機情況,主機會在10秒內連線不上從機就會標記從機失敗,其他叢集服務會連線上失敗的,其他服務會接收到資訊

再次啟動從機,主機就會重新連線上從機

如果主機下線了,從機會某槽換位,當主機重新上線的時候,原來的主機就會變成從機

到此這篇關於Redis7.0部署叢集的實現步驟的文章就介紹到這了,更多相關Redis7.0部署叢集內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com