在三台CentOS6.5_64机器上分别安装redis-3.2.6.tar.gz,每台机器有两个端口7001,7002,创建6个redis节点,3个为主节点,3个为从节点
主机名 | 主机IP | 端口 |
hadoop1 | 192.168.1.102 | 7001 |
hadoop1 | 192.168.1.102 | 7002 |
hadoop2 | 192.168.1.103 | 7001 |
hadoop2 | 192.168.1.103 | 7002 |
hadoop3 | 192.168.1.104 | 7001 |
hadoop3 | 192.168.1.104 | 7002 |
安装部署
从官网(http://redis.io/download)下最新redis包redis-3.2.6.tar.gz
上传到服务器hadoop1上的 /home/hadoop/upload下面
解压
#tar -zxvf redis-3.2.6.tar.gz
移动到/user/local下面
#mv redis-3.2.6 /user/local
将解压后的目录发送到其它两台机子上
#scp -r /usr/local/redis-3.2.6 hadoop2:/usr/local
#scp -r /usr/local/redis-3.2.6 hadoop3:/usr/local
分别安装编译三台机子上的redis
#cd redis-3.2.6
#make && make install
创建目录redis-cluster
#mkdir redis-cluster
继续创建以端口为名称的文件夹
#mkdir redis-cluster/7001
#mkdir redis-cluster/7002
创建数据文件目录
#mkdir /root/redis-data/7001
#mkdir /root/redis-data/7002
创建存放pid目录
#mkdir /var/redis-run/7001
#mkdir /var/redis-run/7002
将redis配置文件复制到 redis-cluster/7001 和 redis-cluster/7002下面
#cd /usr/local/redis-3.2.6
#cp redis.conf redis-cluster/7001
#cp redis.conf redis-cluster/7002
分别修改7001 和 7002下面的配置文件
#vi redis-cluster/7001/redis.conf
修改配置文件中下面的选项:
daemonize yes
设置为后台启动
cluster-enabled yes
允许redis
支持集群模式
cluster-config-file nodes-6379.conf
节点配置文件
cluster-node-timeout 15000
节点超时毫秒
appendonly yes
//aof日志开启 有需要就开启,它会每次写操作都记录一条日志
port
12003
dir /root/redis-data/7001
数据目录
pidfile /var/redis-run/run/redis/redis_6379.pid
bind 0.0.0.0
protected mode no
将redis-cluster发送到hadoop2和hadoop3
#cd /usr/local/redis-3.2.6
#scp -r redis-cluster hadoop2:/usr/local/redis-3.2.6/
#scp -r redis-cluster hadoop3:/usr/local/redis-3.2.6/
将数据文件redis-data目录发送到hadoop2和hadoop3
#scp -r /root/redis-data hadoop2:/root/
#scp -r /root/redis-data hadoop3:/root/
将存放pid的 /var/redis-run 目录发送到hadoop2和hadoop3
#scp -r /var/redis-run hadoop2:/var
#scp -r /var/redis-run hadoop3:/var
分别启动6个redis
#/usr/local/bin/redis-server /usr/local/redis-3.2.6/redis-cluster/7001/redis.conf
#/usr/local/bin/redis-server /usr/local/redis-3.2.6/redis-cluster/7002/redis.conf
使用命令查看redis
的启动情况ps -ef|grep redis
netstat -tnlp|grep redis
可以看到redis
监听的端口
[root@hadoop1 src]# netstat -tnlp|grep redis
tcp 0 0 0.0.0.0:7001 0.0.0.0:* LIST EN 2691/redis-server 0
tcp 0 0 0.0.0.0:7002 0.0.0.0:* LIST EN 2695/redis-server 0
tcp 0 0 0.0.0.0:17001 0.0.0.0:* LIST EN 2691/redis-server 0
tcp 0 0 0.0.0.0:17002 0.0.0.0:* LIST
启动集群(这里很麻烦,花费了很长时间)
src/redis-trib.rb create --replicas 1 192.168.1.102:7001 192.168.1.102:7002 192.168.1.103:7001 192.168.1.103:7002 192.168.1.104:7001 192.168.1.104:7002
启动集群会报错
/usr/bin/env: ruby: No such file or directory
需要安装ruby
我使用的是镜像挂载:
#install yum ruby
再次启动报错,提示缺少rubygem
需要下载rubygems-2.6.8安装
#tar zxvf rubygems-2.6.8
#cd rubygems-2.6.8
# ruby setup.rb
报错
ERROR: While executing gem ... (Gem::DocumentError)
RDoc is not installed: no such file to load -- rdoc/rdoc
安装rdoc
#yum install rdoc
[root@hadoop3 rubygems-2.6.8]# gem install redis
ERROR: While executing gem ... (Errno::ECONNREFUSED)
Connection refused - recvfrom(2)
上网手动下载redis-3.2.1.gem
#gem install -l ./redis-3.2.1.gem
[root@hadoop3 local]# gem install -l ./redis-3.2.1.gem
Successfully installed redis-3.2.1
Installing ri documentation for redis-3.2.1
/usr/lib/ruby/1.8/rdoc/rdoc.rb:280: warning: conflicting chdir during another chdir block
/usr/lib/ruby/1.8/rdoc/rdoc.rb:287: warning: conflicting chdir during another chdir block
Done installing documentation for redis after 3 seconds
1 gem installed
再次启动集群,啊 终于成功了
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.1.104:7001
192.168.1.103:7001
192.168.1.102:7001
Adding replica 192.168.1.103:7002 to 192.168.1.104:7001
Adding replica 192.168.1.104:7002 to 192.168.1.103:7001
Adding replica 192.168.1.102:7002 to 192.168.1.102:7001
错误笔记
1. jemalloc/jemalloc.h: No such file or directory
说关于分配器allocator, 如果有MALLOC 这个 环境变量, 会有用这个环境变量的 去建立Redis。
而且libc 并不是默认的 分配器, 默认的是 jemalloc, 因为 jemalloc 被证明 有更少的 fragmentation problems 比libc。
但是如果你又没有jemalloc 而只有 libc 当然 make 出错。 所以加这么一个参数。
解决办法
make MALLOC=libc
2. make: Warning: File `Makefile.dep' has modification time 1e+07 s in the future
发现是系统时间不一致,我桌面上的虚拟机是一直都是休眠的,因此时间不同步,使用date命令把时间设置成当前时间
date -s 06/22/2013
date -s 09:39:00
3.启动集群报错 /usr/bin/env: ruby: No such file or directory
需要安装 ruby
4.执行gem install redis
/usr/local/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- redis (LoadError)
from /usr/local/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from src/redis-trib.rb:25:in `<main>'
需要下在redis.3.2.1.gem
安装
#gem install -l ./redis-3.2.1.gem