linux 部署redis集羣 碰到的坑

1:
/usr/lib/ruby/gems/1.8/gems/redis-3.0.7/lib/redis/client.rb:97:in `call': ERR Slot 16011 is already busy (Redis::CommandError)
這是因爲上一次配置集羣失敗時留下的配置信息致使的。只要把redis.conf中定義的 cluster-config-file 所在的文件刪除,從新啓動redis-server及運行redis-trib便可。linux

2:
/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- redis (LoadError)
from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/bin/redis-trib.rb:25:in `<main>'redis

碰到這個問題咱們須要經過gem在ruby中安裝redis軟件包
gem install redis(Gem是一個管理Ruby庫和程序的標準包,它經過Ruby Gem(如 http://rubygems.org/ )源來查找、安裝、升級和卸載軟件包,很是的便捷。)ruby

3:
/usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis/connection/ruby.rb:111:in `rescue in _write_to_socket': Connection timed out (Redis::TimeoutError) 
gem list
gem uninstall redis --version 3.3.2
gem install redis --version 3.0.0
gem listcurl

檢查ruby中的redis版本是否是和你的redis版本一致socket

4:測試

redis集羣搭建好之後測試集羣是否成功,ui

redis01/redis-cli -h ip -p 7001 –c
說明:-h+host –p+端口號 –c 是要鏈接集羣,
能夠看到鏈接的是7001的節點,set  name的時候計算了存在哪一個hash槽上,會跳轉到那個槽對應的節點。注意必定要加(-c)否則的話集羣的其餘機器鏈接的話會報錯url

下面是在linux中安裝ruby的方式:(因爲linux的集羣啓動須要經過redis-trib.rb啓動)注意redis集羣須要redis的版本在3.0+以上版本
yum -y install ruby ruby-devel rubygems rpm-build
使用ruby -v查看發現版本是2.0.0,仍是搭建redis集羣
ruby -v
ruby 2.0.0p648 (2015-12-16) [x86_64-linux]
暫時沒有查到如何直接升級,只能使用源碼包方式進行安裝
1.下載源碼包
wget https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.gz
下載失敗提示Unable to establish SSL connection.
curl -O -L https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.gz
2.解壓並編譯安裝
tar xf ruby-2.2.7.tar.gz
cd ruby-2.2.7
./configure --prefix=/usr/local/ruby-2.2.7
make && make install
3.建立快捷鍵
須要先刪除舊的快捷方式從新建立
ln -s /usr/local/ruby-2.2.7/bin/ruby /usr/bin/ruby
ruby -v
ruby 2.2.7p470 (2017-03-28 revision 58194) [x86_64-linux]server

相關文章
相關標籤/搜索