通讯设计
集群中的每个节点会在一定的时期给其它节点发送 ping 消息,其他节点返回 pong 作为响应 。
经过一段时间后所有节点都会知道集群全部节点的槽信息 。如下图有三个节点,那么就会把 16384 个哈希槽分成三份 。
分别为:
- 0-5500
- 5501-11000
- 11001-16384
文章插图
当用户发起了一个 key 的请求,集群是如何处理请求的呢?上图的黑框代表这集群所有节点的槽信息,里边还有很多其它信息 。
如图所示,用户发起请求 key,Redis 接收后计算 key 的槽位置,在根据槽位置找出对应的节点 。
如果访问的槽就在节点本身,那么就会直接返回 key 对应数据 。否则会回复 moved 重定向错误,并且给客户端返回正确的节点 。
然后重发 key 指令,如下图:
文章插图
配置集群
①修改配置文件
如下图:
文章插图
只需要注意圈中的配置信息即可:
- cluster-enabled yes:开启集群模式 。
- cluster-config-file nodes-6379.conf:集群配置文件 。
- clustre-node-timeout 10000:节点超时时间,这里为了方便测试设置为 10s 。
文章插图
②构建 6 个节点的配置文件并全启动
给大家提供一个命令可以很方便的替换文件:
sed 's/6379/6380/g' 6379-redis.conf > 6380-redis.conf
按照这样的方式创建出来 6 个不同端口的配置文件:文章插图
随便打开一个配置文件查看,检测是否替换成功:
文章插图
为了查看日志信息方便,全部使用前台启动 。并且查看服务是否都正常启动,执行命令:
ps -ef | grep redis
可以看到启动后多了个 cluster 标识,代表着都是集群的一个节点 。文章插图
所有节点启动完成,集群启动的指令需要基于 Ruby(本人使用 Redis 版本为 4.0),接下来一起安装 。
③安装 Ruby
执行命令:
wget https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.1.tar.gz
解压(根据自己下载的版本来解压):tar -xvzf ruby-2.7.1.tar.gz
安装:./configure | make | make install
这三个指令一气呵成,查看 ruby 和 gem 版本:ruby -v 。文章插图
④启动集群
集群的执行命令在 /usr/local/redis/src/redis-trib.rb,注意如果需要直接使用 redis-trib.rb 命令,需要 ln 到 bin 目录下,否则就必须使用 ./redis-trib.rb 的方式 。
如果按照步骤走,这里会出现一个错误,如下图:
文章插图
执行 gem install redis,很不幸的是在这里也会出现错误:
文章插图
随后需要安装 yum install zlib-devel 和 yum install openssl-devel 。
安装完成后,在 /ruby-2.7.1/ext/openssl 和 /ruby-2.7.1/ext/zlib 分别执行 ruby extconf.rb,并且执行 make | make install 。
然后再执行 gem install redis 就 OK:
文章插图
这时再回头来执行:
./redis-trib.rb create --replicas 1 127.0.0.1:6379 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
文章插图
信息解读:创建集群,并且给 6 个节点分配哈希槽,后三个节点配置为前三个节点的从节点 。
文章插图
显示每个节点的哈希槽信息和节点 ID,最后一步需要输入 yes:
推荐阅读
- 全面修复Windows图标显示错乱
- 茶的两种相反作用,茶的作用是有两面性
- 墙面潮湿起皮脱落怎么处理?
- 喝粤式早茶,手敲桌面3下啥意思?弄懂6大规矩,服务员:这是老广
- 短发|护肤品排行榜前十名 种草一些好用不贵的护肤洗面奶
- 淘宝基础优化怎么做 淘宝基础优化指的是哪些方面
- 直通车达摩盘是什么 达摩盘入口
- 这几种常见的“分布式锁”写法,搞懂再也不怕面试官,安排
- 泉州|面试过程中求职男子口吐芬芳,面试官直接把他的简历挂到朋友圈!
- 橱柜台面什么材质好呢