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分配置文件並替換裡面的端口
[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秒內連接不上從機就會標記從機失敗,其他集群服務會連接上失敗的,其他服務會接收到信息
再次啟動從機,主機就會重新連接上從機
如果主機下線瞭,從機會某槽換位,當主機重新上線的時候,原來的主機就會變成從機
到此這篇關於Redis7.0部署集群的實現步驟的文章就介紹到這瞭,更多相關Redis7.0部署集群內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- redis集群搭建過程(非常詳細,適合新手)
- Redis5之後版本的高可用集群搭建的實現
- 詳解三分鐘快速搭建分佈式高可用的Redis集群
- Redis的Cluster集群搭建的實現步驟
- Redis集群水平擴展、集群中添加以及刪除節點的操作