最近项目组要搭建redis集群,顺手就在服务器上搭建了,中途也遇到了一些问题,不过最后也都解决了,本文作为笔记记录。
本文用单台虚拟机模拟6个节点,创建出3 master、3 salve 环境。说明:https://redis.io/上的最新版本是3.2.8,考虑到新版本可能有坑,所以下载3.2.7版本。
1、下载解压
wget http://download.redis.io/releases/redis-3.2.7.tar.gz
tar -zxvf redis-3.2.7.tar.gz
2、安装
cd redis-3.2.7
make
make install
3、将启动集群的文件redis-trib.rb 拷贝到本地 /usr/local/bin 目录下
cd /redis-3.2.7/src
cp redis-trib.rb /usr/local/bin/
4、创建服务节点,在服务器上(这里以本地127.0.0.1为例),创建集群的文件夹redis_cluster
mkdir redis_cluster
将解压的redis-3.2.7拷贝打牌rediscuter中重新命名为redis_7000
cp -R /redis-3.2.7 /redis_cluster
mv redis-3.2.7 redis_7000
修改/redis_cluster/redis_7000中的redis.conf文件
port 7000 //端口7000,7002,7003
bind 本机ip 127.0.0.1 //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize yes //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7001,7002
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
然后将redis_7000复制5分放入/redis_cluster中命名分别为redis_7001、redis_7002、redis_7003、redis_7004、redis_7005;
然后分别修改其目录下的redis.conf文件中的端口和ip。
5、启动各节点,进入redis_7000目录下,启动如下
redis-server redis.conf
然后依次启动redis_7001、redis_7002、redis_7003、redis_7004、redis_7005。
6、查看情况
ps -ef | grep redis
root 24559 24517 0 16:37 pts/0 00:00:00 grep redis
root 31987 1 0 11:40 ? 00:01:44 redis-server 127.0.0.1:7000 [cluster]
root 32002 1 0 11:40 ? 00:02:40 redis-server 127.0.0.1:7001 [cluster]
root 32006 1 0 11:40 ? 00:01:11 redis-server 127.0.0.1:7002 [cluster]
root 32015 1 0 11:40 ? 00:00:28 redis-server 127.0.0.1:7003 [cluster]
root 32027 1 0 11:40 ? 00:00:28 redis-server 127.0.0.1:7005 [cluster]
root 32136 1 0 11:43 ? 00:00:28 redis-server 127.0.0.1:7004 [cluster]
netstat -tnlp | grep redis
tcp 0 0 127.0.0.1:17000 0.0.0.0:* LISTEN 31987/redis-server
tcp 0 0 127.0.0.1:17001 0.0.0.0:* LISTEN 32002/redis-server
tcp 0 0 127.0.0.1:17002 0.0.0.0:* LISTEN 32006/redis-server
tcp 0 0 127.0.0.1:17003 0.0.0.0:* LISTEN 32015/redis-server
tcp 0 0 127.0.0.1:17004 0.0.0.0:* LISTEN 32136/redis-server
tcp 0 0 127.0.0.1:17005 0.0.0.0:* LISTEN 32027/redis-server
tcp 0 0 127.0.0.1:7000 0.0.0.0:* LISTEN 31987/redis-server
tcp 0 0 127.0.0.1:7001 0.0.0.0:* LISTEN 32002/redis-server
tcp 0 0 127.0.0.1:7002 0.0.0.0:* LISTEN 32006/redis-server
tcp 0 0 127.0.0.1:7003 0.0.0.0:* LISTEN 32015/redis-server
tcp 0 0 127.0.0.1:7004 0.0.0.0:* LISTEN 32136/redis-server
tcp 0 0 127.0.0.1:7005 0.0.0.0:* LISTEN 32027/redis-server
7、创建集群
Redis 官方提供了 redis-trib.rb 这个工具,就在解压目录的 src 目录中,第三步中已将它复制到 /usr/local/bin 目录中,可以直接在命令行中使用了。使用下面这个命令即可完成安装。
redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
中途如果错误内容:/usr/bin/env: ruby: No such file or directory,则需要安装 ruby。这里推荐使用yum install ruby安装,安装命令如下:
yum install ruby
yum -y install ruby ruby-devel rubygems rpm-build
gem install redis
8、验证
通过命令进行访问redis集群: redis-cli -h 127.0.0.1 -c -p 7002 ,加参数 -C 可连接到集群,因为上面 redis.conf 将 bind 改为了ip地址,所以 -h 参数不可以省略。
[root@vm bin]# redis-cli -h 127.0.0.1 -c -p 7002
127.0.0.1:7002> set happy day
-> Redirected to slot [2936] located at 127.0.0.1:7000
OK
127.0.0.1:7000>
[root@vm bin]# redis-cli -h 127.0.0.1 -c -p 7001
127.0.0.1:7001> get happy
-> Redirected to slot [2936] located at 127.0.0.1:7000
"day"
127.0.0.1:7000>