搭建redis分片集群

一、分片集集群架构

1、架构

分片集群需要的节点数量较多,一个最小的分片集群至少需要6个节点(3主,3从)。要保证集群的高可用,需要每个主节点都有至少一个从节点,也就是备份节点,所以redis集群至少需要6台服务器。如图:
在这里插入图片描述

2、分片集群功能

1)Redis 集群不支持单机版本的16个默认数据库,仅有0数据库,且select命令被禁用;

2)每个主节点下都可能有1个或多个从节点,这些从节点在网络分区或者发生故障时会尝试替代主节点,同时从节点也可用于支撑大规模的读操作;

3)主节点之间通过 ping 监测彼此健康状态;

4)客户端可以访问集群中任意节点(包括从节点),节点将会分析要操作的 key,找到对应哈希槽的节点,最终都会被转发到正确节点。一般情况下从节点会将客户端请求重定向到负责对应哈希槽的主节点。如果要实现大规模读,可以给从节点开启 READONLY;

5)key 空间被划分为16384个槽位(哈希槽),集群中的每个主节点占据一部分槽位数,跨slot的两个 key 可能不能做一些操作,比如:sdiff sunion;

6)key 映射到哈希操作的算法是 hash_slot = CRC16(16)mod 16384;
7)Cluster bus: 集群节点都通过TCP连接(TCP bus)和一个二进制协议(集群连接,cluster bus)建立通信(在原客户端访问端口之上加上1000),节点之间使用 gossip 协议来发布广播消息,通知配置变更;

8)通过分片集群,Redis 解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,而且也具有故障迁移(主从切换)的功能,实现了较为完善的高可用方案。

二、安装redis

1)下载安装包
wget  https://download.redis.io/releases/redis-6.2.4.tar.gz

2)解压
tar xf redis-6.2.4.tar.gz

3)创建软连接
mv redis-6.2.4 /usr/local/
cd /usr/local/
ln -s redis-6.2.4/ redis

4)初始化
make &&  make install
echo 'export PATH=/usr/local/redis/bin:$PATH'  >>/etc/profile
source /etc/profile

5)创建数据目录
 mkdir -p /data/300{1..6}/data
 mkdir -p /data/300{1..6}/conf
 mkdir -p /data/300{1..6}/log

6)创建配置文件

cat >/data/3001/conf/redis.cnf<<EOF
#端口
port 6379

# 开启集群功能
cluster-enabled yes

# 集群的配置文件名称,不需要我们创建,由redis自己维护
cluster-config-file /data/6379/conf/cluster.cnf

# 节点心跳失败的超时时间
cluster-node-timeout 5000

# 持久化文件存放目录
dir /data/6379/data

# 绑定地址
bind 0.0.0.0

# 让redis后台运行
daemonize yes

# 注册的实例ip 本机公网IP
replica-announce-ip 10.10.180.107

# 保护模式
protected-mode no

# 数据库数量
databases 1

# 日志
logfile /data/6379/log/run.log

EOF


7)拷贝配置文件
cd /data/
echo 3001/conf 3002/conf 3003/conf 3004/conf 3005/conf 3006/conf | xargs -t -n 1 cp 3001/conf/redis.cnf

8)修改配置文件
printf '%s\n' 3001 3002 3003 3004 3005 3006 | xargs -I{} -t sed -i 's/6379/{}/g' {}/conf/redis.cnf

9)启动redis

redis-server /data/3001/conf/redis.cnf
redis-server /data/3002/conf/redis.cnf
redis-server /data/3003/conf/redis.cnf
redis-server /data/3004/conf/redis.cnf
redis-server /data/3005/conf/redis.cnf
redis-server /data/3006/conf/redis.cnf

10)创建redis 集群命令

redis-cli --cluster create 127.0.0.1:3001 127.0.0.1:3002 \
127.0.0.1:3003 127.0.0.1:3004 127.0.0.1:3005 127.0.0.1:3006 \
--cluster-replicas 1

redis-cli --cluster 或者 ./redis-trib.rb	代表集群操作命令;
create:									 代表是创建集群;
–replicas 1或者–cluster-replicas 1 		指定集群中每个master的副本个数为1,此时节点总数 ÷ (replicas + 1)得到的就是master的数量。因此节点列表中的前n个就是master,其它节点都是slave节点,随机分配到不同master ;
redis-cli --cluster help 				 命令进行集群命令的查看;

11)查看集群状态

redis-cli -p 7001 cluster nodes
2、添加节点
mkdir -p /data/300{7..8}/conf
mkdir -p /data/300{7..8}/log
mkdir -p /data/300{7..8}/data
cd /data/
echo 3007/conf 3008/conf | xargs -t -n 1 cp 3001/conf/redis.cnf
printf '%s\n' 3007 3008 | xargs -I{} -t sed -i 's/3001/{}/g' {}/conf/redis.cnf
redis-server /data/3007/conf/redis.cnf
redis-server /data/3008/conf/redis.cnf

添加节点
redis-cli --cluster add-node 127.0.0.1:3007 127.0.0.1:3001

分配槽位参考如下截图
redis-cli --cluster reshard 101.34.23.80:7001

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了搭建Redis分片集群并实现Spring Boot对集群访问,我们需要按照以下步骤进行操作。 1. 安装Redis:首先需要在每个用作Redis分片节点上安装Redis。可以通过Redis官方网站下载并安装Redis。 2. 配置Redis分片集群:在每个Redis节点的配置文件(redis.conf)中进行以下配置: - 指定端口号:每个节点都应该有一个唯一的端口号。 - 指定集群模式:将cluster-enabled配置为yes,启用Redis集群模式。 - 指定节点IP地址和端口号:使用cluster-config-file配置项指定一个文件保存节点信息。 3. 创建Redis分片集群:在任意一个节点上使用redis-cli命令行工具创建Redis分片集群,并将其他节点加入集群。 - 打开终端并连接到Redis节点redis-cli -h <节点IP地址> -p <节点端口号> - 使用cluster meet命令将其他节点添加到集群中:cluster meet <节点IP地址> <节点端口号> 4. 在Spring Boot应用程序中配置Redis集群:打开Spring Boot应用程序的配置文件,并按照以下配置进行配置: - 指定Redis集群节点的IP地址和端口号列表:spring.redis.cluster.nodes=<节点1IP地址:端口号>,<节点2IP地址:端口号>,... - 设置Redis连接超时时间:spring.redis.timeout=<连接超时时间> 5. 在Spring Boot应用程序中使用Redis集群:通过@Autowired注释将RedisTemplate或StringRedisTemplate注入到Spring Boot组件中,并使用该组件进行对集群的操作。 通过以上步骤,我们可以搭建Redis分片集群并实现Spring Boot对集群访问。在Spring Boot应用程序中,将配置Redis集群节点信息,并通过Spring Boot提供的Redis组件进行对集群的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值