执行redis-trib.rb时遇到的问题

redis-trib.rb是Redis Cluster的一个常用工具。下面记录了执行此命令时遇到的一系列错误。

redis-trib.rb create --replicas 1  127.0.0.1:7379 127.0.0.1:7380 127.0.0.1:7381 127.0.0.1:7382 127.0.0.1:7383 127.0.0.1:7384 /usr/bin/env: ruby: 没有那个文件或目录

看来是ruby没有安装,于是执行:

yum install -y ruby    //安装ruby

后面继续报错:
redis-trib.rb create --replicas 1  127.0.0.1:7379 127.0.0.1:7380 127.0.0.1:7381 127.0.0.1:7382 127.0.0.1:7383 127.0.0.1:7384
redis-trib.rb:24:in `require‘: no such file to load -- rubygems (LoadError)         from src/redis-trib.rb:24

ruby安装成功,但是rubygem没有安装,所以导致了上述错误,于是继续:

yum install -y rubygems        //安装rubygem 
再看:
redis-trib.rb create --replicas 1  127.0.0.1:7379 127.0.0.1:7380 127.0.0.1:7381 127.0.0.1:7382 127.0.0.1:7383 127.0.0.1:7384 /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

rubygem安装成功,但是新的错误又出现了。google了一下,发现是ruby版本太低了。yum安装的版本是1.8.7,但是redis需要的是1.9.3或者更高,于是升级ruby版本到1.9.3.

curl -L get.rvm.io | bash -s stable source /etc/profile.d/rvm.sh        //安装rvm
rvm install 1.9.3            //安装ruby1.9.3
rvm use 1.9.3 --default            //设置ruby1.9.3为默认的ruby,因为还安装有1.8.3 
再看:
gem install redis ERROR:  Could not find a valid gem ‘redis‘ (>= 0), here is why:
Unable to download data from https://rubygems.org/ - Errno::ETIMEDOUT: Connection timed out - connect(2) (https://api.rubygems.org/latest_specs.4.8.gz) ERROR:  Possible alternatives: redis
又遇到新的错误了,看来是连接gem源出错了,于是增加新的gem源:
gem sources -a http://ruby.taobao.org/        //添加淘宝的gem源

然后”gem install redis“执行成功,之后的”redis-trib.rb create ......“也ok了。

BTW:其实ruby1.8.7也支持redis-trib.rb,也就是说在ruby1.8.7上执行”redis-trib.rb create ......“时出现的错误是由于没有安装针对redis的gem包,所以只要成功执行”gem install redis"即可。不过不建议使用ruby1.8.7,因为这个版本有点老了,使用rvm安装ruby1.8.7时,提示对此版本已经不提供支持了。

------------------------我是华丽的分隔线----------------------------

其实redis集群跑不起来这个原因还是ruby没安装好,可以直接尝试重装ruby.

以下有个linux下安装ruby的步骤:

http://www.runoob.com/ruby/ruby-installation-unix.html

时间: 2024-10-15 13:37:58

执行redis-trib.rb时遇到的问题的相关文章

redis-trib.rb创建Redis集群时失败报错解决方案

问题描述: [[email protected] init.d]# redis-trib.rb create --replicas 1 192.168.1.110:7001 192.168.1.110:7002 192.168.1.112:7003 192.168.1.112:7004 192.168.1.113:7005 192.168.1.113:7006 /usr/local/ruby/lib/ruby/gems/2.3.0/gems/redis-3.3.0/lib/redis/clien

./redis-trib.rb 报错:/usr/local/rvm/gems/ruby-2.4.2/gems/redis-4.0.1/lib/redis/client.rb:119:in `call': ERR Slot 0 is already busy (Redis::CommandError)

错误提示是 slot插槽被占用了(这是 搭建集群前时,以前redis的旧数据和配置信息没有清理干净.) 解决方案是 用redis-cli 登录到每个节点执行  flushall  和 cluster reset  就可以了. 然后重新执行群集脚本命令: ./redis-trib.rb create --replicas 1 192.168.*.*:7001 192.168.*.*:7002 192.168.*.*:7003 192.168.*.*:7004 192.168.*.*:7005  1

