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)
参考:https://blog.csdn.net/qq_41565459/article/details/81779480
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//保存配置文件