一、Redis的安装
在之前的一片博客中,介绍了Redis安装的详细过程和如何在公网中进行访问,点击这里进行Redis的安装和配置。相对来说配置不是特别复杂,然而,在比较大的工程当中,由于数据量和并发量都比较大,一个Redis节点往往不能满足项目的需求,所以就分享一下我搭建Redis集群的步骤和遇到的问题。
二、准备工作
-
Ruby的安装
Ruby是进行集群搭建运行脚本的必要工具
执行命令安装rubysudo apt-get install ruby
-
建立目录和相关配置
在你的某个目录下建立文件夹,以便保存redis集群的相关配置和日志信息
mkdir /home/ubuntu/redis-cluster
首先明确一下目录结构,我的如下:
ubuntu@VM-0-6-ubuntu:~/redis-cluster$ tree
.
├── 7000
│ ├── redis.conf
│ ├── redis.log
│ └── redis-server
├── 7001
│ ├── redis.conf
│ ├── redis.log
│ └── redis-server
├── 7002
│ ├── redis.conf
│ ├── redis.log
│ └── redis-server
├── 7003
│ ├── redis.conf
│ ├── redis.log
│ └── redis-server
├── 7004
│ ├── redis.conf
│ ├── redis.log
│ └── redis-server
├── 7005
│ ├── redis.conf
│ ├── redis.log
│ └── redis-server
├── appendonly.aof
├── dump.rdb
├── nodes1.conf
├── nodes2.conf
├── nodes3.conf
├── nodes4.conf
├── nodes5.conf
├── nodes6.conf
├── redis-trib.rb
└── start_cluster.sh
这里的tree命令打印当前目录结构,可用sudo apt-get -y install tree
安装
7000,7001,7002,7003,7004,7005是五个节点目录,需要进行创建
mkdir 7000 7001 7002 7003 7004 7005
其中保存的是每个redis-cluster的节点信息
我们需要将之前安装的redis-server脚本复制过来,一般在redis安装目录的src中,在redis-cluster目录下使用命令
cp /usr/lib/redis-4.0.10/src/redis-server /7000
cp /usr/lib/redis-4.0.10/src/redis-server /7001
cp /usr/lib/redis-4.0.10/src/redis-server /7002
cp /usr/lib/redis-4.0.10/src/redis-server /7003
cp /usr/lib/redis-4.0.10/src/redis-server /7004
cp /usr/lib/redis-4.0.10/src/redis-server /7005
如果遇到Permission denied
类的错误,直接加上sudo
就好
在各个节点文件夹中新建redis配置文件redis.conf,其中写入内容如下:
port 7000 #端口号
cluster-enabled yes #启用redis集群模式
cluster-config-file nodes6.conf #节点信息日志
cluster-node-timeout 5000
appendonly yes #保证数据持久化,会生成appendonly.aof文件
protected-mode no #保护模式关掉,可以在公网连接
port参数为端口号,不同的目录不同,分别对应7000-7005
三、启动
- 启动各个节点的Redis服务,以7000目录为例
进入目录
cd 7000/
启动服务
./redis-server redis.conf
其他节点操作类似 - 建立redis-cluster集群
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
注意:这是在本机搭建的redis集群,如果要在公网进行集群的访问,需要将127.0.0.1替换为公网ip
- 重启
在需要重启的时候,首先得停掉每个节点的服务,可以先查看其pid,再使用kill命令停止
ubuntu@VM-0-6-ubuntu:~/redis-cluster$ ps -aux|grep redis
ubuntu 15011 0.0 0.2 47560 4952 ? Sl Jul22 5:00 ./7000/redis-server *:7000 [cluster]
ubuntu 15012 0.0 0.2 47560 4664 ? Sl Jul22 5:03 ./7001/redis-server *:7001 [cluster]
ubuntu 15013 0.0 0.2 47560 4712 ? Sl Jul22 5:01 ./7002/redis-server *:7002 [cluster]
ubuntu 15014 0.0 0.2 47560 4460 ? Sl Jul22 4:56 ./7003/redis-server *:7003 [cluster]
ubuntu 15015 0.0 0.2 47560 4368 ? Sl Jul22 4:53 ./7004/redis-server *:7004 [cluster]
ubuntu 15016 0.0 0.2 47560 4360 ? Sl Jul22 4:51 ./7005/redis-server *:7005 [cluster]
ubuntu 15116 0.0 0.0 14972 1008 pts/0 S+ 11:27 0:00 grep --color=auto redis
redis 17954 0.0 0.1 40884 3116 ? Ssl Jul20 5:25 /usr/bin/redis-server *:6379
可以看到,其pid为15011-15016,首先杀死进程
kill -9 15011
kill -9 15012
kill -9 15013
kill -9 15014
kill -9 15015
kill -9 15016
然后,删除文件夹下的.aof
,.conf
和.rdb
文件(即搭建集群后生成的各种文件),后面就是按照上面的1,2步骤进行启动了。
四、访问Redis集群
命令行执行
redis-cli -c -h [ip地址/域名] -p 7000
可以连接到一个节点上
:~$ redis-cli -c -h isharpen.cn -p 7000
>
> set test 1
-> Redirected to slot [6918] located at 111.230.72.15:7001
OK
> get test
"1"
> del test
(integer) 1
> KEYS PATTERN
(empty list or set)
> KEYS *
1) "name"
> exit
如上执行的命令,可以正常使用redis集群了