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

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分配置文件並替換裡面的端口

[[email protected] conf]# sed "s/6379/6380/g" redis-6379.conf > redis-6380.conf 
[[email protected] conf]# sed "s/6379/6381/g" redis-6379.conf > redis-6381.conf 
[[email protected] conf]# sed "s/6379/6382/g" redis-6379.conf > redis-6382.conf 
[[email protected] conf]# sed "s/6379/6383/g" redis-6379.conf > redis-6383.conf 
[[email protected] conf]# sed "s/6379/6384/g" redis-6379.conf > redis-6384.conf 
[[email protected] 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-

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-DPkULwye-1655210548732)(images/image-20220614160930499.jpg)]

連接節點

在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

指定端口連接客戶端

# 連接指定的集群客戶端
[[email protected] 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部署集群內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: