Redis5.0.8集群搭建与说明
文章目錄
- 1. 環境說明
- 2. 修改集群配置
- 3. 創建集群
- 4. 集群槽位
- 5. 主節點故障問題
1. 環境說明
RedisCluster要求至少3個主節點,因此我們需要啟動6個Redis實例(3主3從)
準備3臺虛擬機,分別安裝Redis,步驟可以參考之前的文章:Linux安裝Redis步驟
| 192.168.25.132:6379 | master |
| 192.168.25.132:6380 | slave |
| 192.168.25.133:6379 | master |
| 192.168.25.133:6380 | slave |
| 192.168.25.134:6379 | master |
| 192.168.25.134:6380 | slave |
2. 修改集群配置
cluster-enabled yes:開啟集群
cluster-config-file nodes-6379.conf:集群節點信息的配置文件(同一臺Linux運行多個實例記得名稱不要重復)
cluster-node-timeout 15000:節點超時時間
3. 創建集群
方式一:直接批量創建,每個主節點帶1個從節點。前面3個MASTER,后面3個SLAVE,但是不能指定具體的主從關系
redis-cli --cluster create 192.168.25.132:6379 192.168.25.133:6379 192.168.25.134:6379 192.168.25.132:6380 192.168.25.133:6380 192.168.25.134:6380 --cluster-replicas 1方式二:先創建主節點,再添加從節點
添加主節點
redis-cli --cluster create 192.168.25.132:6379 192.168.25.133:6379 192.168.25.134:6379添加從節點
redis-cli --cluster add-node 192.168.25.132:6380 192.168.25.132:6379 --cluster-slave --cluster-master-id ef201d6460ff6fcbb0ebda02dba4df118f3b876d redis-cli --cluster add-node 192.168.25.133:6380 192.168.25.133:6379 --cluster-slave --cluster-master-id 1e78d19c63ca0c16d8c9449f72bd24baebb73b1f redis-cli --cluster add-node 192.168.25.134:6380 192.168.25.134:6379 --cluster-slave --cluster-master-id bfb7815da6b96b030a35483698967e60b79c59cd最后一個參數是主節點的ID,查看方式就是先redis-cli連上隨便一臺主節點集群,然后運行cluster nodes命令:
192.168.25.132:6379> CLUSTER NODES bfb7815da6b96b030a35483698967e60b79c59cd 192.168.25.134:6379@16379 master - 0 1611058741637 3 connected 10923-16383 1e78d19c63ca0c16d8c9449f72bd24baebb73b1f 192.168.25.133:6379@16379 master - 0 1611058739624 2 connected 5461-10922 ef201d6460ff6fcbb0ebda02dba4df118f3b876d 192.168.25.132:6379@16379 myself,master - 0 1611058740000 1 connected 0-5460操作完畢后,再次查看集群狀態,3主3從,搭建完畢:
4. 集群槽位
Redis集群有16384個槽位,每個主節點管理互不重復的槽位。
當操作某個KEY時,通過CRC16算法進行哈希計算,得出該KEY所對應的槽位,從而確定應該連接哪個節點進行操作。
基本流程如下:
5. 主節點故障問題
集群解決的就是高可用問題,思考:當其中一臺主節點掛掉之后,集群還能正常使用嗎?
redis-cli -h 192.168.25.132 -p 6379 連接成功后,執行shutdown進行關閉
此時連接其他節點,查看集群狀態:
- master 132:6379 先是處于disconnected狀態
- 過一段時間后,master 進入fail狀態
- 此時,slave 132:6380 升級成 master 節點,并繼承原先的0-5460槽位
打開132:6380的節點日志,可以更清晰地看到整個過程:
拓展:如果原主節點 132:6379 重新運行后,會怎么樣?
說做就做,直接啟動:
redis-server /usr/local/redis-5.0.8/conf/redis.conf查看集群狀態:
由此可見,此時 132:6379 大哥變小弟了,狀態是 slave 從節點
總結
以上是生活随笔為你收集整理的Redis5.0.8集群搭建与说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot+Redis防止接口
- 下一篇: linux cmake编译源码,linu