一、前言
工作需要,也比较急,这一篇就不用docker搭redis集群了。后面有时间再研究docker搭建redis集群。
二、Redis 集群简介
Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存。Redis 在3.0版本前只支持单实例模式,虽然支持主从模式、哨兵模式部署来解决单点故障,但是现在互联网企业动辄大几百G的数据,可完全是没法满足业务的需求,所以,Redis 在 3.0 版本以后就推出了集群模式。
Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 个 slot,每个 Redis 实例负责其中一部分 slot 。集群中的所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新。
Redis 客户端可以在任意一个 Redis 实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。
三、安装redis
可以安装其他版本的,只要版本大于3.0即可
$ wget http://download.redis.io/releases/redis-4.0.7.tar.gz
$ tar xzf redis-4.0.7.tar.gz
$ mv redis-4.0.7 redis
$ cd redis
$ make
编译完成后会在src
目录下生成Redis服务端程序redis-server
和客户端程序redis-cli
。
四、集群搭建
创建9001~9006 6个结点的文件夹,并在每个文件夹下创建data文件夹用于存放数据
$ cd /usr/local
$ mkdir redis-cluster && cd redis-cluster
$ mkdir -p 9001 9002 9003 9004 9005 9006
$ mkdir -p 9001/data 9002/data 9003/data 9004/data 9005/data 9006/data
在/usr/local/redis-cluster 下创建bin文件夹用于存放运行脚本
$ mkdir redis-cluster/bin
$ cd /usr/local/redis/src
$ cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin
执行到这里我们可以看到目录结构如下图
接下来要把redis(从这里开始省略redis的版本号)复制到9001文件夹中
$ cp /usr/local/redis/* /usr/local/redis-cluster/9001
修改redis.conf文件
$ cd 9001 && vim redis.conf
port 9001(每个节点的端口号)
daemonize yes
bind x.x.x.x(绑定当前机器 IP)
dir /usr/local/redis-cluster/9001/data/(数据文件存放位置)
pidfile /var/run/redis_9001.pid(pid 9001和port要对应)
cluster-enabled yes(启动集群模式)
cluster-config-file nodes9001.conf(9001和port要对应)
cluster-node-timeout 15000
appendonly yes
集群搭建最主要就是修改redis.conf 文件的以下3个地方
再来,我们复制已经编辑好的9001到另外5个结点9002~9006
$ cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9002
$ cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9003
$ cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9004
$ cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9005
$ cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9006
修改9002~9006中的redis.config文件.(用以下命令可能会简便一些)
假设我们当前是在9001目录下,修改9002的配置文件
同理修改9003~9006
$ cd ../9002 && vim redis.conf
# ----------------------------------------------redis.conf 文件内-------------------------------------------------------
:%s/9001/9002
# 运用正则表达式修改不同的地方,运行后会提示,成功修改4处,则说明修改成功!
到这里我们已经成功搭建完集群了
5、启动集群
启动9001~9006结点
$ /usr/local/bin/redis-server /usr/local/redis-cluster/9001/redis.conf
$ /usr/local/bin/redis-server /usr/local/redis-cluster/9002/redis.conf
$ /usr/local/bin/redis-server /usr/local/redis-cluster/9003/redis.conf
$ /usr/local/bin/redis-server /usr/local/redis-cluster/9004/redis.conf
$ /usr/local/bin/redis-server /usr/local/redis-cluster/9005/redis.conf
$ /usr/local/bin/redis-server /usr/local/redis-cluster/9006/redis.conf
执行ps -el | grep redis,看到一下信息说明启动成功!
安装ruby,启动redis结点需要ruby的支持
$ yum install ruby
$ yum install rubygems
$ gem install redis
启动集群
/usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 10.0.98.69:9001 10.0.98.69:9002 10.0.98.69:9003 10.0.98.69:9004 10.0.98.69:9005 10.0.98.69:9006
出现下图提示就说明创建成功了,其中M是主节点,而S是从结点
在redis桌面工具看起来是这样的