您的位置:首页 > 数据库 > Redis

Linux 搭建redis-cluster

2016-06-08 18:13 387 查看

安装一些依赖包

这不是必须的,但有的机器上没有这些包

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选项。

by David_ao

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis cluster