昨天搭建Redis集群时,因为需要用到ruby脚本,所以直接yum install ruby
安装,但是当执行
./src/redis-trib.rb create --replicas 2 172.17.0.2:6379 172.17.0.3:6379 172.17.0.4:6379 172.17.0.5:6379 172.17.0.6:6379 172.17.0.7:6379 172.17.0.8:6379 172.17.0.9:6379 172.17.0.10:6379
这个命令时,提示:
./src/redis-trib.rb:24:in `require’: no such file to load – rubygems (LoadError)
from ./src/redis-trib.rb:24
意思是没有安装gem,于是又开始用yum install rubygems
,安装完成后,心想这下该行了吧,结果一执行,又给我报了一个这样的错:
/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 ./src/redis-trib.rb:25
……于是又上网接着搜解决方案,说是有一个redis依赖的gem包缺失,需要安装才行,执行gem install redis
即可,于是我就乖乖执行这句命令,结果又给我报一个:
ERROR: Error installing redis:
redis requires Ruby version >= 2.3.0.
此时我内心已经奔溃,到底有完木完???但是身为一个程序员,必须要有与二进制恶势力死磕到底的精神,所以我继续上网搜索解决办法,找到了一个ruby-2.2.3.tar.gz
的安装包,心想这下行了吧?
结果安装到一半报错了,不明原因的死活装不上,在此不再赘述。
于是我又接着上网搜安装高版本ruby的解决方案,找到一个使用RVM
方式安装ruby和gem的方案,是使用curl下载安装的方式,但是前提是必须要有一个公钥,从网上搜了好几个版本,都会报公钥验证错误,总之就是没法闹!
正当我在放弃和自尽之间犹豫不决时,突然找到了菜鸟教程里的ruby安装方法,艾玛,简直是救命稻草。里面说的又详尽又清晰,关键是RVM的安装方法终于管用了!
献上文章地址:Ruby 安装 - Linux
这次公钥终于验证通过了,成功安装了RVM,之后又用RVM成功安装了ruby新版本(同时rmv会自动安装对应的gem),再执行
gem install redis
也顺利完成,这下该有的都有了,应该没问题了吧?
再次执行./src/redis-trib.rb create --replicas 2 172.17.0.2:6379 172.17.0.3:6379 172.17.0.4:6379 172.17.0.5:6379 172.17.0.6:6379 172.17.0.7:6379 172.17.0.8:6379 172.17.0.9:6379 172.17.0.10:6379
报了一个这样的错
[ERR] Node 172.17.0.3:6379 is not configured as a cluster node.
嗯……不错,终于是集群内部的问题,而不再是ruby的问题了!
原来是因为修改reids.conf集群配置后没有重启redis服务器的关系,重启一下redis,果然:
Using 3 masters:
172.17.0.2:6379
172.17.0.3:6379
172.17.0.4:6379
Adding replica 172.17.0.5:6379 to 172.17.0.2:6379
Adding replica 172.17.0.6:6379 to 172.17.0.2:6379
Adding replica 172.17.0.7:6379 to 172.17.0.3:6379
Adding replica 172.17.0.8:6379 to 172.17.0.3:6379
Adding replica 172.17.0.9:6379 to 172.17.0.4:6379
Adding replica 172.17.0.10:6379 to 172.17.0.4:6379
M: 228b4e5c151f37e5b085b2ea5c9189e2c1c5df20 172.17.0.2:6379
slots:0-5460 (5461 slots) master
M: ba4d98c0d78f5d0476de1f304298839ad13ed82d 172.17.0.3:6379
slots:5461-10922 (5462 slots) master
M: f754b215a40de787e4310950950061aba500e131 172.17.0.4:6379
slots:10923-16383 (5461 slots) master
S: 9a25ae50560b2fc3caae00a0b07aabab386fdd42 172.17.0.5:6379
replicates 228b4e5c151f37e5b085b2ea5c9189e2c1c5df20
S: c9d6e176f259b633fe4e401d4ecb84d3a04b48c3 172.17.0.6:6379
replicates 228b4e5c151f37e5b085b2ea5c9189e2c1c5df20
S: ca6ef6cefbf05d46e4d924899781a18072113808 172.17.0.7:6379
replicates ba4d98c0d78f5d0476de1f304298839ad13ed82d
S: 720e4ea5eaedeb6f67bfeac52605c8cc1a8d96ce 172.17.0.8:6379
replicates ba4d98c0d78f5d0476de1f304298839ad13ed82d
S: ed7389185864bae82b5ad7987c1042e81040c7b4 172.17.0.9:6379
replicates f754b215a40de787e4310950950061aba500e131
S: 9e1e260dac06888c73868b3431e9b1f36fa6fd87 172.17.0.10:6379
replicates f754b215a40de787e4310950950061aba500e131
……呼……这次真的没问题了,长出一口气,搞定!