Linux 下redis集群搭建

一、简介

Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存。Redis 在3.0版本前只支持单实例模式,虽然支持主从模式、哨兵模式部署来解决单点故障,但是现在互联网企业动辄大几百G的数据,可完全是没法满足业务的需求,所以,Redis 在 3.0 版本以后就推出了集群模式。

Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 个 slot,每个 Redis 实例负责其中一部分 slot 。集群中的所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新。
Redis 客户端可以在任意一个 Redis 实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。

单机版搭建:https://blog.csdn.net/qq_15901351/article/details/84191912

二、搭建步骤

由于集群至少需要6个节点(3主3从模式),目前没有那么多服务器用来搭建,准备在一台服务器上搭建6个节点,不同的端口区分,实现伪集群,与生产上正式的原理是一样的,只是在不通的服务器上配置。

参考:

https://www.cnblogs.com/mafly/p/redis_cluster.html#!comments

1、安装单机版redis服务

之前单机版redis的redis被我安装在了/home/redis/ redis-3.2.0下

方便操作redis,准备把 redis-3.2.0转移到/usr/local/下

mv redis-3.2.0 /usr/local/

2、创建redis-cluster文件夹

准备搭建集群中 Redis 节点的端口号为 9001-9006 ,端口号即集群下各实例文件夹。数据存放在 端口号/data 文件夹中。

mkdir /usr/local/redis-cluster
cd redis-cluster/
mkdir -p 9001/data 9002/data 9003/data 9004/data 9005/data 9006/data

3、复制执行脚本

在 /usr/local/redis-cluster 下创建 bin 文件夹,用来存放集群运行脚本,并把安装好的 redis-3.2.0 的 src 路径下的运行脚本拷贝过来。

cd /usr/local/redis-cluster
mkdir bin
cd /usr/local/redis-3.2.0/src
cp mkreleasehdr.sh redis-benchmark redis-check-aof  redis-check-rdb redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin

4、复制Redis 新实例

从已安装好的 Redis 中复制一个新的实例到 9001 文件夹,并修改 redis.conf 配置。

cp  /usr/local/redis-3.2.0/* /usr/local/redis-cluster/9001

 修改 redis.conf 配置

port 9001(每个节点的端口号)
daemonize yes (后台自启)
bind 196.168.119.121(绑定当前机器 IP)
dir /usr/local/redis-cluster/9001/data/(数据文件存放位置)
pidfile /var/run/redis_9001.pid(pid 9001和port要对应)
cluster-enabled yes(启动集群模式)
cluster-config-file nodes-9001.conf(9001和port要对应)
cluster-node-timeout 15000
appendonly yes

5、同步9001实例到其他节点下,修改对应配置
\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.conf 文件配置,同上。

使用全局替换命令::%s/原字符串/新字符串/g

:%s/9001/9002/g

至此,6个节点已经基本搭建成功。

6、分别启动6个节点服务,测试是否启动成功

cd /usr/local/redis-cluster/bin

./redis-server  ../9001/redis.conf 

./redis-server  ../9002/redis.conf 

./redis-server  ../9003/redis.conf 

./redis-server  ../9004/redis.conf 

./redis-server  ../9005/redis.conf 

./redis-server  ../9006/redis.conf 

全部启动成功。。。。

7、安装集群所需软件

由于 Redis集群 官方需要使用 ruby 命令,所以我们需要安装 ruby的相关软件,使用以下命令安装:

yum install ruby

yum install rubygems

gem install redis

如果出现如下错误,需要升级Ruby

( 解决redis requires ruby version 2.3.0

参考:http://www.javashuo.com/article/p-wdbfpavd-gv.html

8、创建集群

注意点:

开放端口:iptables -A INPUT -ptcp --dport  9001-j ACCEPT

# requirepass 123456 redis.conf文件中的密码注释掉

/usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 127.0.0.1:9001 127.0.0.1:9002 127.0.0.1:9003 127.0.0.1:9004 127.0.0.1:9005 127.0.0.1:9006
  
###调用 ruby 命令来进行创建集群,--replicas 1   表示主从复制比例为 1:1,即一个主节点对应一个从节点。

启动成功。。。。

9、测试连接

10、redis集群操作

集群方式登陆: redis-cli -h 127.0.0.1-c -p 9001//-c说明以集群的方式登录 任意一个节点都可以创建key,或者查看key(演示) redis-trib.rb check 192.168.133.130:7000//检测集群状态 cluster nodes//列出节点 cluster info//查看集群信息 cluster meet ip port //添加节点 cluster forget node_id //移除某个节点 cluster replicate node_id//将当前节点设置为指定节点的从 cluster saveconfig//保存配置文件