1、準備環境node
(要讓集羣正常工做至少須要3個主節點,在這裏咱們要建立6個redis節點,其中三個爲主節點,三個爲從節點,對應的redis節點的ip和端口對應關係以下)redis
node11:7000
node11:7001ruby
node11:7002服務器
node11:7003app
node11:7004ui
node11:7005spa
tar -zxvf redis-3.0.0.tar.gz3d
mv redis-3.0.0.tar.gz redis3.0server
cd /usr/local/redis3.0接口
make
make install
mkdir -p /usr/local/cluster
cd /usr/local/cluster
mkdir 7000
mkdir 7001
mkdir 7002
mkdir 7003
mkdir 7004
mkdir 7005
cp /usr/local/redis3.0/redis.conf /usr.local/cluster
vi redis.conf
##修改配置文件中的下面選項
port 7000
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
##修改完redis.conf配置文件中的這些配置項以後把這個配置文件分別拷貝到7000/7001/7002/7003/7004/7005目錄下面
cp /usr/local/cluster/redis.conf /usr/local/cluster/7000
cp /usr/local/cluster/redis.conf /usr/local/cluster/7001
cp /usr/local/cluster/redis.conf /usr/local/cluster/7002
cp /usr/local/cluster/redis.conf /usr/local/cluster/7003
cp /usr/local/cluster/redis.conf /usr/local/cluster/7004
cp /usr/local/cluster/redis.conf /usr/local/cluster/7005
##注意:拷貝完成以後要修改7001/7002/7003/7004/7005目錄下面redis.conf文件中的port參數,分別改成對應的文件夾的名稱
cd /usr/local/cluster/7000
redis-server redis.conf
cd /usr/local/cluster/7001
redis-server redis.conf
cd /usr/local/cluster/7002
redis-server redis.conf
cd /usr/local/cluster/7003
redis-server redis.conf
cd /usr/local/cluster/7004
redis-server redis.conf
cd /usr/local/cluster/7005
redis-server redis.conf
##啓動以後使用命令查看redis的啓動狀況ps -ef|grep redis
以下圖顯示則說明啓動成功
cd /usr/local/redis3.0/src
./redis-trib.rb create --replicas 1 192.168.1.160:7000 192.168.1.160:7001 192.168.1.160:7002 192.168.1.160:7003 192.168.1.160:7004 192.168.1.160:7005
執行上面的命令的時候可能會報錯,由於是執行的ruby的腳本,須要ruby的環境
錯誤內容:/usr/bin/env: ruby: No such file or directory
因此須要安裝ruby的環境,這裏推薦使用yum install ruby安裝
yum install ruby
而後再執行第7步的建立集羣命令,可能還會報錯,提示缺乏rubygems組件,使用yum安裝
錯誤內容:
./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
from ./redis-trib.rb:24
yum install rubygems
再次執行第7步的命令,可能還會報錯,提示不能加載redis,是由於缺乏redis和ruby的接口,使用gem 安裝
錯誤內容:
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from ./redis-trib.rb:25
gem install redis
再次執行第7步的命令,正常執行
輸入yes,而後配置完成。
至此redis集羣即搭建成功!
redis-cli -c -p 7000
cd /usr/local/cluster/
mkdir 7006
cp /usr/local/cluster/redis.conf /usr/local/cluster/7006/
cd /usr/local/cluster/7006/
vi redis.conf
##修改redis.conf中的port參數的值爲7006
redis-server redis.conf
cd /usr/local/redis3.0/src/
./redis-trib.rb add-node 192.168.1.160:7006 192.168.1.160:7000
把這個節點變成主節點,使用redis-trib程序,將集羣中的某些哈希槽移動到新節點裏面, 這個新節點就成爲真正的主節點了。
執行下面的命令對集羣中的哈希槽進行移動
而後還須要指定把這些哈希槽轉移到哪一個節點上
輸入咱們剛纔新增的節點的ID
830d7afff64fce647589d7bf0b57437e0b5e22da
而後須要咱們指定轉移哪幾個節點的哈希槽
輸入all 表示從全部的主節點中隨機轉移,湊夠1000個哈希槽
而後再輸入yes,redis集羣就開始分配哈希槽了。
至此,一個新的主節點就添加完成了,執行命令查看如今的集羣中節點的狀態
redis-cli -c -p 7000 cluster nodes
前面咱們已經把這個新節點添加到集羣中了,如今咱們要讓新節點成爲192.168.1.160:7001的從節點,只須要執行下面的命令就能夠了,命令後面的節點ID就是192.168.1.160:7001的節點ID
redis-cli -c -p 7006 cluster replicate 0b00721a509444db793d28448d8f02168b94bd38
使用下面命令來確認一下192.168.1.160:7006是否已經成爲192.168.1.160:7001的從節點
redis-cli -p 7000 cluster nodes | grep slave | grep 0b00721a509444db793d28448d8f02168b94bd38
1:若是刪除的節點是主節點,這裏咱們刪除192.168.1.160:7006節點,這個節點有1000個哈希槽
首先要把節點中的哈希槽轉移到其餘節點中,執行下面的命令
cd /usr/local/redis3.0/src ./redis-trib.rb reshard 192.168.1.160:7000 |
系統會提示咱們要移動多少哈希槽,這裏移動1000個,由於192.168.1.160:7006節點有1000個哈希槽
而後系統提示咱們輸入要接收這些哈希槽的節點的ID,這裏使用192.168.1.160:7001的節點ID
而後要咱們選擇從那些節點中轉出哈希槽,這裏必定要輸入192.168.1.160:7006這個節點的ID,最後輸入 done 表示輸入完畢
最後一步,使用下面的命令把這個節點刪除
cd /usr/local/redis3.0/src/ ./redis-trib.rb del-node 192.168.1.160:7000 須要刪除的節點ID |
2:若是節點是從節點的,直接使用下面的命令刪除便可。
cd /usr/local/redis3.0/src/ ./redis-trib.rb del-node 192.168.1.160:7000 須要刪除的節點ID |