Redis叢集,重要!重要!!重要!!!
redis-cluster架構圖
架構細節:
- 所有的redis節點彼此互聯(PING-PONG機制),內部使用二進位制協議優化傳輸速度和頻寬;
- 節點的fail是通過叢集中超過半數的節點檢查失效時才生效;
- 客戶端與redis節點直連,不需要中間proxy層,客戶端不需要連線叢集所有的節點,連線叢集中任何一個可用節點即可;
-
redis-cluster把所有的物理節點對映到[0-16383]slot上,cluster 負責維護
node<->slot<->value
redis-cluster投票:容錯
- 叢集中所有master參與投票,如果半數以上master節點與其中一個master節點通訊超過(cluster-node-timeout),認為該master節點掛掉.
- 什麼時候整個叢集不可用(cluster_state:fail)?
- 如果叢集任意master掛掉,且當前master沒有slave,則叢集進入fail狀態。也可以理解成叢集的[0-16383]slot對映不完全時進入fail狀態。
- 如果叢集超過半數以上master掛掉,無論是否有slave,叢集進入fail狀態。
安裝ruby
- 叢集管理工具(redis-trib.rb)是使用ruby指令碼語言編寫的。
第一步:安裝ruby
[[email protected] bin2]# yum install ruby
[[email protected] bin2]# yum install rubygems
第二步:將以下檔案上傳到linux系統
第三步:安裝ruby和redis介面
[[email protected] ~]# gem install redis-3.0.0.gem
第四步:將redis-3.0.0包下src目錄中的以下檔案拷貝到redis19/redis-cluster/
[[email protected] src]# cd /usr/local/redis19/
[[email protected] redis19]# mkdir redis-cluster
[[email protected] redis19]# cd /root/redis-3.0.0/src/
[[email protected] src]# cp redis-trib.rb /usr/local/redis19/redis-cluster
第五步:檢視是否拷貝成功
搭建叢集
- 搭建叢集最少也得需要3臺主機,如果每臺主機再配置一臺從機的話,則最少需要6臺機器。
埠設計如下:7001-7006
第一步:複製出一個7001機器
[[email protected] redis19]# cp bin ./redis-cluster/7001 –r
第二步:如果存在持久化檔案,則刪除
[[email protected] 7001]# rm -rf appendonly.aof dump.rdb
第三步:設定叢集引數
第四步:修改埠
第五步:複製出7002-7006機器
[[email protected] redis-cluster]# cp 7001/ 7002 -r
[[email protected] redis-cluster]# cp 7001/ 7003 -r
[[email protected] redis-cluster]# cp 7001/ 7004 -r
[[email protected] redis-cluster]# cp 7001/ 7005 -r
[[email protected] redis-cluster]# cp 7001/ 7006 –r
第六步:修改7002-7006機器的埠
第七步:啟動7001-7006這六臺機器
第八步:修改start-all.sh檔案的許可權
[[email protected] redis-cluster]# chmod u+x start-all.sh
[[email protected] redis-cluster]# ./start-all.sh
第九步:建立叢集
[[email protected] redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.242.137:7001 192.168.242.137:7002 192.168.242.137:7003 192.168.242.137:7004 192.168.242.137:7005 192.168.242.137:7006 >>> Creating cluster Connecting to node 192.168.242.137:7001: OK Connecting to node 192.168.242.137:7002: OK Connecting to node 192.168.242.137:7003: OK Connecting to node 192.168.242.137:7004: OK Connecting to node 192.168.242.137:7005: OK Connecting to node 192.168.242.137:7006: OK >>> Performing hash slots allocation on 6 nodes... Using 3 masters: 192.168.242.137:7001 192.168.242.137:7002 192.168.242.137:7003 Adding replica 192.168.242.137:7004 to 192.168.242.137:7001 Adding replica 192.168.242.137:7005 to 192.168.242.137:7002 Adding replica 192.168.242.137:7006 to 192.168.242.137:7003 M: 8240cd0fe6d6f842faa42b0174fe7c5ddcf7ae24 192.168.242.137:7001 slots:0-5460 (5461 slots) master M: 4f52a974f64343fd9f1ee0388490b3c0647a4db7 192.168.242.137:7002 slots:5461-10922 (5462 slots) master M: cb7c5def8f61df2016b38972396a8d1f349208c2 192.168.242.137:7003 slots:10923-16383 (5461 slots) master S: 66adf006fed43b3b5e499ce2ff1949a756504a16 192.168.242.137:7004 replicates 8240cd0fe6d6f842faa42b0174fe7c5ddcf7ae24 S: cbb0c9bc4b27dd85511a7ef2d01bec90e692793b 192.168.242.137:7005 replicates 4f52a974f64343fd9f1ee0388490b3c0647a4db7 S: a908736eadd1cd06e86fdff8b2749a6f46b38c00 192.168.242.137:7006 replicates cb7c5def8f61df2016b38972396a8d1f349208c2 Can I set the above configuration? (type 'yes' to accept): yes >>> Nodes configuration updated >>> Assign a different config epoch to each node >>> Sending CLUSTER MEET messages to join the cluster Waiting for the cluster to join.. >>> Performing Cluster Check (using node 192.168.242.137:7001) M: 8240cd0fe6d6f842faa42b0174fe7c5ddcf7ae24 192.168.242.137:7001 slots:0-5460 (5461 slots) master M: 4f52a974f64343fd9f1ee0388490b3c0647a4db7 192.168.242.137:7002 slots:5461-10922 (5462 slots) master M: cb7c5def8f61df2016b38972396a8d1f349208c2 192.168.242.137:7003 slots:10923-16383 (5461 slots) master M: 66adf006fed43b3b5e499ce2ff1949a756504a16 192.168.242.137:7004 slots: (0 slots) master replicates 8240cd0fe6d6f842faa42b0174fe7c5ddcf7ae24 M: cbb0c9bc4b27dd85511a7ef2d01bec90e692793b 192.168.242.137:7005 slots: (0 slots) master replicates 4f52a974f64343fd9f1ee0388490b3c0647a4db7 M: a908736eadd1cd06e86fdff8b2749a6f46b38c00 192.168.242.137:7006 slots: (0 slots) master replicates cb7c5def8f61df2016b38972396a8d1f349208c2 [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. [[email protected] redis-cluster]# |
連線叢集
[[email protected] 7001]# ./redis-cli -h 192.168.242.137 -p 7001 –c
-c:指定是叢集連線
- 檢視叢集資訊
- 檢視叢集資訊
|
3.檢視叢集節點
|