Redis集群是Redis官方在3.0版本推出的一套分布式存储方案,完全去中心化,由多个节点组成,所有节点彼此互联。Redis客户端可以直接连接任何一节点获取集群中的键值对,不需要中间代理。如果该节点不存在用户所指定的键值,其内部会自动把客户端重定向到键值所在的节点。
Redis集群是一个网状结构,每个节点都通过TCP连接跟其他每个节点连接。在一个有N个节点的集群中,每个节点都有N-1个流出的TCP连接,和N-1个流入的连接,这些TCP连接会永久保持。
Redis集群主要具备以下两个功能:
数据分区:Redis集群会将用户数据分散保存至各个节点中,突破单机Redis内存最大存储容量。集群引入了哈希槽的概念,搭建完成后会生成16384个哈希槽,同时会根据节点的数量大致均等的将16384个哈希槽映射到不同的节点上。
数据冗余:Redis集群支持主从复制和故障恢复。集群使用了主从复制模型,每个主节点应至少有一个从节点。假设某个主节点故障,其所有子节点会广播一个数据包给集群里的其他主节点来请求选票,一旦某个从节点收到了大多数主节点的回应,那么它就赢得了选举,被推选为主节点,负责处理之前旧的主节点负责的哈希槽。
文章目录
一: 将安装包上传到服务器然后解压(以6.2.6版本为例)
tar -xvf redis-6.2.6.tar.gz
二:编译redis
make
安装编译后的redis代码到指定目录
make install PREFIX=/home/redis #/home/redis可以自己指定
三:创建redis各实例目录
mkdir -p /home/redis/cluster
cd /home/redis/cluster
mkdir conf data log pig
mkdir -p data/redis-6379 data/redis-6380
四:修改配置文件(redis.conf)
复制 redis.conf到 cluster/conf分别命名为redis-6379.conf、redis-6380.conf
修改conf配置:
1 # redis后台运行
2 daemonize yes
3 # 绑定的主机端口
4 bind 主机外网ip地址
5 # 数据存放目录
6 dir /home/redis/cluster/data/redis‐${自定义}
7 # 进程文件
8 pidfile /var/run/redis‐cluster/${自定义}.pid
9 # 日志文件
10 logfile /home/redis/cluster/log/${自定义}.log
11 # 端口号
12 port 6379
13 # 开启集群模式,把注释#去掉
14 cluster‐enabled yes
15 # 集群的配置,配置文件首次启动自动生成
16 cluster‐config‐file /home/redis/cluster/conf/${自定义}.conf
17 # 请求超时,设置10秒
18 cluster‐node‐timeout 10000
19 # aof日志开启,有需要就开启,它会每次写操作都记录一条日志
20 appendonly yes
21 关闭rdb, rdb开启,有需要就开启
# save 900 1
# save 300 10
# save 60 10000
22 将notify-keyspace-events “” 设置为如下内容
notify-keyspace-events “Ex”
23 cluster-require-full-coverage默认为yes,一个节点挂掉后会导致整个集群都不可用,需要将配置改为no
cluster-require-full-coverage no
五:启动节点
在每台主机上执行
/home/redis/bin/redis-server /opt/redis/cluster/conf/redis-6381.conf
/home/redis/bin/redis-server /opt/redis/cluster/conf/redis-6382.conf
端口需要开启:6379 6380 16379 16380
开放端口命令:firewall-cmd --add-port=16379/tcp --permanent
六:启动集群(最少六个节点)
这里的ip以及端口填写实际部署的信息
/home/redis/bin/redis-cli --cluster create ip:6381 ip:6382 ip:6383 ip:6384 ip:6385 ip:6386 --cluster-replicas 1
出现如下类似信息,表示启动成功
>>> Performing hash slots allocation on 6 nodes…
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Can I set the above configuration? (type ‘yes’ to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
[OK] All nodes agree about slots configuration.
>>> Check for open slots…
>>> Check slots coverage…
[OK] All 16384 slots covered.
七:redis设置密码
1、密码设置(推荐)
方式一:修改所有Redis集群中的redis.conf文件加入:
masterauth 密码
requirepass 密码
说明:这种方式需要重新启动各节点
方式二:进入各个实例进行设置:
./redis-cli -c -p 7001 -h 10.10.10.1
config set masterauth 密码
config set requirepass 密码
auth 用户
CONFIG REWRITE
之后分别使用./redis-cli -c -p 7001,./redis-cli -c -p 7002……命令给各节点设置上密码。
本文详细介绍了如何在6.2.6版本的Redis中搭建集群,包括上传安装包、编译、配置文件修改、启动节点、创建集群、设置密码等步骤,重点强调了数据分区、主从复制和故障恢复机制。

3193

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



