簡單的 說一下單機版的redis 安裝
yum install gcc-c++
通過wget下載redis
wget http://download.redis.io/releases/redis-3.0.7.tar.gz
解壓,並進入
tar -zxvf redis-3.0.7.tar.gz
cd redis-3.0.7
進入目錄並且編譯
make
make PREFIX=/usr/local/redis install
修改配置啓動後端啓動
cp redis.conf /usr/local/redis/
cd /usr/local/redis/
vim redis.conf
把daemonize no 改爲daemonizeyes
後端啓動
./bin/redis-server ./redis.conf
關閉
./bin/redis-cli shutdown
./bin/redis-cli
redis 集羣安裝
1.在usr/local/下創建redis-cluster目錄
cd /usr/local
mkdir redis-cluster
2.把經過編譯的redis 單機版代碼copy 6份放入redis-cluster
cp ./redis ./redis-cluster/redis01
cp ./redis ./redis-cluster/redis02
cp ./redis ./redis-cluster/redis03
cp ./redis ./redis-cluster/redis04
cp ./redis ./redis-cluster/redis05
cp ./redis ./redis-cluster/redis06
cd ./redis-cluster
就有了一下目錄
cd ./redis01
修改各個redis中的redis.conf
daemonize yes //redis後臺運行
pidfile /var/run/redis_8000.pid //pidfile文件對應8001,8001,8002
port 8001 //端口8001,8001,8002
cluster-enabled yes //開啓集羣 把註釋#去掉
cluster-config-file nodes_8001.conf //集羣的配置 配置文件首次啓動自動生成 8001,8001,8002
cluster-node-timeout 5000 //請求超時 設置5秒夠了
appendonly yes //aof日誌開啓 有需要就開啓,它會每次寫操作都記錄一條日誌
現在就是啓動各個節點,由於比較麻煩寫了個sh
chomd +x start.sh
執行
./start.sh
以上就是順利的
接下就是坑了,使用redis-trib.rb 執行
./redis-trib.rb create --replicas 1 119.23.53.71:8001 119.23.53.71:8002 119.23.53.71:8003 119.23.53.71:8004 119.23.53.71:8005 119.23.53.71:8006
1.報了個錯大概的意思就是沒有安裝redis-trib.rb
/usr/bin/env: ruby
2.安裝ruby
yum install -y rubygems //安裝rubygem
gem install redis //安裝redis的接口包
gem list
3.再看
發現還是不行,有些坑多沒有截圖
4.這是我最多遇到最大的坑
其中 gem install redis命令執行時出現了:
redis requires Ruby version >= 2.2.2的報錯,查了資料發現是Centos默認支持ruby到2.0.0,可gem 安裝redis需要最低是2.2.2
看了很多的博文多沒有解決,狠下心看官網,一個一個英語單詞翻譯
解決辦法是 先安裝rvm,再把ruby版本提升至2.3.7
1.安裝RVM:
依賴包:
yum install gcc-c++ patch readline readline-devel zlib zlib-devel
yum install libyaml-devel libffi-devel openssl-devel make
yum install bzip2 autoconf automake libtool bison iconv-devel sqlite-devel
curl -L get.rvm.io | bash -s stable
rvm是一個命令行工具,提供多版本ruby環境的管理和切換,還可以根據項目管理不同的gemset。
如果沒有生成ssh key,這一步可能會失敗,直接ssh-keygen生成key之後再執行安裝即可。
如果失敗的話,執行:
command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
然後再安裝一次rvm,根據安裝提示進行一些操作。然後rvm -v就能看到rvm安裝上了。
如果安裝不上,可以嘗試連接vpn後再安裝。
find / -name rvm -print
/usr/local/rvm
/usr/local/rvm/src/rvm
/usr/local/rvm/src/rvm/bin/rvm
/usr/local/rvm/src/rvm/lib/rvm
/usr/local/rvm/src/rvm/scripts/rvm
/usr/local/rvm/bin/rvm
/usr/local/rvm/lib/rvm
/usr/local/rvm/scripts/rvm
source /usr/local/rvm/scripts/rvm
3.安裝一個ruby版本
rvm install 2.3.7
4.使用一個ruby版本
rvm use 2.3.7
Using /usr/local/rvm/gems/ruby-2.3.7
[5].設置默認版本
rvm use 2.3.7 --default
Using /usr/local/rvm/gems/ruby-2.3.7
再次執行
./redis-trib.rb create --replicas 1 119.23.53.71:8001 119.23.53.71:8002 119.23.53.71:8003 119.23.53.71:8004 119.23.53.71:8005 119.23.53.71:8006
[root@izwz9bce7z6ans22hjxewqz redis-cluster]# ./redis-trib.rb create --replicas 1 119.23.53.71:8001 119.23.53.71:8002 119.23.53.71:8003 119.23.53.71:8004 119.23.53.71:8005 119.23.53.71:8006
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
119.23.53.71:8001
119.23.53.71:8002
119.23.53.71:8003
Adding replica 119.23.53.71:8004 to 119.23.53.71:8001
Adding replica 119.23.53.71:8005 to 119.23.53.71:8002
Adding replica 119.23.53.71:8006 to 119.23.53.71:8003
M: c30f5878419fcc3522137e898024e38e460fe7a2 119.23.53.71:8001
slots:0-5460 (5461 slots) master
M: 0e3e98b40909158de8d24719b62d5bebecd19f40 119.23.53.71:8002
slots:5461-10922 (5462 slots) master
M: 649d9aa4641304184387b2a0fb9c2b433e45a400 119.23.53.71:8003
slots:10923-16383 (5461 slots) master
S: cbd0dfa30cbd357b732ce51e1d21280b5df5a8c1 119.23.53.71:8004
replicates c30f5878419fcc3522137e898024e38e460fe7a2
S: a1fc1e2409cd4b741840eb7c99929897b1a0b784 119.23.53.71:8005
replicates 0e3e98b40909158de8d24719b62d5bebecd19f40
S: 139b5b27c58e7638dd871d2936f0fa8cd8759d8a 119.23.53.71:8006
replicates 649d9aa4641304184387b2a0fb9c2b433e45a400
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..........................................................................................................................................................................................................................................................................................
就會停在join
這裏就有幾種情況
1.你對應的端口沒有打開例如8001
2.你對應的總集端口沒有打開比如我的端口爲8001那麼你還要打開18001 端口沒有打開
3.你對應的安全組沒有設置
設置了這些,在次執行,
[root@izwz9bce7z6ans22hjxewqz redis-cluster]# ./redis-trib.rb create --replicas 1 119.23.53.71:8001 119.23.53.71:8002 119.23.53.71:8003 119.23.53.71:8004 119.23.53.71:8005 119.23.53.71:8006
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
119.23.53.71:8001
119.23.53.71:8002
119.23.53.71:8003
Adding replica 119.23.53.71:8004 to 119.23.53.71:8001
Adding replica 119.23.53.71:8005 to 119.23.53.71:8002
Adding replica 119.23.53.71:8006 to 119.23.53.71:8003
M: c30f5878419fcc3522137e898024e38e460fe7a2 119.23.53.71:8001
slots:0-5460 (5461 slots) master
M: 0e3e98b40909158de8d24719b62d5bebecd19f40 119.23.53.71:8002
slots:5461-10922 (5462 slots) master
M: 649d9aa4641304184387b2a0fb9c2b433e45a400 119.23.53.71:8003
slots:10923-16383 (5461 slots) master
S: cbd0dfa30cbd357b732ce51e1d21280b5df5a8c1 119.23.53.71:8004
replicates c30f5878419fcc3522137e898024e38e460fe7a2
S: a1fc1e2409cd4b741840eb7c99929897b1a0b784 119.23.53.71:8005
replicates 0e3e98b40909158de8d24719b62d5bebecd19f40
S: 139b5b27c58e7638dd871d2936f0fa8cd8759d8a 119.23.53.71:8006
replicates 649d9aa4641304184387b2a0fb9c2b433e45a400
Can I set the above configuration? (type 'yes' to accept): yes
/usr/local/rvm/gems/ruby-2.3.7/gems/redis-4.0.1/lib/redis/client.rb:119:in `call': ERR Slot 0 is already busy (Redis::CommandError)
from /usr/local/rvm/gems/ruby-2.3.7/gems/redis-4.0.1/lib/redis.rb:2764:in `block in method_missing'
from /usr/local/rvm/gems/ruby-2.3.7/gems/redis-4.0.1/lib/redis.rb:45:in `block in synchronize'
from /usr/local/rvm/rubies/ruby-2.3.7/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize'
from /usr/local/rvm/gems/ruby-2.3.7/gems/redis-4.0.1/lib/redis.rb:45:in `synchronize'
from /usr/local/rvm/gems/ruby-2.3.7/gems/redis-4.0.1/lib/redis.rb:2763:in `method_missing'
from ./redis-trib.rb:212:in `flush_node_config'
from ./redis-trib.rb:775:in `block in flush_nodes_config'
from ./redis-trib.rb:774:in `each'
from ./redis-trib.rb:774:in `flush_nodes_config'
from ./redis-trib.rb:1295:in `create_cluster_cmd'
from ./redis-trib.rb:1695:in `<main>'
[root@izwz9bce7z6ans22hjxewqz redis-cluster]# ll
就會遇到此類情況
解決辦法是刪除下面對應的文件,我寫了個sh
cluster-config-file nodes_8001.conf //集羣的配置 配置文件首次啓動自動生成 8001,8001,8002
執行此shell
還需要重啓redis 各個節點
不然還會報錯
執行
./shop.sh
./start.sh
貼一下shop.sh代碼
cd redis01
./redis-cli -p 8001 shutdown
cd ..
cd redis02
./redis-cli -p 8002 shutdown
cd ..
cd redis03
./redis-cli -p 8003 shutdown
cd ..
cd redis04
./redis-cli -p 8004 shutdown
cd ..
cd redis05
./redis-cli -p 8005 shutdown
cd ..
cd redis06
./redis-cli -p 8006 shutdown
cd ..
在次執行
就沒有保錯
驗證一下