開始部署之前,務必先看最后一條
- 從官網(wǎng)下載和編譯redis安裝包
$ wget http://download.redis.io/releases/redis-3.2.5.tar.gz
$ tar xzf redis-3.2.5.tar.gz
$ cd redis-3.2.5
$ make
- 配置redis
創(chuàng)建redis.conf, 內容如下
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
如果你不想做持久化的話,appendonly yes 改為 appendonly no,假設我們部署3個redis nodes, 那么需要創(chuàng) 建6個redis實例,其中3個node為master另外3個nodes的slave;
mkdir cluster-test
cd cluster-test
mkdir 7000 7001 7002 7003 7004 7005
將redis.conf分別拷貝一份到這6個文件夾下,保證這6個目錄下的redis.conf的port 分別為7000~7005
- 啟動所有redis實例
分別進入六個目錄,啟動相應的redis-server
cd 7000
../redis-server ./redis.conf
cd ../7001
../redis-server ./redis.conf
cd ../7002
../redis-server ./redis.conf
cd ../7003
../redis-server ./redis.conf
cd ../7004
../redis-server ./redis.conf
cd ../7005
../redis-server ./redis.conf
- 安裝redis-trib.rb運行環(huán)境
redis-trib.rb是ruby代碼,所以先要安裝ruby
yum install ruby
gem install redis -- 安裝redis依賴
因為墻的問題,gem install redis 可能會失敗,改用國內的源
gem sources --remove https://rubygems.org/ 刪掉原來的源
gem sources -a https://gems.ruby-china.com/ 改用國內的源
gem sources -l 查看現(xiàn)有的源
gem install redis 安裝redis依賴
- 創(chuàng)建集群
./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
- 注意的地方
使用redis-trib.rb構建集群,完成前不要配置密碼
集群構建完再通過config set + config rewrite命令逐個實例設置密碼
對集群設置密碼,requirepass和masterauth都需要設置
-
各個節(jié)點密碼都必須一致,否則Redirected就會失敗
config set masterauth yourpasswd config set requirepass yourpasswd auth yourpasswd config rewrite
-
如果提示一下錯誤,那么是redis依賴版本錯誤,移除當前redis依賴,安裝指定版本即可
/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) from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis/connection/ruby.rb:104:in `_write_to_socket' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis/connection/ruby.rb:131:in `block in write' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis/connection/ruby.rb:130:in `loop' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis/connection/ruby.rb:130:in `write' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis/connection/ruby.rb:374:in `write' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis/client.rb:271:in `block in write' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis/client.rb:250:in `io' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis/client.rb:269:in `write' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis/client.rb:228:in `block (3 levels) in process' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis/client.rb:222:in `each' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis/client.rb:222:in `block (2 levels) in process' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis/client.rb:367:in `ensure_connected' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis/client.rb:221:in `block in process' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis/client.rb:306:in `logging' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis/client.rb:220:in `process' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis/client.rb:120:in `call' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis.rb:2705:in `block in method_missing' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis.rb:58:in `block in synchronize' from /usr/local/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis.rb:58:in `synchronize' from /usr/local/lib/ruby/gems/2.3.0/gems/redis-3.3.2/lib/redis.rb:2704:in `method_missing' from ./redis-trib.rb:212:in `flush_node_config' from ./redis-trib.rb:776:in `block in flush_nodes_config' from ./redis-trib.rb:775:in `each' from ./redis-trib.rb:775:in `flush_nodes_config' from ./redis-trib.rb:1296:in `create_cluster_cmd' from ./redis-trib.rb:1701:in `
那就gem刪除 redis-3.3.2 插件版本,改用3.0.0
gem list gem uninstall redis --version 3.3.2 gem install redis --version 3.0.0 gem list
(轉載至我另外一個博客 redis集群部署以及一些坑)