首頁  >  文章  >  資料庫  >  Redis7.0部署叢集怎麼實現

Redis7.0部署叢集怎麼實現

WBOY
WBOY轉載
2023-05-28 16:28:141713瀏覽

Redis7.0部署叢集詳細版

叢集架構是一種將多台電腦透過網路連接起來,並採用統一的管理方式,使其對外表現為單一電腦提供服務的方式

叢集的作用:

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

  • 分散單一伺服器的存儲壓力,實現可擴展性

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

Redis7.0部署叢集怎麼實現

##1 、Redis叢集內部結構設計

資料儲存設計

  • 透過演算法設計,計算出key應該保存的位置

  • 將所有的儲存空間計畫切割成16384份,每台主機保存一部分,每份代表的是一個儲存空間,不是一個key的保存空間

  • 將key按照計算出的結果放到對應的儲存空間

  • 增強可擴展性(有新的儲存空間加入,官方叫做

#集群內部通訊設計

  • 各個資料庫相互通信,保存各個庫中槽的編號資料

  • 一次命中,直接返回

  • 一次未命中,告知特定位置

2、cluster叢集內部結構建構

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

Redis7.0部署叢集怎麼實現

主要命令在

主命令操作用戶端執行

#修改

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-

Redis7.0部署叢集怎麼實現

連接節點

#在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
執行的結果如下

Redis7.0部署叢集怎麼實現##查看設定資訊的結果如下

Redis7.0部署叢集怎麼實現執行

yes

指令後的資訊如下

Redis7.0部署叢集怎麼實現

#再次查看設定檔的信息,裡面記錄這所有集群資訊

啟動客戶端儲存資料

因為使用了叢集部署,所以透過
-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

重新分片

r​​rreee

3、主從下線和主從切換

1、模擬從機離線操作

在從機伺服器執行
Ctrl C

下載服務##觀察連接的主機情況,主機會在10秒內連接不上從機就會標記從機失敗,其他群集服務會連接上失敗的,其他服務會接收到訊息

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

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

#

以上是Redis7.0部署叢集怎麼實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除