0%

redis 3.0 3.2.5集群安装文档

redis3.0 3.2.5 集群安装文档

要让集群正常工作至少需要 3 个主节点,在这里我们要创建 6 个 redis 节点,其中三个为主节点,三个为从节点,对应的 redis 节点的 ip 和端口对应关系如下
127.0.0.1:7001
127.0.0.1:7002
127.0.0.1:7003
127.0.0.1:8001
127.0.0.1:8002
127.0.0.1:8003

1. 下载 redis

官网下载 3.0.0 版本,之前 2.几的版本不支持集群模式,下载地址:https://github.com/antirez/redis/archive/3.0.0-rc2.tar.gz
在两台服务器上分别执行以下 2-5 步骤:

2. 上传服务器,解压,编译

环境准备

1
yum -y install gcc gcc-c++ autoconf automake libtool make
1
2
3
4
5
tar -zxvf redis-3.0.0-rc2.tar.gz
mv redis-3.0.0-rc2.tar.gz redis3.0
cd /opt/usr/redis/redis3.0
make MALLOC=libc
make install

3. 创建集群需要的目录

1
2
3
4
5
6
7
8
mkdir -p /opt/usr/redis/cluster
cd /opt/usr/redis/cluster
mkdir 7001
mkdir 7002
mkdir 7003
mkdir 8001
mkdir 8002
mkdir 8003

4. 修改配置文件 redis.conf

1
2
cp /opt/usr/redis/redis3.0/redis.conf  /opt/usr/redis/cluster
vi redis.conf

修改配置文件中的下面选项

1
2
3
4
5
6
7
8
port 7001
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
bind 127.0.0.1
dir /opt/usr/redis/cluster/7001

修改 dir 参数 bind 参数 port 参数

修改完 redis.conf 配置文件中的这些配置项之后把这个配置文件分别拷贝到 7001/7002/7003/8001/8002/8003 目录下面

1
2
3
cp /opt/usr/redis/cluster/redis.conf  /opt/usr/redis/cluster/7001
cp /opt/usr/redis/cluster/redis.conf /opt/usr/redis/cluster/7002
cp /opt/usr/redis/cluster/redis.conf /opt/usr/redis/cluster/7003

拷贝完成之后要修改 7001/7002 目录下面 redis.conf 文件中的 port 参数,分别改为对应的文件夹的名称

5. 分别启动这 6 个 redis 实例

1
2
3
4
5
6
7
8
9
10
11
12
cd /opt/usr/redis/cluster/7001
redis-server redis.conf
cd /opt/usr/redis/cluster/7002
redis-server redis.conf
cd /opt/usr/redis/cluster/7003
redis-server redis.conf
cd /opt/usr/redis/cluster/8001
redis-server redis.conf
cd /opt/usr/redis/cluster/8002
redis-server redis.conf
cd /opt/usr/redis/cluster/8003
redis-server redis.conf

启动之后使用命令查看 redis 的启动情况 ps -ef|grep redis

如下图显示则说明启动成功

https://raw.githubusercontent.com/duanzhaoqian/pic/master/redis/r1.png

安装 ruby rubygems

1
yum install -y ruby rubygems

修改 gem sources

1
2
3
gem sources remove https://rubygems.org/
gem sources -a https://ruby.taobao.org/
gem sources -l

gem 安装 redis

1
2
3
redis 3.2.5使用3.2.2版本
gem install redis -v 3.2.2
gem list

6. 执行 redis 的创建集群命令创建集群(注意以下 IP 写实际 IP,禁止使用 127.0.0.1)

1
2
cd /opt/usr/redis/redis3.0/src
./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003

正常执行

https://raw.githubusercontent.com/duanzhaoqian/pic/master/redis/r2.png

输入 yes,然后配置完成。

https://raw.githubusercontent.com/duanzhaoqian/pic/master/redis/r3.png
至此 redis 集群即搭建成功!

使用 127.0.0.1 严重影响 cluster 性能

使用 redis-cli 命令进入集群环境

1
redis-cli -c -p 7001

run

1
2
3
4
5
6
7
8
9
10
11
12
cd /opt/usr/redis/cluster/7001
redis-server redis.conf
cd /opt/usr/redis/cluster/7002
redis-server redis.conf
cd /opt/usr/redis/cluster/7003
redis-server redis.conf
cd /opt/usr/redis/cluster/8001
redis-server redis.conf
cd /opt/usr/redis/cluster/8002
redis-server redis.conf
cd /opt/usr/redis/cluster/8003
redis-server redis.conf

检查

1
./redis-trib.rb check 127.0.0.1:7001

问题记录

错误内容:/usr/bin/env: ruby: No such file or directory
所以需要安装 ruby 的环境,这里推荐使用 yum install ruby 安装

1
yum install ruby

错误内容:

1
2
./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
from ./redis-trib.rb:24
1
yum install rubygems

提示不能加载 redis,是因为缺少 redis 和 ruby 的接口,使用 gem 安装

1
gem install redis

gem install redis
这里可能无法安装,因为无法连接 gem 服务器:

1
2
3
[@zw_22_90 src]# gem install redis --version 3.0.0
ERROR: Could not find a valid gem 'redis' (= 3.0.0) in any repository
ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)

修改 gem sources 为 taobao.org 加快安装速度

https://blog.csdn.net/beyondlpf/article/details/51275106

或者手工下载并安装:

1
2
wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem
gem install -l ./redis-3.2.1.gem

3.2.5 提示无法链接

1
2
3
[root@redis159 redis-3.2.5]# src/redis-trib.rb create --replicas 1 20.0.1.159:7001 20.0.1.159:7002 20.0.1.159:7003 20.0.1.159:7004 20.0.1.159:7005 20.0.1.159:7006
>>> Creating cluster
[ERR] Sorry, can't connect to node 20.0.1.159:7001

修改配置文件设置 bind 参数即可