redis3.0集群详细部署过程
2017-04-20 15:06
549 查看
本文参考:
http://songhe.blog.51cto.com/9457084/1686402
http://blog.csdn.net/xu470438000/article/details/42971091
2. 集群不支持处理多个键的命令,因为这需要在Redis节点间移动数据,使得 Redis集群不能提供像Redis单点那样的性能,在高负载下会表现得不可预知。
3. 集群可在多个节点间自动拆分数据集。
当部分节点正在经历失败或者不能与集群其他节点通信时可继续运转
4 Redis集群不保证数据强一致性。
redis-server 集群以哈希槽的方式存放数据(目前最大是 16384 个哈希槽)
5. redis集群 通过failover选举方式进行容错,保证一台Server挂了还能跑,这个选举是全部集群超 过半数以上的Master发现其他Master挂了后,会将其他对应的Slave节点升级成Master.
6. cluster环境下redis的slave不接受任何读写操作
7. 从节点挂掉或失效,不需要进行failover,redis cluster能正常提供服务;主节点挂掉或失效需要进行failover。另外,redis cluster还支持manual failover,即人工进行failover,产从节点变为主节点,即使主节点还活着。下面将介绍这两种类型的failover。
依赖包
yum -y install ruby ruby-devel rubygems rpm-build
gem install redis
安装:
S1和S2
tar -zxvf redis-3.0.0-rc2.tar.gz
cd redis-3.0.0-rc2
make MALLOC=libc && make install
规划节点:
S1,S2分别运行3个节点
s1:
mkdir /usr/local/redis_cluster
cd /usr/local/redis_cluster
mkdir 7000 7001 7002
s2 :
mkdir /usr/local/redis_cluster
cd /usr/local/redis_cluster
mkdir 7003 7005 7004
创建配置节点:
先把redis.conf文件拷贝到/usr/local/redis_cluster下
cp /usr/local/redis-3.0.3/redis.conf /usr/local/redis_cluster/7000
vim /usr/local/redis_cluster/7000
daemonize yes
pidfile /var/run/redis_7000.pid pidfile文件对应端口号
port 7000 端口7000
cluster-enabled yes 开启集群功能
cluster-config-file nodes.conf 指定集群的配置文件
cluster-node-timeout 5000 节点请求超时
appendonly yes 开启aof日志
cp /usr/local/redis_cluster/7000/redis.conf /usr/local/redis_cluster/700X
分别复制redis.conf配置文件到各节点存放的目录 并修改端口号和pid文件
以配置文件方式启动各节点:
cd /usr/local/redis_cluster/700X/
redis-server redis.conf
配置无误启动后在各节点目录中会生成以下文件
查看一下redis监听的端口号,确定各节点正常运行
netstat -tnlp | grep redis
我们除了看到 配置文件中设置的端口700X 还有700X+10000 (1700X), 前者是客户端访问的, 后者是集群内部节点之间访问的.
Iptales配置(测试环境直接关闭)
iptables -A INPUT -p tcp --dport 700X -j ACCEPT
iptables -A INPUT -p tcp --dport 1700X -j ACCEPT
iptables -A INPUT -p tcp --dport 7000 -j ACCEPT
iptables -A INPUT -p tcp --dport 7001 -j ACCEPT
iptables -A INPUT -p tcp --dport 7002 -j ACCEPT
iptables -A INPUT -p tcp --dport 7003 -j ACCEPT
iptables -A INPUT -p tcp --dport 7004 -j ACCEPT
iptables -A INPUT -p tcp --dport 7005 -j ACCEPT
iptables -A INPUT -p tcp --dport 17000 -j ACCEPT
iptables -A INPUT -p tcp --dport 17001 -j ACCEPT
iptables -A INPUT -p tcp --dport 17002 -j ACCEPT
iptables -A INPUT -p tcp --dport 17003 -j ACCEPT
iptables -A INPUT -p tcp --dport 17004 -j ACCEPT
iptables -A INPUT -p tcp --dport 17005 -j ACCEPT
创建:
s1上:
cd /usr/local/redis/src/
./redis-trib.rb (查看集群使用的的语法)这一步搞啥没搞懂
/app/redis3.0/redis-3.0.0-rc2/src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 172.16.5.177:7005 172.16.5.177:7006 172.16.5.177:7007 127.0.0.1:7002
# --replicas 1 表示 自动为每一个master节点分配一个slave节点 上面有6个节点,redis会按照一定规则生成 3个master(主)3个slave(从),--replicas不同时只从数量也不同。
打开上s2终端:
cd /usr/local/redis_cluster/7005-7
redis-cli -c -p 7005-7
cluster meet 192.168.183.129 7000
M: 0188178f958b0598d95c7bf852aa97e79f89507b 192.168.183.129:7002
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: fbc29b05d2c0ec1a02644fddbf65d3e499ad66ec 192.168.183.131:7003
slots: (0 slots) slave
replicates 0188178f958b0598d95c7bf852aa97e79f89507b
M: c775049713a9d950bb80972ff760aa9add598728 192.168.183.129:7001
slots:10923-16383 (5461 slots) master
1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
如果出现异常,查看服务器防火墙是否关闭。
[root@localhost ~]# redis-cli -c -p 7000
127.0.0.1:7000> set gozap yunweibu
-> Redirected to slot [10865] located at 127.0.0.1:7002
OK
127.0.0.1:7002> get gozap
"yunweibu"
127.0.0.1:7002>
在s2上:
[root@localhost 7003]# redis-cli -c -p 7005 当使用参数 -c 登录后,会自动取到其它节点中的数据
127.0.0.1:7005> get gozap
-> Redirected to slot [10865] located at 192.168.183.129:7002
"yunweibu"
192.168.183.129:7002>
引入了全新的"embedded string" 对象编码方式,从而实现了更少的缓存丢失和在特定的工作负载下速度的大幅提升;
AOF重写过程中的 "last write" 操作降低了AOF child -> parent数据传输的延迟
大幅提升LRU算法的性能以用于值的失效;
WAIT命令能够阻塞传输到指定数量从节点的写操作;
实现了对MIGRATE连接缓存的支持,从而大幅提升键值迁移的性能;
为MIGARTE新增了参数:COPY和REPLACE;
CLIENT PAUSE命令实现了在指定时间内停止处理客户端请求;
提高了BITCOUNT、INCR操作的性能;
CONFIG SET能够接受不同单位的内存值,如CONFIG SET maxmemory 1gb;
调整Redis日志格式。
转自 http://blog.csdn.net/vtopqx/article/details/50235891
在用check检查集群运行状态时,遇到错误;
[root@node01 src]# ./redis-trib.rb check172.168.63.202:7000
Connecting to node 172.168.63.202:7000: OK
Connecting to node 172.168.63.203:7000: OK
Connecting to node 172.168.63.201:7000: OK
>>> Performing Cluster Check(using node 172.168.63.202:7000)
M: 449de2d2a4b799ceb858501b5b78ab91504c72e0172.168.63.202:7000
slots: (0 slots) master
0additional replica(s)
M: db9d26b1d15889ad2950382f4f32639606f9a94b172.168.63.203:7000
slots: (0 slots) master
0additional replica(s)
M: f90924f71308eb434038fc8a5f481d3661324792172.168.63.201:7000
slots: (0 slots) master
0additional replica(s)
[OK] All nodes agree about slotsconfiguration.
>>> Check for open slots...
>>> Check slots coverage...
[ERR] Not all 16384 slots are covered by nodes.
原因:
这个往往是由于主node移除了,但是并没有移除node上面的slot,从而导致了slot总数没有达到16384,其实也就是slots分布不正确。所以在删除节点的时候一定要注意删除的是否是Master主节点。
1)、官方是推荐使用redis-trib.rb fix 来修复集群…. …. 通过cluster nodes看到7001这个节点被干掉了… 那么
[b][root@node01 src]# ./redis-trib.rb fix 172.168.63.201:7001[/b]
修复完成后再用check命令检查下是否正确
[root@node01 src]# ./redis-trib.rb check172.168.63.202:7000
只要输入任意集群中节点即可,会自动检查所有相关节点。可以查看相应的输出看下是否是每个Master都有了slots,如果分布不均匀那可以使用下面的方式重新分配slot:
[root@node01 src]# ./redis-trib.rb reshard 172.168.63.201:7001
注意:在安装之前,请确保您有 root 权限。
源码安装
1 下载最新版的 Ruby 压缩文件。请点击这里下载。
2 下载 Ruby 之后,解压到新创建的目录下:
$ tar -xvzf ruby-2.2.3.tgz
$ cd ruby-2.2.3
3 现在,配置并编译源代码,如下所示:
$ ./configure
$ make
$ sudo make install
4 安装后,通过在命令行中输入以下命令来确保一切工作正常:
$ruby -v
ruby 2.2.3……
5 如果一切工作正常,将会输出所安装的 Ruby 解释器的版本,如上所示。如果您安装了其他版本,则会显示其他不同的版本。
自动安装 Ruby
如果您的计算机已经连接到 Internet,那么最简单安装 Ruby 的方式是使用 yum 或 apt-get。在命令提示符中输入以下的命令,即可在您的计算机上安装 Ruby。
$ sudo yum install ruby # CentOS, Fedora, 或 RHEL 系统
或
sudo apt-get install ruby-full # Debian 或 Ubuntu 系统
如果你是苹果系统,可以使用 brew 命令安装:
$ brew install ruby
RubyGems 旨在方便地管理 gem 安装的工具,以及用于分发 gem 的服务器。这类似于 Ubuntu 下的apt-get, Centos 的 yum,Python 的 pip。
RubyGems大约创建于2003年11月,从Ruby 1.9版起成为Ruby标准库的一部分。
如果你的 Ruby 低于 1.9 版本,也可以通过手动安装:
6 首先下载安装包:https://rubygems.org/pages/download。
7 解压并进入目录,执行命令:ruby setup.rb
更新 RubyGems 命令:
$ gem update --system # 需要管理员或root用户
Gem
Gem 是 Ruby 模块 (叫做 Gems) 的包管理器。其包含包信息,以及用于安装的文件。
Gem通常是依照".gemspec"文件构建的,包含了有关Gem信息的YAML文件。Ruby代码也可以直接建立Gem,这种情况下通常利用Rake来进行。
gem命令
gem命令用于构建、上传、下载以及安装Gem包。
gem用法
RubyGems 在功能上与 apt-get、portage、yum 和 npm 非常相似。
安装:
gem install mygem
卸载:
gem uninstall mygem
列出已安装的gem:
gem list --local
列出可用的gem,例如:
gem list --remote
为所有的gems创建RDoc文档:
gem rdoc --all
下载一个gem,但不安装:
gem fetch mygem
从可用的gem中搜索,例如:
gem search STRING --remote
gem 包的构建
gem命令也被用来构建和维护.gemspec和.gem文件。
利用.gemspec文件构建.gem:
gem build mygem.gemspec
修改国内源
由于国内网络原因(你懂的),导致 rubygems.org 存放在 Amazon S3 上面的资源文件间歇性连接失败。
所以你会与遇到 gem install rack 或 bundle install 的时候半天没有响应,具体可以用 gem install rails -V 来查看执行过程。
因此我们可以将它修改为淘宝下载源: http://ruby.taobao.org/
首先,查看当前源:
$ gem sources -l
*** CURRENT SOURCES ***
https://rubygems.org/
接着,移除https://rubygems.org/,并添加淘宝下载源 http://ruby.taobao.org/。
$ gem sources --remove https://rubygems.org/$ gem sources -a https://ruby.taobao.org/$ gem sources -l
*** CURRENT SOURCES ***
https://ruby.taobao.org# 请确保只有 ruby.taobao.org$ gem install rails
如果你使用 Gemfile 和 Bundle (例如:Rails 项目)
你可以用bundle的gem源代码镜像命令。
$ bundle config mirror.https://rubygems.org https://ruby.taobao.org
这样你不用改你的 Gemfile 的 source。
source 'https://rubygems.org/'gem 'rails', '4.1.0'...
这个异常上网查了很久才知道原因:
MOVED indicates that you're using Redis Cluster. ShardedJedis is not for Redis Cluster, so you should use JedisCluster instead. Please note that JedisCluster doesn't have pipeline mode, so you may want to send your operation one by one.
大概意思就是ShardedJedis 不能用于Redis集群,要用JedisCluster 代替ShardedJedis 才可以,而且JedisCluster 还没有pipeline 模式,所以一次只能执行一个操作
[plain] view plain copy
[root@localhost redis-cluster]# yum install ruby
[root@localhost redis-cluster]# yum install rubygems
安装redis-trib.rb运行依赖的ruby的包redis-3.2.2.gem,下载
[plain] view plain copy
[root@localhost redis-cluster]# gem install redis-3.2.2.gem
http://www.cnblogs.com/gomysql/p/4395504.html http://blog.csdn.net/dc_726/article/details/48552531 http://blog.csdn.net/huwei2003/article/details/50973967
http://songhe.blog.51cto.com/9457084/1686402
http://blog.csdn.net/xu470438000/article/details/42971091
Redis3.0集群说明:
1. Redis集群提供一种运行Redis的方式,数据被自动的分片到多个Redis节点。2. 集群不支持处理多个键的命令,因为这需要在Redis节点间移动数据,使得 Redis集群不能提供像Redis单点那样的性能,在高负载下会表现得不可预知。
3. 集群可在多个节点间自动拆分数据集。
当部分节点正在经历失败或者不能与集群其他节点通信时可继续运转
4 Redis集群不保证数据强一致性。
redis-server 集群以哈希槽的方式存放数据(目前最大是 16384 个哈希槽)
5. redis集群 通过failover选举方式进行容错,保证一台Server挂了还能跑,这个选举是全部集群超 过半数以上的Master发现其他Master挂了后,会将其他对应的Slave节点升级成Master.
6. cluster环境下redis的slave不接受任何读写操作
7. 从节点挂掉或失效,不需要进行failover,redis cluster能正常提供服务;主节点挂掉或失效需要进行failover。另外,redis cluster还支持manual failover,即人工进行failover,产从节点变为主节点,即使主节点还活着。下面将介绍这两种类型的failover。
搭建配置:
双机六节点redis节点部署
http://download.redis.io/releases/redis-3.0.3.tar.gz依赖包
yum -y install ruby ruby-devel rubygems rpm-build
gem install redis
安装:
S1和S2
tar -zxvf redis-3.0.0-rc2.tar.gz
cd redis-3.0.0-rc2
make MALLOC=libc && make install
规划节点:
S1,S2分别运行3个节点
s1:
mkdir /usr/local/redis_cluster
cd /usr/local/redis_cluster
mkdir 7000 7001 7002
s2 :
mkdir /usr/local/redis_cluster
cd /usr/local/redis_cluster
mkdir 7003 7005 7004
创建配置节点:
先把redis.conf文件拷贝到/usr/local/redis_cluster下
cp /usr/local/redis-3.0.3/redis.conf /usr/local/redis_cluster/7000
vim /usr/local/redis_cluster/7000
daemonize yes
pidfile /var/run/redis_7000.pid pidfile文件对应端口号
port 7000 端口7000
cluster-enabled yes 开启集群功能
cluster-config-file nodes.conf 指定集群的配置文件
cluster-node-timeout 5000 节点请求超时
appendonly yes 开启aof日志
cp /usr/local/redis_cluster/7000/redis.conf /usr/local/redis_cluster/700X
分别复制redis.conf配置文件到各节点存放的目录 并修改端口号和pid文件
以配置文件方式启动各节点:
cd /usr/local/redis_cluster/700X/
redis-server redis.conf
配置无误启动后在各节点目录中会生成以下文件
查看一下redis监听的端口号,确定各节点正常运行
netstat -tnlp | grep redis
我们除了看到 配置文件中设置的端口700X 还有700X+10000 (1700X), 前者是客户端访问的, 后者是集群内部节点之间访问的.
2.Redis3.0集群创建
创建集群之前先配置iptables开放redis端口:Iptales配置(测试环境直接关闭)
iptables -A INPUT -p tcp --dport 700X -j ACCEPT
iptables -A INPUT -p tcp --dport 1700X -j ACCEPT
iptables -A INPUT -p tcp --dport 7000 -j ACCEPT
iptables -A INPUT -p tcp --dport 7001 -j ACCEPT
iptables -A INPUT -p tcp --dport 7002 -j ACCEPT
iptables -A INPUT -p tcp --dport 7003 -j ACCEPT
iptables -A INPUT -p tcp --dport 7004 -j ACCEPT
iptables -A INPUT -p tcp --dport 7005 -j ACCEPT
iptables -A INPUT -p tcp --dport 17000 -j ACCEPT
iptables -A INPUT -p tcp --dport 17001 -j ACCEPT
iptables -A INPUT -p tcp --dport 17002 -j ACCEPT
iptables -A INPUT -p tcp --dport 17003 -j ACCEPT
iptables -A INPUT -p tcp --dport 17004 -j ACCEPT
iptables -A INPUT -p tcp --dport 17005 -j ACCEPT
创建:
s1上:
cd /usr/local/redis/src/
./redis-trib.rb (查看集群使用的的语法)这一步搞啥没搞懂
/app/redis3.0/redis-3.0.0-rc2/src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 172.16.5.177:7005 172.16.5.177:7006 172.16.5.177:7007 127.0.0.1:7002
# --replicas 1 表示 自动为每一个master节点分配一个slave节点 上面有6个节点,redis会按照一定规则生成 3个master(主)3个slave(从),--replicas不同时只从数量也不同。
打开上s2终端:
cd /usr/local/redis_cluster/7005-7
redis-cli -c -p 7005-7
cluster meet 192.168.183.129 7000
查看集群主从节点分配
/usr/local/redis/src/redis-trib.rb check 127.0.0.1:700XM: 0188178f958b0598d95c7bf852aa97e79f89507b 192.168.183.129:7002
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: fbc29b05d2c0ec1a02644fddbf65d3e499ad66ec 192.168.183.131:7003
slots: (0 slots) slave
replicates 0188178f958b0598d95c7bf852aa97e79f89507b
M: c775049713a9d950bb80972ff760aa9add598728 192.168.183.129:7001
slots:10923-16383 (5461 slots) master
1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
如果出现异常,查看服务器防火墙是否关闭。
集群数据同步测试;
在s1上:[root@localhost ~]# redis-cli -c -p 7000
127.0.0.1:7000> set gozap yunweibu
-> Redirected to slot [10865] located at 127.0.0.1:7002
OK
127.0.0.1:7002> get gozap
"yunweibu"
127.0.0.1:7002>
在s2上:
[root@localhost 7003]# redis-cli -c -p 7005 当使用参数 -c 登录后,会自动取到其它节点中的数据
127.0.0.1:7005> get gozap
-> Redirected to slot [10865] located at 192.168.183.129:7002
"yunweibu"
192.168.183.129:7002>
Redis 3.0版本主要新特性
官方说明:Redis 3.0版本相对于2.8版本带来的主要新特性包括:引入了全新的"embedded string" 对象编码方式,从而实现了更少的缓存丢失和在特定的工作负载下速度的大幅提升;
AOF重写过程中的 "last write" 操作降低了AOF child -> parent数据传输的延迟
大幅提升LRU算法的性能以用于值的失效;
WAIT命令能够阻塞传输到指定数量从节点的写操作;
实现了对MIGRATE连接缓存的支持,从而大幅提升键值迁移的性能;
为MIGARTE新增了参数:COPY和REPLACE;
CLIENT PAUSE命令实现了在指定时间内停止处理客户端请求;
提高了BITCOUNT、INCR操作的性能;
CONFIG SET能够接受不同单位的内存值,如CONFIG SET maxmemory 1gb;
调整Redis日志格式。
转自 http://blog.csdn.net/vtopqx/article/details/50235891
[ERR] Not all 16384 slots are covered by nodes.
早些时间公司Redis集群环境的某台机子冗机了,同时还导致了部分slot数据分片丢失;在用check检查集群运行状态时,遇到错误;
[root@node01 src]# ./redis-trib.rb check172.168.63.202:7000
Connecting to node 172.168.63.202:7000: OK
Connecting to node 172.168.63.203:7000: OK
Connecting to node 172.168.63.201:7000: OK
>>> Performing Cluster Check(using node 172.168.63.202:7000)
M: 449de2d2a4b799ceb858501b5b78ab91504c72e0172.168.63.202:7000
slots: (0 slots) master
0additional replica(s)
M: db9d26b1d15889ad2950382f4f32639606f9a94b172.168.63.203:7000
slots: (0 slots) master
0additional replica(s)
M: f90924f71308eb434038fc8a5f481d3661324792172.168.63.201:7000
slots: (0 slots) master
0additional replica(s)
[OK] All nodes agree about slotsconfiguration.
>>> Check for open slots...
>>> Check slots coverage...
[ERR] Not all 16384 slots are covered by nodes.
原因:
这个往往是由于主node移除了,但是并没有移除node上面的slot,从而导致了slot总数没有达到16384,其实也就是slots分布不正确。所以在删除节点的时候一定要注意删除的是否是Master主节点。
1)、官方是推荐使用redis-trib.rb fix 来修复集群…. …. 通过cluster nodes看到7001这个节点被干掉了… 那么
[b][root@node01 src]# ./redis-trib.rb fix 172.168.63.201:7001[/b]
修复完成后再用check命令检查下是否正确
[root@node01 src]# ./redis-trib.rb check172.168.63.202:7000
只要输入任意集群中节点即可,会自动检查所有相关节点。可以查看相应的输出看下是否是每个Master都有了slots,如果分布不均匀那可以使用下面的方式重新分配slot:
[root@node01 src]# ./redis-trib.rb reshard 172.168.63.201:7001
参考资料:
1、Ruby 安装 - Linux
下面列出了在 Linux 机器上安装 Ruby 的步骤。注意:在安装之前,请确保您有 root 权限。
源码安装
1 下载最新版的 Ruby 压缩文件。请点击这里下载。
2 下载 Ruby 之后,解压到新创建的目录下:
$ tar -xvzf ruby-2.2.3.tgz
$ cd ruby-2.2.3
3 现在,配置并编译源代码,如下所示:
$ ./configure
$ make
$ sudo make install
4 安装后,通过在命令行中输入以下命令来确保一切工作正常:
$ruby -v
ruby 2.2.3……
5 如果一切工作正常,将会输出所安装的 Ruby 解释器的版本,如上所示。如果您安装了其他版本,则会显示其他不同的版本。
自动安装 Ruby
如果您的计算机已经连接到 Internet,那么最简单安装 Ruby 的方式是使用 yum 或 apt-get。在命令提示符中输入以下的命令,即可在您的计算机上安装 Ruby。
$ sudo yum install ruby # CentOS, Fedora, 或 RHEL 系统
或
sudo apt-get install ruby-full # Debian 或 Ubuntu 系统
如果你是苹果系统,可以使用 brew 命令安装:
$ brew install ruby
2、Ruby RubyGems
RubyGems 是 Ruby 的一个包管理器,它提供一个分发 Ruby 程序和库的标准格式,还提供一个管理程序包安装的工具。RubyGems 旨在方便地管理 gem 安装的工具,以及用于分发 gem 的服务器。这类似于 Ubuntu 下的apt-get, Centos 的 yum,Python 的 pip。
RubyGems大约创建于2003年11月,从Ruby 1.9版起成为Ruby标准库的一部分。
如果你的 Ruby 低于 1.9 版本,也可以通过手动安装:
6 首先下载安装包:https://rubygems.org/pages/download。
7 解压并进入目录,执行命令:ruby setup.rb
更新 RubyGems 命令:
$ gem update --system # 需要管理员或root用户
Gem
Gem 是 Ruby 模块 (叫做 Gems) 的包管理器。其包含包信息,以及用于安装的文件。
Gem通常是依照".gemspec"文件构建的,包含了有关Gem信息的YAML文件。Ruby代码也可以直接建立Gem,这种情况下通常利用Rake来进行。
gem命令
gem命令用于构建、上传、下载以及安装Gem包。
gem用法
RubyGems 在功能上与 apt-get、portage、yum 和 npm 非常相似。
安装:
gem install mygem
卸载:
gem uninstall mygem
列出已安装的gem:
gem list --local
列出可用的gem,例如:
gem list --remote
为所有的gems创建RDoc文档:
gem rdoc --all
下载一个gem,但不安装:
gem fetch mygem
从可用的gem中搜索,例如:
gem search STRING --remote
gem 包的构建
gem命令也被用来构建和维护.gemspec和.gem文件。
利用.gemspec文件构建.gem:
gem build mygem.gemspec
修改国内源
由于国内网络原因(你懂的),导致 rubygems.org 存放在 Amazon S3 上面的资源文件间歇性连接失败。
所以你会与遇到 gem install rack 或 bundle install 的时候半天没有响应,具体可以用 gem install rails -V 来查看执行过程。
因此我们可以将它修改为淘宝下载源: http://ruby.taobao.org/
首先,查看当前源:
$ gem sources -l
*** CURRENT SOURCES ***
https://rubygems.org/
接着,移除https://rubygems.org/,并添加淘宝下载源 http://ruby.taobao.org/。
$ gem sources --remove https://rubygems.org/$ gem sources -a https://ruby.taobao.org/$ gem sources -l
*** CURRENT SOURCES ***
https://ruby.taobao.org# 请确保只有 ruby.taobao.org$ gem install rails
如果你使用 Gemfile 和 Bundle (例如:Rails 项目)
你可以用bundle的gem源代码镜像命令。
$ bundle config mirror.https://rubygems.org https://ruby.taobao.org
这样你不用改你的 Gemfile 的 source。
source 'https://rubygems.org/'gem 'rails', '4.1.0'...
3、redis.clients.jedis.exceptions.JedisDataException: MOVED 13102 127.0.0.1
参照:http://blog.csdn.net/chenyuangege/article/details/51519370这个异常上网查了很久才知道原因:
MOVED indicates that you're using Redis Cluster. ShardedJedis is not for Redis Cluster, so you should use JedisCluster instead. Please note that JedisCluster doesn't have pipeline mode, so you may want to send your operation one by one.
大概意思就是ShardedJedis 不能用于Redis集群,要用JedisCluster 代替ShardedJedis 才可以,而且JedisCluster 还没有pipeline 模式,所以一次只能执行一个操作
4、其他参考
安装ruby环境:[plain] view plain copy
[root@localhost redis-cluster]# yum install ruby
[root@localhost redis-cluster]# yum install rubygems
安装redis-trib.rb运行依赖的ruby的包redis-3.2.2.gem,下载
[plain] view plain copy
[root@localhost redis-cluster]# gem install redis-3.2.2.gem
http://www.cnblogs.com/gomysql/p/4395504.html http://blog.csdn.net/dc_726/article/details/48552531 http://blog.csdn.net/huwei2003/article/details/50973967
相关文章推荐
- redis 3.0的集群部署
- Redis集群部署详细
- redis 3.0的集群部署
- redis 3.0的集群部署
- redis 3.0的集群部署
- redis 3.0的集群部署
- 【集群】redis 3.0的集群部署
- redis 3.0的集群部署
- redis 3.0的集群部署
- Redis集群搭建详细过程整理备忘
- MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现
- redis 3.0的集群部署
- redis 3.0的集群部署
- redis 3.0的集群部署
- Redis3.0集群部署文档(centos系统)
- MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现
- redis 3.0的集群部署
- redis 3.0的集群部署
- redis 3.0的集群部署
- Redis3.0集群环境的搭建详细步骤