安装一些依赖包
这不是必须的,但有的机器上没有这些包
sudo apt-get install build-essential
sudo apt-get install gcc
搭建过程
以下是给老美写的一个搭建过程的英文版,基本上都是每一步的命令
1. Create directory
sudo mkdir /opt/redis
cd /opt/redis
2. Download install packages
wget http://download.redis.io/releases/redis-3.0.7.tar.gz
wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.gz
wget https://rubygems.global.ssl.fastly.net/rubygems/rubygems-2.5.0.tgz
wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.2.geminstall
3. install ruby
a. sudo tar -zxvf ruby-2.3.0.tar.gz
b. cd ruby-2.3.0
c. sudo ./configure -prefix=/usr/local/ruby
d. sudo make
e. sudo make install
f. sudo cp ruby /usr/local/bin/
g. cd ..
4. install rubygems
a. sudo tar -zxvf rubygems-2.5.0.tgz
b. cd rubygems-2.5.0/
c. sudo ruby setup.rb
d. sudo cp bin/gem /usr/local/bin/
e. cd ..
5. install redis-3.2.2.gem
sudo gem install -l redis-3.2.2.gem
这步可能会遇到下面的问题
cannot load such file -- zlib
ERROR: While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass
解决办法:
sudo apt-get install zlib1g-dev
cd /opt/redis/ruby-2.3.0/ext/zlib
ruby extconf.rb
sudo make
sudo make instal
6.install redis
a. sudo tar -zxvf redis-3.0.7.tar.gz
b. cd redis-3.0.7
c. sudo make
d. sudo make install
e. sudo cp src/redis-trib.rb /usr/local/bin/
f. sudo mkdir -p /usr/local/redis/6379 /usr/local/redis/6380
7.create config file
sudo mkdir -p /usr/local/redis/6379 /usr/local/redis/6380
8.input config file
sudo bash -c 'cat > /usr/local/redis/6379/redis.conf <<EOF
port 6379
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
appendfsync everysec
logfile redis.log
loglevel notice
#maxmemory 1gb
#maxmemory-policy allkeys-lru
#requirepass 123456
#masterauth 123456
EOF'
sudo bash -c 'cat > /usr/local/redis/6380/redis.conf <<EOF
port 6380
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
appendfsync everysec
logfile redis.log
loglevel notice
#maxmemory 1gb
#maxmemory-policy allkeys-lru
#requirepass 123456
#masterauth 123456
EOF'
9.start redis
execute same steps in 3 hosts
cd /usr/local/redis/6379
sudo redis-server redis.conf
cd /usr/local/redis/6379
sudo redis-server redis.conf
use ps –ef | grep redis:
10.create cluster
execute whatever host
redis-trib.rb create –replicas 1 162.0.84.173:6379 162.0.84.173:6380 162.0.12.36:6379 162.0.12.36:6380 166.0.114.158:6379 166.0.114.158:6380
注意这个地方只能用ip,不要用hostname,否则会出问题,可能是这个ruby工具不识别hostname,如果这个地方出了问题,可以删除每个实例目录下的nodes.conf文件并重启全部实例,再执行创建命令;
–replicas 1 表示几个复制,1 表示一个主机一个从机
11.登录集群
redis-cli -h localhost -p 6379 -c
12.给集群设置密码
去每个配置文件里去掉这两句的注释
#requirepass 123456
#masterauth 123456
重启所以实例即可
这两句不能在创建集群的时候加入,加入会重建失败,原因嘛应该是redis-trib.rb工具不支持吧。
设置密码后登录用:
redis-cli -h localhost -p 6379 -a 123456 -c
13 一些命令问题
登录集群后info,keys, lua脚本执行等这些命令只能查看本节点的信息,因为redis不支持跨节点的命令,但是如果访问一个确定的key时会自动跳转到那个节点,前提是登陆的时候用了-c选项。