环境介绍 系统:rocky9.2 硬件配置:2核2G 80G硬盘 IP地址:172.16.5.101-172.16.5.106 已做免密认证 1.0批量安装redis [root@redis-1 ~]# for i in {1..6}; do ssh -q 172.16.5.10$i yum install redis -y; done 返回结果: 上次元数据过期检查:2:28:55 前,执行于 2023年10月18日 星期三 00时33分20秒。 依赖关系解决。 ================================================================================ 软件包 架构 版本 仓库 大小 ================================================================================ 安装: redis x86_64 6.2.7-1.el9 appstream 1.3 M 事务概要 ================================================================================ 安装 1 软件包 总下载:1.3 M 安装大小:4.7 M 下载软件包: redis-6.2.7-1.el9.x86_64.rpm 1.6 MB/s | 1.3 MB 00:00 -------------------------------------------------------------------------------- 总计 633 kB/s | 1.3 MB 00:02 运行事务检查 事务检查成功。 运行事务测试 事务测试成功。 运行事务 准备中 : 1/1 运行脚本: redis-6.2.7-1.el9.x86_64 1/1 安装 : redis-6.2.7-1.el9.x86_64 1/1 运行脚本: redis-6.2.7-1.el9.x86_64 1/1 验证 : redis-6.2.7-1.el9.x86_64 1/1 已安装: redis-6.2.7-1.el9.x86_64 完毕! 上次元数据过期检查:2:28:59 前,执行于 2023年10月18日 星期三 00时33分20秒。 依赖关系解决。 ================================================================================ 软件包 架构 版本 仓库 大小 ================================================================================ 安装: redis x86_64 6.2.7-1.el9 appstream 1.3 M 事务概要 ================================================================================ 安装 1 软件包 总下载:1.3 M 安装大小:4.7 M 下载软件包: redis-6.2.7-1.el9.x86_64.rpm 1.7 MB/s | 1.3 MB 00:00 -------------------------------------------------------------------------------- 总计 710 kB/s | 1.3 MB 00:01 运行事务检查 事务检查成功。 运行事务测试 事务测试成功。 运行事务 准备中 : 1/1 运行脚本: redis-6.2.7-1.el9.x86_64 1/1 安装 : redis-6.2.7-1.el9.x86_64 1/1 运行脚本: redis-6.2.7-1.el9.x86_64 1/1 验证 : redis-6.2.7-1.el9.x86_64 1/1 已安装: redis-6.2.7-1.el9.x86_64 完毕! 上次元数据过期检查:2:29:02 前,执行于 2023年10月18日 星期三 00时33分20秒。 依赖关系解决。 ================================================================================ 软件包 架构 版本 仓库 大小 ================================================================================ 安装: redis x86_64 6.2.7-1.el9 appstream 1.3 M 事务概要 ================================================================================ 安装 1 软件包 总下载:1.3 M 安装大小:4.7 M 下载软件包: redis-6.2.7-1.el9.x86_64.rpm 1.8 MB/s | 1.3 MB 00:00 -------------------------------------------------------------------------------- 总计 713 kB/s | 1.3 MB 00:01 运行事务检查 事务检查成功。 运行事务测试 事务测试成功。 运行事务 准备中 : 1/1 运行脚本: redis-6.2.7-1.el9.x86_64 1/1 安装 : redis-6.2.7-1.el9.x86_64 1/1 运行脚本: redis-6.2.7-1.el9.x86_64 1/1 验证 : redis-6.2.7-1.el9.x86_64 1/1 已安装: redis-6.2.7-1.el9.x86_64 完毕! 上次元数据过期检查:2:29:06 前,执行于 2023年10月18日 星期三 00时33分20秒。 依赖关系解决。 ================================================================================ 软件包 架构 版本 仓库 大小 ================================================================================ 安装: redis x86_64 6.2.7-1.el9 appstream 1.3 M 事务概要 ================================================================================ 安装 1 软件包 总下载:1.3 M 安装大小:4.7 M 下载软件包: redis-6.2.7-1.el9.x86_64.rpm 1.7 MB/s | 1.3 MB 00:00 -------------------------------------------------------------------------------- 总计 267 kB/s | 1.3 MB 00:04 运行事务检查 事务检查成功。 运行事务测试 事务测试成功。 运行事务 准备中 : 1/1 运行脚本: redis-6.2.7-1.el9.x86_64 1/1 安装 : redis-6.2.7-1.el9.x86_64 1/1 运行脚本: redis-6.2.7-1.el9.x86_64 1/1 验证 : redis-6.2.7-1.el9.x86_64 1/1 已安装: redis-6.2.7-1.el9.x86_64 完毕! 上次元数据过期检查:2:29:12 前,执行于 2023年10月18日 星期三 00时33分20秒。 依赖关系解决。 ================================================================================ 软件包 架构 版本 仓库 大小 ================================================================================ 安装: redis x86_64 6.2.7-1.el9 appstream 1.3 M 事务概要 ================================================================================ 安装 1 软件包 总下载:1.3 M 安装大小:4.7 M 下载软件包: redis-6.2.7-1.el9.x86_64.rpm 1.7 MB/s | 1.3 MB 00:00 -------------------------------------------------------------------------------- 总计 269 kB/s | 1.3 MB 00:04 运行事务检查 事务检查成功。 运行事务测试 事务测试成功。 运行事务 准备中 : 1/1 运行脚本: redis-6.2.7-1.el9.x86_64 1/1 安装 : redis-6.2.7-1.el9.x86_64 1/1 运行脚本: redis-6.2.7-1.el9.x86_64 1/1 验证 : redis-6.2.7-1.el9.x86_64 1/1 已安装: redis-6.2.7-1.el9.x86_64 完毕! 上次元数据过期检查:2:29:19 前,执行于 2023年10月18日 星期三 00时33分20秒。 依赖关系解决。 ================================================================================ 软件包 架构 版本 仓库 大小 ================================================================================ 安装: redis x86_64 6.2.7-1.el9 appstream 1.3 M 事务概要 ================================================================================ 安装 1 软件包 总下载:1.3 M 安装大小:4.7 M 下载软件包: redis-6.2.7-1.el9.x86_64.rpm 347 kB/s | 1.3 MB 00:03 -------------------------------------------------------------------------------- 总计 269 kB/s | 1.3 MB 00:04 运行事务检查 事务检查成功。 运行事务测试 事务测试成功。 运行事务 准备中 : 1/1 运行脚本: redis-6.2.7-1.el9.x86_64 1/1 安装 : redis-6.2.7-1.el9.x86_64 1/1 运行脚本: redis-6.2.7-1.el9.x86_64 1/1 验证 : redis-6.2.7-1.el9.x86_64 1/1 已安装: redis-6.2.7-1.el9.x86_64 完毕! 2.0修改默认的配置文件 2.1修改默认的监听地址,默认是127.0.0.1修改成0.0.0.0 [root@redis-1 ~]# vim /etc/redis/redis.conf 原内容 #bind 0.0.0.0 -::1 改后 bind 0.0.0.0 2.2修改cluster-enabled 选项的值为 yes 表示将 Redis 实例设置成集群节点而不是单机服务器 默认所有节点都是主节点 [root@redis-1 ~]# vim /etc/redis/redis.conf 原内容 # cluster-enabled yes 改后 cluster-enabled yes [root@redis-1 ~]# vim /etc/redis/redis.conf 默认所有节点都是主节点 原内容 # cluster-config-file nodes-6379.conf 改后 cluster-config-file cluster_info_6379.conf 2.3拷贝redis配置文件到其他主机上面 [root@redis-1 ~]# for i in {1..6}; do scp -q /etc/redis/redis.conf 172.16.5.10$i:/etc/redis/; done 2.4启动所有的服务,并设置为开机自启动 [root@redis-1 ~]# for i in {1..6}; do ssh -q 172.16.5.10$i systemctl enable redis --now; done 返回结果: Created symlink /etc/systemd/system/multi-user.target.wants/redis.service → /usr/lib/systemd/system/redis.service. Created symlink /etc/systemd/system/multi-user.target.wants/redis.service → /usr/lib/systemd/system/redis.service. Created symlink /etc/systemd/system/multi-user.target.wants/redis.service → /usr/lib/systemd/system/redis.service. Created symlink /etc/systemd/system/multi-user.target.wants/redis.service → /usr/lib/systemd/system/redis.service. Created symlink /etc/systemd/system/multi-user.target.wants/redis.service → /usr/lib/systemd/system/redis.service. 2.5查看所有节点是不是都是master节点 [root@redis-1 ~]# for i in {1..6}; do ssh -q 172.16.5.10$i cat /var/lib/redis/cluster_info_6379.conf ; done 返回结果: 0556318499e4cd701d4bfbd9cd70fc40fd92281b :0@0 myself,master - 0 0 0 connected vars currentEpoch 0 lastVoteEpoch 0 88afd0f6125f64b0165b63ed65a6ca6596aebc2a :0@0 myself,master - 0 0 0 connected vars currentEpoch 0 lastVoteEpoch 0 bc65ceb59df276b878fc13eaccd05af3fa21e73c :0@0 myself,master - 0 0 0 connected vars currentEpoch 0 lastVoteEpoch 0 5c591b2c62244cd0183afa78f22d1ccc8bcfc794 :0@0 myself,master - 0 0 0 connected vars currentEpoch 0 lastVoteEpoch 0 24b4608c219e77187b758fc5a2bd9e85614b95ed :0@0 myself,master - 0 0 0 connected vars currentEpoch 0 lastVoteEpoch 0 8b45e6bb962ab31ecc92cef3f0d6c5e8327eda8d :0@0 myself,master - 0 0 0 connected vars currentEpoch 0 lastVoteEpoch 0 2.6创建集群命令帮助 [root@redis-1 ~]# redis-cli --cluster help create 创建结群 check 检查集群 info 查看集群的详细信息 fix 集群修复 reshard 分片 rebalance 让集群一比一存储,雨露均沾 add-node 添加节点 del-node 删除节点 2.7创建一主一从,也就是6台主机里面3台是主的3台是从的 [root@redis-1 ~]# echo yes | redis-cli --cluster create 172.16.5.101:6379 172.16.5.102:6379 172.16.5.103:6379 172.16.5.104:6379 172.16.5.105:6379 172.16.5.106:6379 --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 Adding replica 172.16.5.105:6379 to 172.16.5.101:6379 Adding replica 172.16.5.106:6379 to 172.16.5.102:6379 Adding replica 172.16.5.104:6379 to 172.16.5.103:6379 M: 0556318499e4cd701d4bfbd9cd70fc40fd92281b 172.16.5.101:6379 slots:[0-5460] (5461 slots) master M: 88afd0f6125f64b0165b63ed65a6ca6596aebc2a 172.16.5.102:6379 slots:[5461-10922] (5462 slots) master M: bc65ceb59df276b878fc13eaccd05af3fa21e73c 172.16.5.103:6379 slots:[10923-16383] (5461 slots) master S: 5c591b2c62244cd0183afa78f22d1ccc8bcfc794 172.16.5.104:6379 replicates bc65ceb59df276b878fc13eaccd05af3fa21e73c S: 24b4608c219e77187b758fc5a2bd9e85614b95ed 172.16.5.105:6379 replicates 0556318499e4cd701d4bfbd9cd70fc40fd92281b S: 8b45e6bb962ab31ecc92cef3f0d6c5e8327eda8d 172.16.5.106:6379 replicates 88afd0f6125f64b0165b63ed65a6ca6596aebc2a Can I set the above configuration? (type 'yes' to accept): >>> 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 . >>> Performing Cluster Check (using node 172.16.5.101:6379) M: 0556318499e4cd701d4bfbd9cd70fc40fd92281b 172.16.5.101:6379 slots:[0-5460] (5461 slots) master 1 additional replica(s) S: 24b4608c219e77187b758fc5a2bd9e85614b95ed 172.16.5.105:6379 slots: (0 slots) slave replicates 0556318499e4cd701d4bfbd9cd70fc40fd92281b M: 88afd0f6125f64b0165b63ed65a6ca6596aebc2a 172.16.5.102:6379 slots:[5461-10922] (5462 slots) master 1 additional replica(s) M: bc65ceb59df276b878fc13eaccd05af3fa21e73c 172.16.5.103:6379 slots:[10923-16383] (5461 slots) master 1 additional replica(s) S: 5c591b2c62244cd0183afa78f22d1ccc8bcfc794 172.16.5.104:6379 slots: (0 slots) slave replicates bc65ceb59df276b878fc13eaccd05af3fa21e73c S: 8b45e6bb962ab31ecc92cef3f0d6c5e8327eda8d 172.16.5.106:6379 slots: (0 slots) slave replicates 88afd0f6125f64b0165b63ed65a6ca6596aebc2a [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. 解释: Master[0] -> Slots 0 - 5460 0-5460存到第一个master节点 Master[1] -> Slots 5461 - 10922 5461-10922存到第二个master节点 Master[2] -> Slots 10923 - 16383 10923-16383存到三个master节点 Adding replica 172.16.5.105:6379 to 172.16.5.101:6379 172.16.5.105为主master 172.16.5.101为slave Adding replica 172.16.5.106:6379 to 172.16.5.102:6379 172.16.5.106为master 172.16.5.105为slave Adding replica 172.16.5.104:6379 to 172.16.5.103:6379 172.16.5.104为master 172.16.5.103为slave 2.8查看集群详细信息。集群中的任何一个节点都可以 [root@redis-1 ~]# redis-cli --cluster info 172.16.5.101:6379 172.16.5.101:6379 (05563184...) -> 0 keys | 5461 slots | 1 slaves. 172.16.5.102:6379 (88afd0f6...) -> 0 keys | 5462 slots | 1 slaves. 172.16.5.103:6379 (bc65ceb5...) -> 0 keys | 5461 slots | 1 slaves. [OK] 0 keys in 3 masters. 0.00 keys per slot on average. 2.9查看集群状态信息 [root@redis-1 ~]# redis-cli --cluster check 172.16.5.101:6379 返回结果: 172.16.5.101:6379 (05563184...) -> 0 keys | 5461 slots | 1 slaves. 172.16.5.102:6379 (88afd0f6...) -> 0 keys | 5462 slots | 1 slaves. 172.16.5.103:6379 (bc65ceb5...) -> 0 keys | 5461 slots | 1 slaves. [OK] 0 keys in 3 masters. 0.00 keys per slot on average. >>> Performing Cluster Check (using node 172.16.5.101:6379) M: 0556318499e4cd701d4bfbd9cd70fc40fd92281b 172.16.5.101:6379 slots:[0-5460] (5461 slots) master 1 additional replica(s) S: 24b4608c219e77187b758fc5a2bd9e85614b95ed 172.16.5.105:6379 slots: (0 slots) slave replicates 0556318499e4cd701d4bfbd9cd70fc40fd92281b M: 88afd0f6125f64b0165b63ed65a6ca6596aebc2a 172.16.5.102:6379 slots:[5461-10922] (5462 slots) master 1 additional replica(s) M: bc65ceb59df276b878fc13eaccd05af3fa21e73c 172.16.5.103:6379 slots:[10923-16383] (5461 slots) master 1 additional replica(s) S: 5c591b2c62244cd0183afa78f22d1ccc8bcfc794 172.16.5.104:6379 slots: (0 slots) slave replicates bc65ceb59df276b878fc13eaccd05af3fa21e73c S: 8b45e6bb962ab31ecc92cef3f0d6c5e8327eda8d 172.16.5.106:6379 slots: (0 slots) slave replicates 88afd0f6125f64b0165b63ed65a6ca6596aebc2a [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. 2.10查看集群状态是否为ok,如果为ok说明服务正常启动 [root@redis-1 ~]# redis-cli -c -h 172.16.5.102 -p 6379 CLUSTER INFO |grep cluster_state cluster_state:ok 2.11查看每秒的读写请求数 [root@redis-1 ~]# redis-cli -c -h 172.16.5.102 -p 6379 info | grep instantaneous_ops_per_sec: instantaneous_ops_per_sec:0 3.0写入key测试 3.1单条数据插入 [root@redis-1 ~]# echo 'hello_word' |redis-cli -c -p 6379 -h 172.16.5.105 -x set mykey OK 3.2查看数据是否写入成功 [root@redis-1 ~]# redis-cli -c -p 6379 -h 172.16.5.105 get mykey "hello_word\n" 3.3查看刚才写入的key写到哪台服务器上面去了 [root@redis-1 ~]# redis-cli --cluster info 172.16.5.105:6379 172.16.5.101:6379 (05563184...) -> 0 keys | 5461 slots | 1 slaves. 172.16.5.103:6379 (bc65ceb5...) -> 1 keys | 5461 slots | 1 slaves. 172.16.5.102:6379 (88afd0f6...) -> 0 keys | 5462 slots | 1 slaves. [OK] 1 keys in 3 masters. 0.00 keys per slot on average. 解释: 172.16.5.103:6379 (bc65ceb5...) -> 1 keys | 5461 slots | 1 slaves. 这里可以看到,我往105写入的key,写到到103上面去了 3.3写入一万条数据,做测试 [root@redis-1 ~]# for i in `seq 1 10000`; do echo "helo_word_$i" | redis-cli -c -p 6379 -h 172.16.5.105 -x set "demo_$i"; done 查看数据分布情况 [root@redis-1 ~]# redis-cli --cluster info 172.16.5.105:6379 172.16.5.101:6379 (05563184...) -> 3346 keys | 5461 slots | 1 slaves. 172.16.5.103:6379 (bc65ceb5...) -> 3333 keys | 5461 slots | 1 slaves. 172.16.5.102:6379 (88afd0f6...) -> 3322 keys | 5462 slots | 1 slaves. [OK] 10001 keys in 3 masters. 0.61 keys per slot on average.