如何使用Redis搭建分佈式集羣Cent0S7
-
Redis的主從複製
在Redis4.0後擯棄了 ,因爲在主機故障時從機不能自動替換主機
-
Redis中的哨兵模式
解決了主從複製中的自動故障轉移的問題,但是沒有解決單節點壓力問題
-
Redis的集羣
同時解決了上述問題,redis3.0後開始支持集羣的搭建
-
Redis的集羣細節
-
所有的redis節點彼此互聯(PING-PONG機制),內部使用二進制協議優化傳輸速度和帶寬.
-
節點的fail是通過集羣中超過半數的節點檢測失效時才生效.
-
客戶端與redis節點直連,不需要中間proxy層.客戶端不需要連接集羣所有節點,連接集羣中任何一個可用節點即可
-
redis-cluster把所有的物理節點映射到[0-16383]slot上,cluster 負責維護node<->slot<->value
-
-
Redis的容錯細節
-
領着選舉過程是集羣中所有master參與,如果半數以上master節點與master節點通信超過(cluster-node-timeout),認爲當前master節點掛掉
-
什麼時候整個集羣不可用(cluster_state:fail),當集羣不可用時,所有對集羣的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)錯誤
-
-
注意
-
判斷一個是集羣中的節點是否可用,是集羣中的所用主節點選舉過程,如果半數以上的節點認爲當前節點掛掉,那麼當前節點就是掛掉了,所以搭建redis集羣時建議節點數最好爲奇數.
-
搭建集羣至少需要三個主節點,三個從節點,至少需要6個節點
-
-
redis集羣的開發步驟:
-
搭建ruby環境 在線安裝
yum install ruby
-
引入redis集羣的支持 redis-3.2.1.gem
安裝 gem install redis-3.2.1.gem
-
模擬集羣環境 在一臺虛擬機上啓動七臺redis
修改端口號
-
在redis.conf文件中修改如下配置
a)cluster-enabled yes //開啓集羣模式
b)cluster-config-file nodes-.conf //集羣節點配置文件
c)cluster-node-timeout 5000 //集羣節點超時時間
d)appendonly yes //開啓AOF持久化
-
準備七個文件夾 裏面分別放置redis.conf文件
例如:
每個redis.conf都要修改端口號和第4步的配置信息
-
然後將七個文件夾上傳到redis 並移動到redis文件夾裏和bin目錄同級
-
然後分別啓動六個redis服務
執行 ./redis-server …/7000/redis.conf
執行 ./redis-server …/7001/redis.conf
…
執行 ./redis-server …/7006/redis.conf
-
進入redis的源碼包 進入src目錄 將redis-trib.rb 拷貝到/usr/redis/bin目錄下(每個人放置的位置都不一樣 找到就行)
執行 cp redis-trib.rb /usr/redis/bin/
-
1一個節點一個從機 到bin目錄下 執行 下面的命令 192.168.56.208 是我的網卡IP
./redis-trib.rb create --replicas 1 192.168.56.208:7000 192.168.56.208:7001 192.168.56.208:7002 192.168.56.208:7003 192.168.56.208:7004 192.168.56.208:7005
-
查看接羣節點的狀態 隨意連接一個節點 測試
執行./redis-trib.rb check 192.168.56.208:7000
-
集羣節點的操作
-
給集羣添加一個主節點
./redis-trib.rb add-node 192.168.56.208:7006 192.168.56.208:7005
-
向集羣中添加副本節點
./redis-trib.rb add-node-slave 192.168.56.208:7006 192.168.56.208:7000
-
從集羣中刪除副本節點
./redis-trib.rb del-node 192.168.56.208:7006
-
重新分片 (重新分配slot hash槽)
./redis-trib.rb reshard 192.168.56.208:7000
-
-