阿里雲centos7 安裝redis集羣踩過的坑

簡單的 說一下單機版的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 ..

在次執行

就沒有保錯

驗證一下


ok,完了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章