【愚公系列】2022年05月 .NET架构班 055-分布式中间件 Redis集群的搭建
【摘要】 前言redis-cluster要求至少需要3个master才能组成一个集群,同时每个master至少需要有一个slave节点。各个节点之间保持TCP通信。当master发生了宕机,redis-cluster自动会将对应的slave节点提拔为master,来重新对外提供服务。redis-cluster功能 : 负载均衡,故障切换,主从复制 。redis-cluster特点:所有redis节点...
前言
redis-cluster要求至少需要3个master才能组成一个集群,同时每个master至少需要有一个slave节点。各个节点之间保持TCP通信。当master发生了宕机,redis-cluster自动会将对应的slave节点提拔为master,来重新对外提供服务。
redis-cluster功能 : 负载均衡,故障切换,主从复制 。
redis-cluster特点:
- 所有redis节点(包括主和从)彼此互联(两两通信),底层使用内部的二进制传输协议,优化传输速度;(所有功能特点的基础)。
- 集群中也有主从,也有高可用的逻辑,但是没有哨兵进程,整合到主节点的功能里了;集群中的事件被主节点(大部分主节点);通过主节点的过半选举实现哨兵以前的逻辑。
- 客户端与redis-cluster连接,无需关心分片的计算,客户端不在关心分片的计算逻辑,内部分发分布式数据(内部有分片计算逻辑),客户端将key交给redis节点后,集群内部判断key值的正确存储位置,转发存储。
- redis-cluster把所有的主节点对应到[0-16383]整数区间–槽道slot;各自的主节点维护一批槽道号(0-5000,5001-10000,10001-16383);在分片计算时,对key值做hash取模运算(就是取余,不在使用hashCode,CRC16);key值对应的取模运算结果,将会判断由哪个节点维护;将key–slot–node,如果我们想要迁移某个key值,必须将对应的slot一并迁移。
一、redis-cluster集群配置
1.在redis中创建6个配置文件
1.1 在redis.6380.conf文件中,添加内容
port 6380
bind 127.0.0.1
appendonly yes
appendfilename "appendonly.6380.aof"
cluster-enabled yes
cluster-config-file nodes.6380.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes
1.2 在redis.6381.conf文件中,添加内容
port 6381
bind 127.0.0.1
appendonly yes
appendfilename "appendonly.6381.aof"
cluster-enabled yes
cluster-config-file nodes.6381.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes
1.3 在redis.6382.conf文件中,添加内容
port 6382
bind 127.0.0.1
appendonly yes
appendfilename "appendonly.6382.aof"
cluster-enabled yes
cluster-config-file nodes.6382.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes
1.4 在redis.6383.conf文件中,添加内容
port 6383
bind 127.0.0.1
appendonly yes
appendfilename "appendonly.6383.aof"
cluster-enabled yes
cluster-config-file nodes.6383.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes
1.5 在redis.6384.conf文件中,添加内容
port 6384
bind 127.0.0.1
appendonly yes
appendfilename "appendonly.6384.aof"
cluster-enabled yes
cluster-config-file nodes.6380.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes
1.6 在redis.6385.conf文件中,添加内容
port 6385
bind 127.0.0.1
appendonly yes
appendfilename "appendonly.6385.aof"
cluster-enabled yes
cluster-config-file nodes.6385.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes
2.启动6个redis实例
2.1 启动 redis.6380.conf
redis-server.exe redis.6380.conf
2.2 启动 redis.6381.conf
redis-server.exe redis.6381.conf
2.3 启动 redis.6382.conf
redis-server.exe redis.6382.conf
2.4 启动 redis.6383.conf
redis-server.exe redis.6383.conf
2.5 启动 redis.6384.conf
redis-server.exe redis.6384.conf
2.6 启动 redis.6385.conf
redis-server.exe redis.6385.conf
二、redis-cluster主从角色分配
1.ruby环境安装
1.1 ruby环境下载:
http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.2.4-x64.exe
1.2 ruby安装,双击安装
2.redis-3.2.2.gem文件安装
2.1 redis-3.2.2.gem下载地址:
https://rubygems.org/gems/redis/versions/3.2.2
2.2 进入到Ruby22-x64目录中
2.3 通过gem命令文件安装
gem install –local D:\work\net\redis\redis-cluster\redis-3.2.2.gem
3.redis-trib.rb搭建redis-cluster主从
3.1 redis-trib.rb下载地址:
https://github.com/beebol/redis-trib.rb
3.2 redis-trib.rb使用
进入到redis-trib.rb目录中
通过cmd使用redis-trib.rb
3.3 redis-trib.rb开始搭建
ruby redis-trib.rb create –replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385
3.4 redis-trib.rb redis-cluster集群状态检查
ruby redis-trib.rb check 127.0.0.1:6380
3.4 .NET Core连接集群
//services.AddDistributedRedisCache("192.168.44.4:6379");
services.AddDistributedRedisCache("127.0.0.1:6370,127.0.0.1:6381,127.0.0.1:6382,127.0.0.1:6383,127.0.0.1:6384,127.0.0.1:6385");
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)