網站首頁 編程語言 正文
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
中啟動需要兩個下載兩個文件分別是
ruby
和gem
# 下載命令也會將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秒內連接不上從機就會標記從機失敗,其他集群服務會連接上失敗的,其他服務會接收到信息
再次啟動從機,主機就會重新連接上從機
如果主機下線了,從機會某槽換位,當主機重新上線的時候,原來的主機就會變成從機
原文鏈接:https://xiaozhong.blog.csdn.net/article/details/125285862
相關推薦
- 2022-03-15 Centos7下NFS服務搭建介紹_Linux
- 2023-07-13 websocket的使用及nginx通信的ws代理配置
- 2022-04-20 超全整理visual?studio快捷鍵使用技巧_相關技巧
- 2022-09-20 Tomcat服務器配置https認證(使用keytool生成證書)_Tomcat
- 2022-10-11 Laravel 不添加配置文件實現 Redis 切換庫和設置 key 前綴
- 2022-07-08 PyHacker編寫指南引用Nmap模塊實現端口掃描器_python
- 2023-10-26 在el-table中判斷三種情況,顯示不同的數據
- 2022-12-09 shell腳本實現Hbase服務的監控報警和自動拉起問題_linux shell
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支