目录
Redis集群(Redis Cluster)是Redis官方提供的分布式部署方案,通过将数据自动分片(hash slot)到多个主节点实现横向扩展,每个主节点可配备从节点实现故障自动转移;它采用去中心化架构,所有节点通过Gossip协议相互通信,客户端可直连任意节点进行路由,并且支持在部分节点故障或网络分区时继续提供服务,是应对海量数据和高并发场景的官方原生分布式解决方案。
Redis集群搭建
首先在/usr/local/src/redis 下创建集群目录和各个节点的日志与数据目录
mkdir -p ./redis-cluster/700{1..6}/{logs,data}
然后赋予权限
chmod 777 -R ./redis-cluster
Redis Cluster 节点的核心配置是 cluster-enabled yes(开启集群模式),下面用脚本批量生成 7001~7006 集群节点的配置文件,可一次性复制到命令行中运行,也可以编写到 redis.conf 中:
# 定义基础目录
BASE_DIR="/usr/local/src/redis/redis-cluster"
mkdir -p ${BASE_DIR}/700{1..6}/{logs,data}
# IP获取:只取第一个非127.0.0.1的IPv4地址
IP=`ip a|grep 'inet' |grep -v '127.0.0.1'|grep -v 'inet6'|awk '{print $2}'|awk -F'/' '{print $1}'|head -n1`
for i in {1..6}
do
cat > ${BASE_DIR}/700${i}/redis.conf <<EOF
daemonize yes
port 700${i}
cluster-enabled yes
cluster-config-file cluster-nodes-700${i}.conf
cluster-node-timeout 15000
appendonly yes
bind ${IP}
protected-mode no
dbfilename dump-700${i}.rdb
logfile ${BASE_DIR}/700${i}/logs/redis.log
pidfile ${BASE_DIR}/700${i}/data/redis.pid
dir ${BASE_DIR}/700${i}/data
appendfilename "appendonly-700${i}.aof"
EOF
done
进入 /usr/local/src/redis/redis-cluster 目录下启动所有节点
for i in {1..6}; do
/usr/local/src/redis/redis-5.0.4/src/redis-server ./700${i}/redis.conf
done
检查启动状态

执行初始化集群命令
我的redis-cli放在/usr/local/src/6379/bin/目录下
/usr/local/src/6379/bin/redis-cli --cluster create 172.18.23.31:7001 172.18.23.31:7002 172.18.23.31:7003 172.18.23.31:7004 172.18.23.31:7005 172.18.23.31:7006 --cluster-replicas 1
/usr/local/src/redis/redis-5.0.4/src/redis-cli:Redis 客户端程序的绝对路径,是执行集群管理的入口;
–cluster:表示以集群管理模式运行 redis-cli,而非普通的连接模式;
create:–cluster模式下的核心子命令,含义是创建一个新的 Redis 集群;
172.25.49.72:7001 … 172.25.49.72:7006:指定加入集群的所有节点,必须是已启动且配置了cluster-enabled yes 的节点;
–cluster-replicas 1:用于指定每个主节点对应的从节点数量。
需要注意的是从前面的 ps 命令输出可以看到,Redis 节点绑定的是内网 IP 172.25.49.72,而不是默认的 127.0.0.1,这意味着 Redis 服务只监听在这个内网 IP 上,所以用 127.0.0.1 去连接会被拒绝,需要使用绑定的是内网 IP 地址。
验证主从关系是否建立,使用集群模式连接7001节点:
/usr/local/src/6379/bin/redis-cli -c -h 172.18.23.31 -p 7001
cluster nodes 用于查询集群结点信息
cluster info 用于查询集群状态信息


1177

被折叠的 条评论
为什么被折叠?