CEPH-DEPLOY INSTALL时,远端节点在执行APT-GET UPDATE命令时失败

环境 OS:Ubuntu 16.04 背景 使用ceph-deploy部署Ceph集群,调用ceph-deploy install命令在远端节点安装ceph环境,执行apt-get update命令时失败. Err:1 http://mirrors.163.com/ubuntu xenial InRelease Temporary failure resolving 'mirrors.163.com' 分析 ceph-deploy的原理,就是ssh免密码登录到远端节点,然后执行各种命令.和刚才的

[转]Windows中的命令行提示符里的Start命令执行路径包含空格时的问题

转自:http://www.x2009.net/articles/windows-command-line-prompt-start-path-space.html 当使用Windows 中的命令行提示符执行这段指令时(测试Start命令执行带空格的路径的程序或文件问题),第一行Start会成功执行,跳出记事本程序,而第二行,会 Start跳出一个新的命令提示符,标题上写着路径,但是不会执行任何命令,第三行Start命令行提示符会提示C:\Program文件不存在,提示无 法执行. start

在执行ab压力测试时出现socket: Too many open files (24)的解决方法

当入行压力测试时出现下列错误 [[email protected] ~]# ab -n 3000 -c 3000 http://192.168.0.2/This is ApacheBench, Version 2.3 <$Revision: 655654 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, htt

当执行构建步骤“qmake”时

有时我们在导入别人的QT项目时,点击编译,会提示“构建***项目发生错误,当执行构建步骤“qmake”时”,这是因为我们在导入项目的时候没有指定qt版本的原因,只需选择项目选项,如下图 然后选择相应的qt版本,并把构建目录改成你现在用的目录就可以了.

执行nova-manage db sync时出错,提示’Specified key was too long; max key length is 1000 bytes’

执行nova-manage db sync时出错: 2012-03-24 14:07:01 CRITICAL nova [-] (OperationalError) (1071, ‘Specified key was too long; max key length is 1000 bytes’) ‘\nCREATE TABLE user_project_association (\n\tcreated_at DATETIME, \n\tupdated_at DATETIME, \n\tdele

oracle Plsql 执行update或者delete时卡死问题解决办法

oracle Plsql 执行update或者delete时 遇到过Plsql卡死问题或者导致代码执行sql的时候就卡死. 在开发中遇到此问题的时候,本来把sql复制出来,在plsql中执行,Sql本身拼写无误,但是出现plsql卡死的情况, 在代码中,执行sql的地方打断点debug,发现执行sql,仍然没有响应.经过网上查资料,猜测导致这种情况的原因是 可能在PLSQL Developer执行update时没有commit,oracle将该条记录锁住了. 可以通过以下办法解决: 先查询锁定记

如何找回执行页内操作时的错误机械硬盘的文件

执行页内操作时的错误说明这个盘的文件系统结构损坏了.在平时如果数据不重要,那么可以直接格式化就能用了.但是有的时候里面的数据很重要,那么就必须先恢复出数据再格式化.具体恢复方法可以看正文了解(不格式化的恢复方法) 工具/软件:AuroraDataRecovery 步骤1:先下载并解压软件运行后,直接双击需要恢复的分区,然后右击软件图标选择<以管理员身份运行> 步骤2:程序运行后,直接双击需要恢复数据的盘 步骤3:软件找出文件后,会放到与要恢复盘同名的目录中 步骤4:将需要恢复的资料勾选,然后点

使用redis-py的两个类Redis和StrictRedis时遇到的坑

使用redis-py的两个类Redis和StrictRedis时遇到的坑 前言: 今天产品经理说,有几个队列排序的功能不能用了.对比了下以前的代码查到了一个原因,这个比较的坑,总结起来也是自己没好好看文档. redis-py提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令(比如,SET命令对应与StrictRedis.set方法).Redis是StrictRedis的子类,用于向后兼容旧版本的redis-